diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000000..e234e9516c5e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +# Ignore node_modules from the build context +node_modules + +# Ignore logs and temporary files +*.log +*.tmp +.DS_Store + +# Ignore Git files and metadata +.gitignore + +# Ignore IDE and editor config files +.vscode +.idea +*.swp + +# Ignore build artifacts from the host +dist +build \ No newline at end of file diff --git a/.env.example b/.env.example index 7fef34a76fda..6f714455593c 100644 --- a/.env.example +++ b/.env.example @@ -6,13 +6,10 @@ CACHE_STORE=database # Defaults to database. Other available cache store: redis and filesystem REDIS_URL= # Redis URL - could be a local redis instance or cloud hosted redis. Also support rediss:// URLs PGLITE_DATA_DIR= #../pgLite/ if selecting a directory --- or memory:// if selecting in memory -REDIS_URL= # Redis URL - could be a local redis instance or cloud hosted redis. Also support rediss:// URLs -PGLITE_DATA_DIR= #../pgLite/ if selecting a directory --- or memory:// if selecting in memory # Eliza Port Config SERVER_PORT=3000 VITE_SERVER_PORT=${SERVER_PORT} -VITE_SERVER_PORT=${SERVER_PORT} # Supabase Configuration SUPABASE_URL= @@ -21,9 +18,6 @@ SUPABASE_ANON_KEY= # Comma separated list of remote character urls (optional) REMOTE_CHARACTER_URLS= -# Comma separated list of remote character urls (optional) -REMOTE_CHARACTER_URLS= - ############################### #### Client Configurations #### ############################### @@ -32,8 +26,6 @@ REMOTE_CHARACTER_URLS= DISCORD_APPLICATION_ID= DISCORD_API_TOKEN= # Bot token DISCORD_VOICE_CHANNEL_ID= # The ID of the voice channel the bot should join (optional) -DISCORD_API_TOKEN= # Bot token -DISCORD_VOICE_CHANNEL_ID= # The ID of the voice channel the bot should join (optional) # Farcaster Neynar Configuration FARCASTER_FID= # The FID associated with the account your are sending casts from @@ -41,11 +33,6 @@ FARCASTER_NEYNAR_API_KEY= # Neynar API key: https://neynar.com/ FARCASTER_NEYNAR_SIGNER_UUID= # Signer for the account you are sending casts from. Create a signer here: https://dev.neynar.com/app FARCASTER_DRY_RUN=false # Set to true if you want to run the bot without actually publishing casts FARCASTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for farcaster interactions (replies and mentions) -FARCASTER_FID= # The FID associated with the account your are sending casts from -FARCASTER_NEYNAR_API_KEY= # Neynar API key: https://neynar.com/ -FARCASTER_NEYNAR_SIGNER_UUID= # Signer for the account you are sending casts from. Create a signer here: https://dev.neynar.com/app -FARCASTER_DRY_RUN=false # Set to true if you want to run the bot without actually publishing casts -FARCASTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for farcaster interactions (replies and mentions) # Telegram Configuration TELEGRAM_BOT_TOKEN= @@ -55,45 +42,26 @@ TWITTER_DRY_RUN=false TWITTER_USERNAME= # Account username TWITTER_PASSWORD= # Account password TWITTER_EMAIL= # Account email -TWITTER_USERNAME= # Account username -TWITTER_PASSWORD= # Account password -TWITTER_EMAIL= # Account email TWITTER_2FA_SECRET= TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions TWITTER_SEARCH_ENABLE=FALSE # Enable timeline search, WARNING this greatly increases your chance of getting banned TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with TWITTER_RETRY_LIMIT= # Maximum retry attempts for Twitter login TWITTER_SPACES_ENABLE=false # Enable or disable Twitter Spaces logic -TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions -TWITTER_SEARCH_ENABLE=FALSE # Enable timeline search, WARNING this greatly increases your chance of getting banned -TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with -TWITTER_RETRY_LIMIT= # Maximum retry attempts for Twitter login -TWITTER_SPACES_ENABLE=false # Enable or disable Twitter Spaces logic # Post Interval Settings (in minutes) POST_INTERVAL_MIN= # Default: 90 POST_INTERVAL_MAX= # Default: 180 POST_IMMEDIATELY= # Default: false -POST_INTERVAL_MIN= # Default: 90 -POST_INTERVAL_MAX= # Default: 180 -POST_IMMEDIATELY= # Default: false # Twitter action processing configuration ACTION_INTERVAL= # Interval in minutes between action processing runs (default: 5 minutes) ENABLE_ACTION_PROCESSING=false # Set to true to enable the action processing loop MAX_ACTIONS_PROCESSING=1 # Maximum number of actions (e.g., retweets, likes) to process in a single cycle. Helps prevent excessive or uncontrolled actions. ACTION_TIMELINE_TYPE=foryou # Type of timeline to interact with. Options: "foryou" or "following". Default: "foryou" -ACTION_INTERVAL= # Interval in minutes between action processing runs (default: 5 minutes) -ENABLE_ACTION_PROCESSING=false # Set to true to enable the action processing loop -MAX_ACTIONS_PROCESSING=1 # Maximum number of actions (e.g., retweets, likes) to process in a single cycle. Helps prevent excessive or uncontrolled actions. -ACTION_TIMELINE_TYPE=foryou # Type of timeline to interact with. Options: "foryou" or "following". Default: "foryou" # CONFIGURATION FOR APPROVING TWEETS BEFORE IT GETS POSTED TWITTER_APPROVAL_DISCORD_CHANNEL_ID= # Channel ID for the Discord bot to listen and send approval messages TWITTER_APPROVAL_DISCORD_BOT_TOKEN= # Discord bot token (this could be a different bot token from DISCORD_API_TOKEN) TWITTER_APPROVAL_ENABLED= # Enable or disable Twitter approval logic #Default is false TWITTER_APPROVAL_CHECK_INTERVAL=60000 # Default: 60 seconds -TWITTER_APPROVAL_DISCORD_CHANNEL_ID= # Channel ID for the Discord bot to listen and send approval messages -TWITTER_APPROVAL_DISCORD_BOT_TOKEN= # Discord bot token (this could be a different bot token from DISCORD_API_TOKEN) -TWITTER_APPROVAL_ENABLED= # Enable or disable Twitter approval logic #Default is false -TWITTER_APPROVAL_CHECK_INTERVAL=60000 # Default: 60 seconds # WhatsApp Cloud API Configuration WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console @@ -101,15 +69,9 @@ WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0) -WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console -WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API -WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager -WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification -WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0) # Direct Client Setting EXPRESS_MAX_PAYLOAD= # Default: 100kb -EXPRESS_MAX_PAYLOAD= # Default: 100kb ####################################### #### Model Provider Configurations #### @@ -125,21 +87,6 @@ EMBEDDING_OPENAI_MODEL= # Default: text-embedding-3-small IMAGE_OPENAI_MODEL= # Default: dall-e-3 USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local -# Atoma SDK Configuration -ATOMASDK_BEARER_AUTH= # Atoma SDK Bearer Auth token -ATOMA_API_URL= # Default: https://api.atoma.network/v1 -SMALL_ATOMA_MODEL= # Default: meta-llama/Llama-3.3-70B-Instruct -MEDIUM_ATOMA_MODEL= # Default: meta-llama/Llama-3.3-70B-Instruct -LARGE_ATOMA_MODEL= # Default: meta-llama/Llama-3.3-70B-Instruct -OPENAI_API_KEY= # OpenAI API key, starting with sk- -OPENAI_API_URL= # OpenAI API Endpoint (optional), Default: https://api.openai.com/v1 -SMALL_OPENAI_MODEL= # Default: gpt-4o-mini -MEDIUM_OPENAI_MODEL= # Default: gpt-4o -LARGE_OPENAI_MODEL= # Default: gpt-4o -EMBEDDING_OPENAI_MODEL= # Default: text-embedding-3-small -IMAGE_OPENAI_MODEL= # Default: dall-e-3 -USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local - # Atoma SDK Configuration ATOMASDK_BEARER_AUTH= # Atoma SDK Bearer Auth token ATOMA_API_URL= # Default: https://api.atoma.network/v1 @@ -154,27 +101,16 @@ ETERNALAI_CHAIN_ID=8453 # Default: "8453" ETERNALAI_RPC_URL= # Ex: https://mainnet.base.org/ ETERNALAI_AGENT_CONTRACT_ADDRESS= # Ex: 0xAed016e060e2fFE3092916b1650Fc558D62e1CCC ETERNALAI_AGENT_ID= # Ex: 1711 -ETERNALAI_MODEL= # Default: "NousResearch/Hermes-3-Llama-3.1-70B-FP8" -ETERNALAI_CHAIN_ID=8453 # Default: "8453" -ETERNALAI_RPC_URL= # Ex: https://mainnet.base.org/ -ETERNALAI_AGENT_CONTRACT_ADDRESS= # Ex: 0xAed016e060e2fFE3092916b1650Fc558D62e1CCC -ETERNALAI_AGENT_ID= # Ex: 1711 ETERNALAI_API_KEY= ETERNALAI_LOG=false #Default: false -ETERNALAI_LOG=false #Default: false # Hyperbolic Configuration HYPERBOLIC_API_KEY= # Hyperbolic API Key -HYPERBOLIC_API_KEY= # Hyperbolic API Key HYPERBOLIC_MODEL= IMAGE_HYPERBOLIC_MODEL= # Default: FLUX.1-dev SMALL_HYPERBOLIC_MODEL= # Default: meta-llama/Llama-3.2-3B-Instruct MEDIUM_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-70B-Instruct LARGE_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-405-Instruct -IMAGE_HYPERBOLIC_MODEL= # Default: FLUX.1-dev -SMALL_HYPERBOLIC_MODEL= # Default: meta-llama/Llama-3.2-3B-Instruct -MEDIUM_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-70B-Instruct -LARGE_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-405-Instruct # Infera Configuration INFERA_API_KEY= # visit api.infera.org/docs to obtain an API key under /signup_user @@ -183,19 +119,7 @@ INFERA_SERVER_URL= # Default: https://api.infera.org/ SMALL_INFERA_MODEL= #Recommended: llama3.2:latest MEDIUM_INFERA_MODEL= #Recommended: mistral-nemo:latest LARGE_INFERA_MODEL= #Recommended: mistral-small:latest -INFERA_API_KEY= # visit api.infera.org/docs to obtain an API key under /signup_user -INFERA_MODEL= # Default: llama3.2:latest -INFERA_SERVER_URL= # Default: https://api.infera.org/ -SMALL_INFERA_MODEL= #Recommended: llama3.2:latest -MEDIUM_INFERA_MODEL= #Recommended: mistral-nemo:latest -LARGE_INFERA_MODEL= #Recommended: mistral-small:latest -# Venice Configuration -VENICE_API_KEY= # generate from venice settings -SMALL_VENICE_MODEL= # Default: llama-3.3-70b -MEDIUM_VENICE_MODEL= # Default: llama-3.3-70b -LARGE_VENICE_MODEL= # Default: llama-3.1-405b -IMAGE_VENICE_MODEL= # Default: fluently-xl # Venice Configuration VENICE_API_KEY= # generate from venice settings SMALL_VENICE_MODEL= # Default: llama-3.3-70b @@ -203,12 +127,6 @@ MEDIUM_VENICE_MODEL= # Default: llama-3.3-70b LARGE_VENICE_MODEL= # Default: llama-3.1-405b IMAGE_VENICE_MODEL= # Default: fluently-xl -# Nineteen.ai Configuration -NINETEEN_AI_API_KEY= # Get a free api key from https://nineteen.ai/app/api -SMALL_NINETEEN_AI_MODEL= # Default: unsloth/Llama-3.2-3B-Instruct -MEDIUM_NINETEEN_AI_MODEL= # Default: unsloth/Meta-Llama-3.1-8B-Instruct -LARGE_NINETEEN_AI_MODEL= # Default: hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4 -IMAGE_NINETEEN_AI_MODE= # Default: dataautogpt3/ProteusV0.4-Lightning # Nineteen.ai Configuration NINETEEN_AI_API_KEY= # Get a free api key from https://nineteen.ai/app/api SMALL_NINETEEN_AI_MODEL= # Default: unsloth/Llama-3.2-3B-Instruct @@ -216,11 +134,6 @@ MEDIUM_NINETEEN_AI_MODEL= # Default: unsloth/Meta-Llama-3.1-8B-Instruct LARGE_NINETEEN_AI_MODEL= # Default: hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4 IMAGE_NINETEEN_AI_MODE= # Default: dataautogpt3/ProteusV0.4-Lightning -# Akash Chat API Configuration docs: https://chatapi.akash.network/documentation -AKASH_CHAT_API_KEY= # Get from https://chatapi.akash.network/ -SMALL_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-2-3B-Instruct -MEDIUM_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-3-70B-Instruct -LARGE_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-1-405B-Instruct-FP8 # Akash Chat API Configuration docs: https://chatapi.akash.network/documentation AKASH_CHAT_API_KEY= # Get from https://chatapi.akash.network/ SMALL_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-2-3B-Instruct @@ -235,19 +148,11 @@ SMALL_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct MEDIUM_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct LARGE_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct -LIVEPEER_GATEWAY_URL=https://dream-gateway.livepeer.cloud # Free inference gateways and docs: https://livepeer-eliza.com/ -IMAGE_LIVEPEER_MODEL= # Default: ByteDance/SDXL-Lightning -SMALL_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct -MEDIUM_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct -LARGE_LIVEPEER_MODEL= # Default: meta-llama/Meta-Llama-3.1-8B-Instruct - # Speech Synthesis ELEVENLABS_XI_API_KEY= # API key from elevenlabs -ELEVENLABS_XI_API_KEY= # API key from elevenlabs # Transcription Provider TRANSCRIPTION_PROVIDER= # Default: local (possible values: openai, deepgram, local) -TRANSCRIPTION_PROVIDER= # Default: local (possible values: openai, deepgram, local) # ElevenLabs Settings ELEVENLABS_MODEL_ID=eleven_multilingual_v2 @@ -262,22 +167,16 @@ ELEVENLABS_OUTPUT_FORMAT=pcm_16000 # OpenRouter Configuration OPENROUTER_API_KEY= # OpenRouter API Key OPENROUTER_MODEL= # Default: uses hermes 70b/405b -OPENROUTER_API_KEY= # OpenRouter API Key -OPENROUTER_MODEL= # Default: uses hermes 70b/405b SMALL_OPENROUTER_MODEL= MEDIUM_OPENROUTER_MODEL= LARGE_OPENROUTER_MODEL= # REDPILL Configuration (https://docs.red-pill.ai/get-started/supported-models) REDPILL_API_KEY= # REDPILL API Key -REDPILL_API_KEY= # REDPILL API Key REDPILL_MODEL= SMALL_REDPILL_MODEL= # Default: gpt-4o-mini MEDIUM_REDPILL_MODEL= # Default: gpt-4o LARGE_REDPILL_MODEL= # Default: gpt-4o -SMALL_REDPILL_MODEL= # Default: gpt-4o-mini -MEDIUM_REDPILL_MODEL= # Default: gpt-4o -LARGE_REDPILL_MODEL= # Default: gpt-4o # Grok Configuration GROK_API_KEY= # GROK/xAI API Key @@ -285,26 +184,15 @@ SMALL_GROK_MODEL= # Default: grok-2-1212 MEDIUM_GROK_MODEL= # Default: grok-2-1212 LARGE_GROK_MODEL= # Default: grok-2-1212 EMBEDDING_GROK_MODEL= # Default: grok-2-1212 -GROK_API_KEY= # GROK/xAI API Key -SMALL_GROK_MODEL= # Default: grok-2-1212 -MEDIUM_GROK_MODEL= # Default: grok-2-1212 -LARGE_GROK_MODEL= # Default: grok-2-1212 -EMBEDDING_GROK_MODEL= # Default: grok-2-1212 # Ollama Configuration OLLAMA_SERVER_URL= # Default: localhost:11434 -OLLAMA_SERVER_URL= # Default: localhost:11434 OLLAMA_MODEL= USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large SMALL_OLLAMA_MODEL= # Default: llama3.2 MEDIUM_OLLAMA_MODEL= # Default: hermes3 LARGE_OLLAMA_MODEL= # Default: hermes3:70b -USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local -OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large -SMALL_OLLAMA_MODEL= # Default: llama3.2 -MEDIUM_OLLAMA_MODEL= # Default: hermes3 -LARGE_OLLAMA_MODEL= # Default: hermes3:70b # Google Configuration GOOGLE_MODEL= @@ -312,19 +200,12 @@ SMALL_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest MEDIUM_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest LARGE_GOOGLE_MODEL= # Default: gemini-1.5-pro-latest EMBEDDING_GOOGLE_MODEL= # Default: text-embedding-004 -SMALL_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest -MEDIUM_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest -LARGE_GOOGLE_MODEL= # Default: gemini-1.5-pro-latest -EMBEDDING_GOOGLE_MODEL= # Default: text-embedding-004 # Mistral Configuration MISTRAL_MODEL= SMALL_MISTRAL_MODEL= # Default: mistral-small-latest MEDIUM_MISTRAL_MODEL= # Default: mistral-large-latest LARGE_MISTRAL_MODEL= # Default: mistral-large-latest -SMALL_MISTRAL_MODEL= # Default: mistral-small-latest -MEDIUM_MISTRAL_MODEL= # Default: mistral-large-latest -LARGE_MISTRAL_MODEL= # Default: mistral-large-latest # Groq Configuration GROQ_API_KEY= # Starts with gsk_ @@ -332,33 +213,20 @@ SMALL_GROQ_MODEL= # Default: llama-3.1-8b-instant MEDIUM_GROQ_MODEL= # Default: llama-3.3-70b-versatile LARGE_GROQ_MODEL= # Default: llama-3.2-90b-vision-preview EMBEDDING_GROQ_MODEL= # Default: llama-3.1-8b-instant -GROQ_API_KEY= # Starts with gsk_ -SMALL_GROQ_MODEL= # Default: llama-3.1-8b-instant -MEDIUM_GROQ_MODEL= # Default: llama-3.3-70b-versatile -LARGE_GROQ_MODEL= # Default: llama-3.2-90b-vision-preview -EMBEDDING_GROQ_MODEL= # Default: llama-3.1-8b-instant # LlamaLocal Configuration LLAMALOCAL_PATH= # Default: "" which is the current directory in plugin-node/dist/ which gets destroyed and recreated on every build -LLAMALOCAL_PATH= # Default: "" which is the current directory in plugin-node/dist/ which gets destroyed and recreated on every build # NanoGPT Configuration SMALL_NANOGPT_MODEL= # Default: gpt-4o-mini MEDIUM_NANOGPT_MODEL= # Default: gpt-4o LARGE_NANOGPT_MODEL= # Default: gpt-4o -SMALL_NANOGPT_MODEL= # Default: gpt-4o-mini -MEDIUM_NANOGPT_MODEL= # Default: gpt-4o -LARGE_NANOGPT_MODEL= # Default: gpt-4o # Anthropic Configuration ANTHROPIC_API_KEY= # For Claude SMALL_ANTHROPIC_MODEL= # Default: claude-3-haiku-20240307 MEDIUM_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022 LARGE_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022 -ANTHROPIC_API_KEY= # For Claude -SMALL_ANTHROPIC_MODEL= # Default: claude-3-haiku-20240307 -MEDIUM_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022 -LARGE_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022 # Heurist Configuration HEURIST_API_KEY= # Get from https://heurist.ai/dev-access @@ -366,11 +234,6 @@ SMALL_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct MEDIUM_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct LARGE_HEURIST_MODEL= # Default: meta-llama/llama-3.1-405b-instruct HEURIST_IMAGE_MODEL= # Default: PepeXL -HEURIST_API_KEY= # Get from https://heurist.ai/dev-access -SMALL_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct -MEDIUM_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct -LARGE_HEURIST_MODEL= # Default: meta-llama/llama-3.1-405b-instruct -HEURIST_IMAGE_MODEL= # Default: PepeXL # Gaianet Configuration GAIANET_MODEL= @@ -381,28 +244,16 @@ MEDIUM_GAIANET_MODEL= # Default: llama MEDIUM_GAIANET_SERVER_URL= # Default: https://llama8b.gaia.domains/v1 LARGE_GAIANET_MODEL= # Default: qwen72b LARGE_GAIANET_SERVER_URL= # Default: https://qwen72b.gaia.domains/v1 -SMALL_GAIANET_MODEL= # Default: llama3b -SMALL_GAIANET_SERVER_URL= # Default: https://llama3b.gaia.domains/v1 -MEDIUM_GAIANET_MODEL= # Default: llama -MEDIUM_GAIANET_SERVER_URL= # Default: https://llama8b.gaia.domains/v1 -LARGE_GAIANET_MODEL= # Default: qwen72b -LARGE_GAIANET_SERVER_URL= # Default: https://qwen72b.gaia.domains/v1 GAIANET_EMBEDDING_MODEL= USE_GAIANET_EMBEDDING= # Set to TRUE for GAIANET/768, leave blank for local -USE_GAIANET_EMBEDDING= # Set to TRUE for GAIANET/768, leave blank for local # Volcengine Configuration VOLENGINE_API_URL= # Volcengine API Endpoint, Default: https://open.volcengineapi.com/api/v3/ -VOLENGINE_API_URL= # Volcengine API Endpoint, Default: https://open.volcengineapi.com/api/v3/ VOLENGINE_MODEL= SMALL_VOLENGINE_MODEL= # Default: doubao-lite-128k MEDIUM_VOLENGINE_MODEL= # Default: doubao-pro-128k LARGE_VOLENGINE_MODEL= # Default: doubao-pro-256k VOLENGINE_EMBEDDING_MODEL= # Default: doubao-embedding -SMALL_VOLENGINE_MODEL= # Default: doubao-lite-128k -MEDIUM_VOLENGINE_MODEL= # Default: doubao-pro-128k -LARGE_VOLENGINE_MODEL= # Default: doubao-pro-256k -VOLENGINE_EMBEDDING_MODEL= # Default: doubao-embedding # DeepSeek Configuration DEEPSEEK_API_KEY= #Your DeepSeek API key @@ -410,11 +261,6 @@ DEEPSEEK_API_URL= # Default: https://api.deepseek.com SMALL_DEEPSEEK_MODEL= # Default: deepseek-chat MEDIUM_DEEPSEEK_MODEL= # Default: deepseek-chat LARGE_DEEPSEEK_MODEL= # Default: deepseek-chat -DEEPSEEK_API_KEY= #Your DeepSeek API key -DEEPSEEK_API_URL= # Default: https://api.deepseek.com -SMALL_DEEPSEEK_MODEL= # Default: deepseek-chat -MEDIUM_DEEPSEEK_MODEL= # Default: deepseek-chat -LARGE_DEEPSEEK_MODEL= # Default: deepseek-chat # fal.ai Configuration FAL_API_KEY= @@ -423,8 +269,6 @@ FAL_AI_LORA_PATH= # LetzAI Configuration LETZAI_API_KEY= # LetzAI API Key LETZAI_MODELS= # list of Letzai models to add to each prompt, e.g.: "@modelname1, @modelname2" -LETZAI_API_KEY= # LetzAI API Key -LETZAI_MODELS= # list of Letzai models to add to each prompt, e.g.: "@modelname1, @modelname2" # Galadriel Configuration GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/ @@ -432,21 +276,12 @@ SMALL_GALADRIEL_MODEL= # Default: gpt-4o-mini MEDIUM_GALADRIEL_MODEL= # Default: gpt-4o LARGE_GALADRIEL_MODEL= # Default: gpt-4o GALADRIEL_FINE_TUNE_API_KEY= # Use an OpenAI key to use a fine-tuned model with the verified inference endpoint -GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/ -SMALL_GALADRIEL_MODEL= # Default: gpt-4o-mini -MEDIUM_GALADRIEL_MODEL= # Default: gpt-4o -LARGE_GALADRIEL_MODEL= # Default: gpt-4o -GALADRIEL_FINE_TUNE_API_KEY= # Use an OpenAI key to use a fine-tuned model with the verified inference endpoint # Remaining Provider Configurations GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key ALI_BAILIAN_API_KEY= # Ali Bailian API Key NANOGPT_API_KEY= # NanoGPT API Key TOGETHER_API_KEY= # Together API Key -GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key -ALI_BAILIAN_API_KEY= # Ali Bailian API Key -NANOGPT_API_KEY= # NanoGPT API Key -TOGETHER_API_KEY= # Together API Key ###################################### #### Crypto Plugin Configurations #### @@ -474,17 +309,10 @@ ARTHERA_PRIVATE_KEY= SOLANA_PRIVATE_KEY= SOLANA_PUBLIC_KEY= SOLANA_CLUSTER= # Default: devnet. Solana Cluster: 'devnet' | 'testnet' | 'mainnet-beta' -SOLANA_CLUSTER= # Default: devnet. Solana Cluster: 'devnet' | 'testnet' | 'mainnet-beta' SOLANA_ADMIN_PRIVATE_KEY= # This wallet is used to verify NFTs SOLANA_ADMIN_PUBLIC_KEY= # This wallet is used to verify NFTs SOLANA_VERIFY_TOKEN= # Authentication token for calling the verification API -SOLANA_ADMIN_PUBLIC_KEY= # This wallet is used to verify NFTs -SOLANA_VERIFY_TOKEN= # Authentication token for calling the verification API -# Injective -INJECTIVE_PRIVATE_KEY= # -INJECTIVE_PUBLIC_KEY= # -INJECTIVE_NETWORK= # # Injective INJECTIVE_PRIVATE_KEY= # INJECTIVE_PUBLIC_KEY= # @@ -521,19 +349,9 @@ COINBASE_COMMERCE_KEY= # From Coinbase developer portal COINBASE_API_KEY= # From Coinbase developer portal COINBASE_PRIVATE_KEY= # From Coinbase developer portal COINBASE_GENERATED_WALLET_ID= # Not your address but the wallet ID from generating a wallet through the plugin -COINBASE_COMMERCE_KEY= # From Coinbase developer portal -COINBASE_API_KEY= # From Coinbase developer portal -COINBASE_PRIVATE_KEY= # From Coinbase developer portal -COINBASE_GENERATED_WALLET_ID= # Not your address but the wallet ID from generating a wallet through the plugin COINBASE_GENERATED_WALLET_HEX_SEED= # Not your address but the wallet hex seed from generating a wallet through the plugin and calling export COINBASE_NOTIFICATION_URI= # For webhook plugin the uri you want to send the webhook to for dummy ones use https://webhook.site -# Coinbase AgentKit -COINBASE_AGENT_KIT_NETWORK= # defaults to 'base-sepolia' -CDP_API_KEY_NAME= -CDP_API_KEY_PRIVATE_KEY= -COINBASE_NOTIFICATION_URI= # For webhook plugin the uri you want to send the webhook to for dummy ones use https://webhook.site - # Coinbase AgentKit COINBASE_AGENT_KIT_NETWORK= # defaults to 'base-sepolia' CDP_API_KEY_NAME= @@ -541,7 +359,6 @@ CDP_API_KEY_PRIVATE_KEY= # Coinbase Charity Configuration IS_CHARITABLE=false # Set to true to enable charity donations -IS_CHARITABLE=false # Set to true to enable charity donations CHARITY_ADDRESS_BASE=0x1234567890123456789012345678901234567890 CHARITY_ADDRESS_SOL=pWvDXKu6CpbKKvKQkZvDA66hgsTB6X2AgFxksYogHLV CHARITY_ADDRESS_ETH=0x750EF1D7a0b4Ab1c97B7A623D7917CcEb5ea779C @@ -550,7 +367,6 @@ CHARITY_ADDRESS_POL=0x1234567890123456789012345678901234567890 # thirdweb THIRDWEB_SECRET_KEY= # Create key on thirdweb developer dashboard: https://thirdweb.com/ -THIRDWEB_SECRET_KEY= # Create key on thirdweb developer dashboard: https://thirdweb.com/ # Conflux Configuration CONFLUX_CORE_PRIVATE_KEY= @@ -565,12 +381,12 @@ ZEROG_EVM_RPC= ZEROG_PRIVATE_KEY= ZEROG_FLOW_ADDRESS= -# Squid Router -SQUID_SDK_URL=https://apiplus.squidrouter.com # Default: https://apiplus.squidrouter.com -SQUID_INTEGRATOR_ID= # get integrator id through https://docs.squidrouter.com/ -SQUID_EVM_ADDRESS= -SQUID_EVM_PRIVATE_KEY= -SQUID_API_THROTTLE_INTERVAL=1000 # Default: 1000; Used to throttle API calls to avoid rate limiting (in ms) +# IQ6900 +# Load json recorded on-chain through IQ +# Inscribe your json character file here: https://elizacodein.com/ + +IQ_WALLET_ADDRESS= # If you enter the wallet address used on the site, the most recently inscribed json will be loaded. +IQSOlRPC= # Squid Router SQUID_SDK_URL=https://apiplus.squidrouter.com # Default: https://apiplus.squidrouter.com @@ -614,42 +430,6 @@ FAL_AI_LORA_PATH= # Web search API Configuration TAVILY_API_KEY= -# WhatsApp Cloud API Configuration -WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console -WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API -WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager -WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification -WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0) -ENABLE_TEE_LOG=false # Set to true to enable TEE logging, only available when running eliza in TEE -TEE_MODE=OFF # LOCAL | DOCKER | PRODUCTION -WALLET_SECRET_SALT= # ONLY define if you want to use TEE Plugin, otherwise it will throw errors - -# TEE Verifiable Log Configuration -VLOG= # true/false; if you want to use TEE Verifiable Log, set this to "true" - -# Galadriel Configuration -GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/ - -# Venice Configuration -VENICE_API_KEY= # generate from venice settings -SMALL_VENICE_MODEL= # Default: llama-3.3-70b -MEDIUM_VENICE_MODEL= # Default: llama-3.3-70b -LARGE_VENICE_MODEL= # Default: llama-3.1-405b -IMAGE_VENICE_MODEL= # Default: fluently-xl - -# Akash Chat API Configuration docs: https://chatapi.akash.network/documentation -AKASH_CHAT_API_KEY= # Get from https://chatapi.akash.network/ -SMALL_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-2-3B-Instruct -MEDIUM_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-3-70B-Instruct -LARGE_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-1-405B-Instruct-FP8 - -# fal.ai Configuration -FAL_API_KEY= -FAL_AI_LORA_PATH= - -# Web search API Configuration -TAVILY_API_KEY= - # WhatsApp Cloud API Configuration WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API @@ -663,9 +443,6 @@ FLOW_ADDRESS= FLOW_PRIVATE_KEY= # Private key for SHA3-256 + P256 ECDSA FLOW_NETWORK= # Default: mainnet FLOW_ENDPOINT_URL= # Default: https://mainnet.onflow.org -FLOW_PRIVATE_KEY= # Private key for SHA3-256 + P256 ECDSA -FLOW_NETWORK= # Default: mainnet -FLOW_ENDPOINT_URL= # Default: https://mainnet.onflow.org # ICP INTERNET_COMPUTER_PRIVATE_KEY= @@ -675,27 +452,18 @@ INTERNET_COMPUTER_ADDRESS= CLOUDFLARE_GW_ENABLED= # Set to true to enable Cloudflare AI Gateway CLOUDFLARE_AI_ACCOUNT_ID= # Cloudflare AI Account ID - found in the Cloudflare Dashboard under AI Gateway CLOUDFLARE_AI_GATEWAY_ID= # Cloudflare AI Gateway ID - found in the Cloudflare Dashboard under AI Gateway -CLOUDFLARE_GW_ENABLED= # Set to true to enable Cloudflare AI Gateway -CLOUDFLARE_AI_ACCOUNT_ID= # Cloudflare AI Account ID - found in the Cloudflare Dashboard under AI Gateway -CLOUDFLARE_AI_GATEWAY_ID= # Cloudflare AI Gateway ID - found in the Cloudflare Dashboard under AI Gateway # Aptos APTOS_PRIVATE_KEY= # Aptos private key APTOS_NETWORK= # Must be one of mainnet, testnet -APTOS_PRIVATE_KEY= # Aptos private key -APTOS_NETWORK= # Must be one of mainnet, testnet # MultiversX MVX_PRIVATE_KEY= # Multiversx private key MVX_NETWORK= # must be one of mainnet, devnet, testnet -MVX_PRIVATE_KEY= # Multiversx private key -MVX_NETWORK= # must be one of mainnet, devnet, testnet # NEAR NEAR_WALLET_SECRET_KEY= # NEAR Wallet Secret Key NEAR_WALLET_PUBLIC_KEY= # NEAR Wallet Public Key -NEAR_WALLET_SECRET_KEY= # NEAR Wallet Secret Key -NEAR_WALLET_PUBLIC_KEY= # NEAR Wallet Public Key NEAR_ADDRESS= NEAR_SLIPPAGE=1 NEAR_RPC_URL=https://rpc.testnet.near.org @@ -710,41 +478,28 @@ AVAIL_ADDRESS= AVAIL_SEED= AVAIL_APP_ID=0 AVAIL_RPC_URL=wss://avail-turing.public.blastapi.io/ # (Default) Testnet: wss://avail-turing.public.blastapi.io/ | Mainnet: wss://avail-mainnet.public.blastapi.io/ -AVAIL_RPC_URL=wss://avail-turing.public.blastapi.io/ # (Default) Testnet: wss://avail-turing.public.blastapi.io/ | Mainnet: wss://avail-mainnet.public.blastapi.io/ # Marlin TEE_MARLIN= # Set "yes" to enable the plugin TEE_MARLIN_ATTESTATION_ENDPOINT= # Optional, default "http://127.0.0.1:1350" -TEE_MARLIN= # Set "yes" to enable the plugin -TEE_MARLIN_ATTESTATION_ENDPOINT= # Optional, default "http://127.0.0.1:1350" # Ton TON_PRIVATE_KEY= # Ton Mnemonic Seed Phrase Join With Empty String TON_RPC_URL= # ton rpc -TON_PRIVATE_KEY= # Ton Mnemonic Seed Phrase Join With Empty String -TON_RPC_URL= # ton rpc # Sui SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) , Also support `suiprivatekeyxxxx` (sui keytool export --key-identity 0x63) SUI_NETWORK= # must be one of mainnet, testnet, devnet, localnet -SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) , Also support `suiprivatekeyxxxx` (sui keytool export --key-identity 0x63) -SUI_NETWORK= # must be one of mainnet, testnet, devnet, localnet # Story STORY_PRIVATE_KEY= # Story private key STORY_API_BASE_URL= # Story API base URL STORY_API_KEY= # Story API key PINATA_JWT= # Pinata JWT for uploading files to IPFS -STORY_PRIVATE_KEY= # Story private key -STORY_API_BASE_URL= # Story API base URL -STORY_API_KEY= # Story API key -PINATA_JWT= # Pinata JWT for uploading files to IPFS # Cosmos COSMOS_RECOVERY_PHRASE= # 12 words recovery phrase (need to be in quotes, because of spaces) COSMOS_AVAILABLE_CHAINS= # mantrachaintestnet2,cosmos # Array of chains -COSMOS_RECOVERY_PHRASE= # 12 words recovery phrase (need to be in quotes, because of spaces) -COSMOS_AVAILABLE_CHAINS= # mantrachaintestnet2,cosmos # Array of chains # Cronos zkEVM CRONOSZKEVM_ADDRESS= CRONOSZKEVM_PRIVATE_KEY= @@ -755,8 +510,6 @@ FUEL_WALLET_PRIVATE_KEY= # Tokenizer Settings TOKENIZER_MODEL= # Specify the tokenizer model to be used. TOKENIZER_TYPE= # Options: tiktoken (for OpenAI models) or auto (AutoTokenizer from Hugging Face for non-OpenAI models). Default: tiktoken. -TOKENIZER_MODEL= # Specify the tokenizer model to be used. -TOKENIZER_TYPE= # Options: tiktoken (for OpenAI models) or auto (AutoTokenizer from Hugging Face for non-OpenAI models). Default: tiktoken. # Spheron SPHERON_PRIVATE_KEY= @@ -781,11 +534,7 @@ GIPHY_API_KEY= # OpenWeather OPEN_WEATHER_API_KEY= # OpenWeather API key -OPEN_WEATHER_API_KEY= # OpenWeather API key -#GITCOIN Passport -PASSPORT_API_KEY= #Gitcoin Passport key -PASSPORT_SCORER= #Scorer number #GITCOIN Passport PASSPORT_API_KEY= #Gitcoin Passport key PASSPORT_SCORER= #Scorer number @@ -795,17 +544,11 @@ ECHOCHAMBERS_API_URL=http://127.0.0.1:3333 ECHOCHAMBERS_API_KEY=testingkey0011 ECHOCHAMBERS_USERNAME=eliza ECHOCHAMBERS_ROOMS=general #comma delimited list of rooms the agent watches -ECHOCHAMBERS_ROOMS=general #comma delimited list of rooms the agent watches ECHOCHAMBERS_POLL_INTERVAL=60 ECHOCHAMBERS_MAX_MESSAGES=10 # How often the agent checks if it should start a conversation ECHOCHAMBERS_CONVERSATION_STARTER_INTERVAL=300 # 5 minutes - checks rooms every 5 minutes -# How long a room must be quiet before starting a new conversation -ECHOCHAMBERS_QUIET_PERIOD=900 # 15 minutes - waits for 15 minutes of silence -# How often the agent checks if it should start a conversation -ECHOCHAMBERS_CONVERSATION_STARTER_INTERVAL=300 # 5 minutes - checks rooms every 5 minutes - # How long a room must be quiet before starting a new conversation ECHOCHAMBERS_QUIET_PERIOD=900 # 15 minutes - waits for 15 minutes of silence @@ -813,11 +556,6 @@ ECHOCHAMBERS_QUIET_PERIOD=900 # 15 minutes - waits for 15 minutes of silence ALLORA_API_KEY= # Allora API key, format: UP-f8db7d6558ab432ca0d92716 ALLORA_CHAIN_SLUG= # must be one of mainnet, testnet. If not specified, it will use testnet by default -# B2 Network -B2_PRIVATE_KEY= # Private key of the B2 Network account to use for the agent -ALLORA_API_KEY= # Allora API key, format: UP-f8db7d6558ab432ca0d92716 -ALLORA_CHAIN_SLUG= # must be one of mainnet, testnet. If not specified, it will use testnet by default - # B2 Network B2_PRIVATE_KEY= # Private key of the B2 Network account to use for the agent @@ -836,17 +574,12 @@ AWS_S3_ENDPOINT= AWS_S3_SSL_ENABLED= AWS_S3_FORCE_PATH_STYLE= -AWS_S3_ENDPOINT= -AWS_S3_SSL_ENABLED= -AWS_S3_FORCE_PATH_STYLE= - # Deepgram DEEPGRAM_API_KEY= # Verifiable Inference Configuration VERIFIABLE_INFERENCE_ENABLED=false # Set to false to disable verifiable inference -VERIFIABLE_INFERENCE_ENABLED=false # Set to false to disable verifiable inference VERIFIABLE_INFERENCE_PROVIDER=opacity # Options: opacity # Autonome Configuration diff --git a/.github/workflows/block-mini.yml b/.github/workflows/block-mini.yml new file mode 100644 index 000000000000..eaacd20d1750 --- /dev/null +++ b/.github/workflows/block-mini.yml @@ -0,0 +1,60 @@ +name: Block Minified JavaScript/TypeScript + +on: + pull_request: + branches: ["main", "develop", "*"] + push: + branches: ["main", "develop", "*"] + +jobs: + block-minified-code: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Detect potential minified code + shell: bash + run: | + echo "Scanning for potential minified JS/TS code..." + + # We'll look in .ts, .tsx, .js, .jsx files, skipping common build dirs. + FILES=$(find . \ + \( -name 'node_modules' -prune \) -o \ + \( -name 'dist' -prune \) -o \ + \( -name 'build' -prune \) -o \ + -type f \( -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' \) \ + -print) + + if [ -z "$FILES" ]; then + echo "No relevant JS/TS files found." + exit 0 + fi + + THRESHOLD=1000 + VIOLATIONS=0 + + for file in $FILES; do + # Use grep -En to capture line number and text + # If any line is ≥ THRESHOLD chars, we store those lines in RESULTS + RESULTS=$(grep -En ".{${THRESHOLD},}" "$file" || true) + if [ -n "$RESULTS" ]; then + # We have potential minified lines + while IFS= read -r match; do + # 'match' will be something like "1234:the entire matched line" + LINENUM=$(echo "$match" | cut -d: -f1) + # If you want the text, you can do: + # MATCHED_LINE=$(echo "$match" | cut -d: -f2-) + + echo "::error file=$file,line=$LINENUM::Detected potential minified code (≥ $THRESHOLD chars)." + done <<< "$RESULTS" + VIOLATIONS=1 + fi + done + + if [ "$VIOLATIONS" -eq 1 ]; then + echo "ERROR: Minified code detected. Please remove or exclude it." + exit 1 + else + echo "No minified code detected." + fi diff --git a/.github/workflows/generate-readme-translations.yml b/.github/workflows/generate-readme-translations.yml index b1ba989d358d..de2d5fa13b16 100644 --- a/.github/workflows/generate-readme-translations.yml +++ b/.github/workflows/generate-readme-translations.yml @@ -24,6 +24,15 @@ jobs: { code: "TH", name: "Thai" }, { code: "TR", name: "Turkish" }, { code: "VI", name: "Vietnamese" }, + { code: "AR", name: "Arabic" }, + { code: "RS", name: "Srpski" }, + { code: "TG", name: "Tagalog" }, + { code: "PL", name: "Polski" }, + { code: "HU", name: "Hungarian" }, + { code: "FA", name: "Persian" }, + { code: "RO", name: "Romanian" }, + { code: "GR", name: "Greek" }, + { code: "NL", name: "Dutch" }, ] permissions: contents: write @@ -53,7 +62,7 @@ jobs: "content_path": "README.md" } ], - "save_path": "README_${{ matrix.language.code }}.md", + save_path: "i18n/readme/README_${{ matrix.language.code }}.md", "model": "gpt-4o" } diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 750e5ce458be..4e39d95ffff1 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -12,5 +12,5 @@ jobs: - uses: actions/first-interaction@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: "Hello @${{ github.actor }}! Welcome to the ai16z community. Thank you for opening your first issue; we appreciate your contribution. You are now a ai16z contributor!" - pr-message: "Hi @${{ github.actor }}! Welcome to the ai16z community. Thanks for submitting your first pull request; your efforts are helping us accelerate towards AGI. We'll review it shortly. You are now a ai16z contributor!" + issue-message: "Hello @${{ github.actor }}! Welcome to the elizaOS community. Thank you for opening your first issue; we appreciate your contribution. You are now an elizaOS contributor!" + pr-message: "Hi @${{ github.actor }}! Welcome to the elizaOS community. Thanks for submitting your first pull request; your efforts are helping us accelerate towards AGI. We'll review it shortly. You are now an elizaOS contributor!" diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 2c088afbe688..00d1a5116ba3 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -10,17 +10,24 @@ on: jobs: smoke-tests: runs-on: ubuntu-latest + container: + image: node:23-bullseye steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 + - name: Cache pnpm + uses: actions/cache@v4 with: - version: 9.15.0 + path: | + ~/.pnpm-store + **/node_modules + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: ${{ runner.os }}-pnpm- - - uses: actions/setup-node@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v3 with: - node-version: "23.3.0" - cache: "pnpm" + version: 9.15.0 - name: Run smoke tests run: pnpm run smokeTests diff --git a/.gitignore b/.gitignore index a643a41ca0cf..a82e47b2b12d 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,8 @@ tsup.config.bundled_*.mjs .turbo .cursorrules .pnpm-store +instructions.md +wallet_data.txt coverage .eslintcache @@ -60,6 +62,4 @@ agent/content eliza.manifest eliza.manifest.sgx -eliza.sig -packages/plugin-pyth-data/docs -packages/plugin-pyth-data/old_code \ No newline at end of file +eliza.sig \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 828ba71d42ed..8ec2756c0f47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1312,7 +1312,7 @@ - Add OLLAMA as Model Provider [\#221](https://github.com/elizaOS/eliza/pull/221) ([o-on-x](https://github.com/o-on-x)) - lazy load llama [\#220](https://github.com/elizaOS/eliza/pull/220) ([lalalune](https://github.com/lalalune)) - Implement grok beta [\#216](https://github.com/elizaOS/eliza/pull/216) ([MeDott29](https://github.com/MeDott29)) -- Abstracts Eliza into a Package to enble publishing onto NPM along with plugin system [\#214](https://github.com/elizaOS/eliza/pull/214) ([ponderingdemocritus](https://github.com/ponderingdemocritus)) +- Abstracts Eliza into a Package to enable publishing onto NPM along with plugin system [\#214](https://github.com/elizaOS/eliza/pull/214) ([ponderingdemocritus](https://github.com/ponderingdemocritus)) - add the template overrides [\#207](https://github.com/elizaOS/eliza/pull/207) ([lalalune](https://github.com/lalalune)) - Shaw fix characters paths, .ts requirement and missings args [\#204](https://github.com/elizaOS/eliza/pull/204) ([lalalune](https://github.com/lalalune)) - Fix Discord Voice and DMs [\#203](https://github.com/elizaOS/eliza/pull/203) ([lalalune](https://github.com/lalalune)) diff --git a/Dockerfile b/Dockerfile index 4a4341ebaab3..12adbb4a213b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,43 +1,62 @@ # Use a specific Node.js version for better reproducibility FROM node:23.3.0-slim AS builder -# Install pnpm globally and install necessary build tools +# Install pnpm globally and necessary build tools RUN npm install -g pnpm@9.4.0 && \ apt-get update && \ - apt-get install -y git python3 make g++ && \ + apt-get upgrade -y && \ + apt-get install -y \ + git \ + python3 \ + python3-pip \ + curl \ + node-gyp \ + ffmpeg \ + libtool-bin \ + autoconf \ + automake \ + libopus-dev \ + make \ + g++ \ + build-essential \ + libcairo2-dev \ + libjpeg-dev \ + libpango1.0-dev \ + libgif-dev \ + openssl \ + libssl-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Set Python 3 as the default python -RUN ln -s /usr/bin/python3 /usr/bin/python +RUN ln -sf /usr/bin/python3 /usr/bin/python # Set the working directory WORKDIR /app -# Copy package.json and other configuration files -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc turbo.json ./ +# Copy application code +COPY . . -# Copy the rest of the application code -COPY agent ./agent -COPY packages ./packages -COPY scripts ./scripts -COPY characters ./characters +# Install dependencies +RUN pnpm install --no-frozen-lockfile -# Install dependencies and build the project -RUN pnpm install \ - && pnpm build-docker \ - && pnpm prune --prod +# Build the project +RUN pnpm run build && pnpm prune --prod -# Create a new stage for the final image +# Final runtime image FROM node:23.3.0-slim -# Install runtime dependencies if needed +# Install runtime dependencies RUN npm install -g pnpm@9.4.0 && \ apt-get update && \ - apt-get install -y git python3 && \ + apt-get install -y \ + git \ + python3 \ + ffmpeg && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* +# Set the working directory WORKDIR /app # Copy built artifacts and production dependencies from the builder stage @@ -47,9 +66,14 @@ COPY --from=builder /app/.npmrc ./ COPY --from=builder /app/turbo.json ./ COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/agent ./agent +COPY --from=builder /app/client ./client +COPY --from=builder /app/lerna.json ./ COPY --from=builder /app/packages ./packages COPY --from=builder /app/scripts ./scripts COPY --from=builder /app/characters ./characters -# Set the command to run the application -CMD ["pnpm", "start"] +# Expose necessary ports +EXPOSE 3000 5173 + +# Command to start the application +CMD ["sh", "-c", "pnpm start & pnpm start:client"] diff --git a/Dockerfile.docs b/Dockerfile.docs index f91ecc49395e..2a9f0a6557d9 100644 --- a/Dockerfile.docs +++ b/Dockerfile.docs @@ -1,63 +1,43 @@ # syntax=docker/dockerfile:1 -## Modified version of https://docusaurus.community/knowledge/deployment/docker/ - # Stage 1: Base image. ## Start with a base image containing NodeJS so we can build Docusaurus. FROM node:23.3.0-slim AS base ## Disable colour output from yarn to make logs easier to read. - -## https://pnpm.io/docker -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" - ENV FORCE_COLOR=0 ## Enable corepack. RUN corepack enable ## Set the working directory to `/opt/docusaurus`. WORKDIR /opt/docusaurus -## Required by docusaurus: [ERROR] Loading of version failed for version current -RUN apt-get update && apt-get install -y git - +# Stage 2a: Development mode. FROM base AS dev ## Set the working directory to `/opt/docusaurus`. WORKDIR /opt/docusaurus ## Expose the port that Docusaurus will run on. EXPOSE 3000 ## Run the development server. -CMD [ -d "node_modules" ] && npm run start -- --host 0.0.0.0 --poll 1000 || pnpm install && pnpm run start -- --host 0.0.0.0 --poll 1000 +CMD [ -d "node_modules" ] && pnpm start -- --host 0.0.0.0 --poll 1000 || pnpm install && pnpm start -- --host 0.0.0.0 --poll 1000 # Stage 2b: Production build mode. -FROM base AS preprod +FROM base AS prod ## Set the working directory to `/opt/docusaurus`. WORKDIR /opt/docusaurus -## This is in case someone needs to build the lock file -#RUN apt install python-is-python3 g++ make -y - -COPY docs/package.json /opt/docusaurus/package.json -COPY docs/package-lock.json /opt/docusaurus/package-lock.json - -FROM preprod AS prod - -## Install dependencies with `--immutable` to ensure reproducibility. -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install - -## Copy over the source code. COPY docs/ /opt/docusaurus/ COPY packages/ /opt/packages/ ## Required buy docusaurus [ERROR] Loading of version failed for version current COPY .git/ /opt/.git/ -# Build from sources -RUN pnpm run build +## Install dependencies with `--frozen-lockfile` to ensure reproducibility. +RUN pnpm install --no-frozen-lockfile +## Build the static site. +RUN pnpm build # Stage 3a: Serve with `docusaurus serve`. FROM prod AS serve ## Expose the port that Docusaurus will run on. EXPOSE 3000 ## Run the production server. -CMD ["npm", "run", "serve", "--", "--host", "0.0.0.0", "--no-open"] - +CMD ["pnpm", "run", "serve", "--host", "0.0.0.0", "--no-open"] \ No newline at end of file diff --git a/README.md b/README.md index 06a538b21dd8..c70eea0699d4 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ## 🌍 README Translations -[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Persian](./README_FA.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md) +[中文说明](i18n/readme/README_CN.md) | [日本語の説明](i18n/readme/README_JA.md) | [한국어 설명](i18n/readme/README_KOR.md) | [Persian](i18n/readme/README_FA.md) | [Français](i18n/readme/README_FR.md) | [Português](i18n/readme/README_PTBR.md) | [Türkçe](i18n/readme/README_TR.md) | [Русский](i18n/readme/README_RU.md) | [Español](i18n/readme/README_ES.md) | [Italiano](i18n/readme/README_IT.md) | [ไทย](i18n/readme/README_TH.md) | [Deutsch](i18n/readme/README_DE.md) | [Tiếng Việt](i18n/readme/README_VI.md) | [עִברִית](i18n/readme/README_HE.md) | [Tagalog](i18n/readme/README_TG.md) | [Polski](i18n/readme/README_PL.md) | [Arabic](i18n/readme/README_AR.md) | [Hungarian](i18n/readme/README_HU.md) | [Srpski](i18n/readme/README_RS.md) | [Română](i18n/readme/README_RO.md) | [Nederlands](i18n/readme/README_NL.md) | [Ελληνικά](i18n/readme/README_GR.md) ## 🚩 Overview @@ -23,12 +23,11 @@ ## ✨ Features - 🛠️ Full-featured Discord, Twitter and Telegram connectors -- 🔗 Support for every model (Llama, Grok, OpenAI, Anthropic, etc.) +- 🔗 Support for every model (Llama, Grok, OpenAI, Anthropic, Gemini, etc.) - 👥 Multi-agent and room support - 📚 Easily ingest and interact with your documents - 💾 Retrievable memory and document store - 🚀 Highly extensible - create your own actions and clients -- ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.) - 📦 Just works! ## Video Tutorials @@ -62,33 +61,21 @@ cp .env.example .env pnpm i && pnpm build && pnpm start ``` -Once the agent is running, you should see the message to run "pnpm start:client" at the end. -Open another terminal and move to same directory and then run below command and follow the URL to chat to your agent. - -```bash -pnpm start:client -``` - -Then read the [Documentation](https://elizaos.github.io/eliza/) to learn how to customize your Eliza. - ### Manually Start Eliza (Only recommended if you know what you are doing) +#### Checkout the latest release + ```bash # Clone the repository git clone https://github.com/elizaos/eliza.git -# Checkout the latest release # This project iterates fast, so we recommend checking out the latest release git checkout $(git describe --tags --abbrev=0) # If the above doesn't checkout the latest release, this should work: # git checkout $(git describe --tags `git rev-list --tags --max-count=1`) ``` -### Start Eliza with Gitpod - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main) - -### Edit the .env file +#### Edit the .env file Copy .env.example to .env and fill in the appropriate values. @@ -98,15 +85,46 @@ cp .env.example .env Note: .env is optional. If you're planning to run multiple distinct agents, you can pass secrets through the character JSON +#### Start Eliza + +```bash +pnpm i +pnpm build +pnpm start + +# The project iterates fast, sometimes you need to clean the project if you are coming back to the project +pnpm clean +``` + +### Interact via Browser + +Once the agent is running, you should see the message to run "pnpm start:client" at the end. + +Open another terminal, move to same directory, run the command below, then follow the URL to chat with your agent. + +```bash +pnpm start:client +``` + +Then read the [Documentation](https://elizaos.github.io/eliza/) to learn how to customize your Eliza. + +--- + ### Automatically Start Eliza -This will run everything to set up the project and start the bot with the default character. +The start script provides an automated way to set up and run Eliza: ```bash sh scripts/start.sh ``` -### Edit the character file +For detailed instructions on using the start script, including character management and troubleshooting, see our [Start Script Guide](./docs/docs/guides/start-script.md). + +> **Note**: The start script handles all dependencies, environment setup, and character management automatically. + +--- + +### Modify Character 1. Open `packages/core/src/defaultCharacter.ts` to modify the default character. Uncomment and edit. @@ -116,16 +134,7 @@ sh scripts/start.sh 3. Connect with X (Twitter) - change `"clients": []` to `"clients": ["twitter"]` in the character file to connect with X -### Manually Start Eliza - -```bash -pnpm i -pnpm build -pnpm start - -# The project iterates fast, sometimes you need to clean the project if you are coming back to the project -pnpm clean -``` +--- #### Additional Requirements @@ -135,6 +144,14 @@ You may need to install Sharp. If you see an error when starting up, try install pnpm install --include=optional sharp ``` +--- + +### Start Eliza with Gitpod + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main) + +--- + ### Community & contact - [GitHub Issues](https://github.com/elizaos/eliza/issues). Best for: bugs you encounter using Eliza, and feature proposals. diff --git a/agent/package.json b/agent/package.json index 0fc2cdc1877f..e4c8f2225303 100644 --- a/agent/package.json +++ b/agent/package.json @@ -1,6 +1,7 @@ { "name": "@elizaos/agent", "version": "0.1.9-alpha.1", + "version": "0.1.9-alpha.1", "main": "src/index.ts", "type": "module", "scripts": { @@ -31,14 +32,18 @@ "@elizaos/client-telegram": "workspace:*", "@elizaos/client-twitter": "workspace:*", "@elizaos/client-instagram": "workspace:*", + "@elizaos/client-instagram": "workspace:*", "@elizaos/client-slack": "workspace:*", "@elizaos/core": "workspace:*", "@elizaos/plugin-0g": "workspace:*", "@elizaos/plugin-abstract": "workspace:*", "@elizaos/plugin-agentkit": "workspace:*", + "@elizaos/plugin-agentkit": "workspace:*", "@elizaos/plugin-aptos": "workspace:*", "@elizaos/plugin-birdeye": "workspace:*", "@elizaos/plugin-coingecko": "workspace:*", + "@elizaos/plugin-birdeye": "workspace:*", + "@elizaos/plugin-coingecko": "workspace:*", "@elizaos/plugin-coinmarketcap": "workspace:*", "@elizaos/plugin-binance": "workspace:*", "@elizaos/plugin-avail": "workspace:*", @@ -53,6 +58,7 @@ "@elizaos/plugin-gitbook": "workspace:*", "@elizaos/plugin-story": "workspace:*", "@elizaos/plugin-gitcoin-passport": "workspace:*", + "@elizaos/plugin-gitcoin-passport": "workspace:*", "@elizaos/plugin-goat": "workspace:*", "@elizaos/plugin-lensNetwork": "workspace:*", "@elizaos/plugin-icp": "workspace:*", @@ -63,8 +69,10 @@ "@elizaos/plugin-node": "workspace:*", "@elizaos/plugin-solana": "workspace:*", "@elizaos/plugin-injective": "workspace:*", + "@elizaos/plugin-injective": "workspace:*", "@elizaos/plugin-solana-agentkit": "workspace:*", "@elizaos/plugin-squid-router": "workspace:*", + "@elizaos/plugin-squid-router": "workspace:*", "@elizaos/plugin-autonome": "workspace:*", "@elizaos/plugin-starknet": "workspace:*", "@elizaos/plugin-stargaze": "workspace:*", @@ -72,6 +80,7 @@ "@elizaos/plugin-ton": "workspace:*", "@elizaos/plugin-sui": "workspace:*", "@elizaos/plugin-sgx": "workspace:*", + "@elizaos/plugin-iq6900": "workspace:*", "@elizaos/plugin-tee": "workspace:*", "@elizaos/plugin-tee-log": "workspace:*", "@elizaos/plugin-tee-marlin": "workspace:*", @@ -87,10 +96,12 @@ "@elizaos/plugin-video-generation": "workspace:*", "@elizaos/plugin-web-search": "workspace:*", "@elizaos/plugin-dexscreener": "workspace:*", + "@elizaos/plugin-dexscreener": "workspace:*", "@elizaos/plugin-letzai": "workspace:*", "@elizaos/plugin-thirdweb": "workspace:*", "@elizaos/plugin-genlayer": "workspace:*", "@elizaos/plugin-tee-verifiable-log": "workspace:*", + "@elizaos/plugin-tee-verifiable-log": "workspace:*", "@elizaos/plugin-depin": "workspace:*", "@elizaos/plugin-open-weather": "workspace:*", "@elizaos/plugin-obsidian": "workspace:*", @@ -100,6 +111,8 @@ "@elizaos/plugin-hyperliquid": "workspace:*", "@elizaos/plugin-akash": "workspace:*", "@elizaos/plugin-quai": "workspace:*", + "@elizaos/plugin-b2": "workspace:*", + "@elizaos/plugin-nft-collections": "workspace:*", "@elizaos/plugin-pyth-data": "workspace:*", "readline": "1.3.0", "ws": "8.18.0", diff --git a/agent/src/index.ts b/agent/src/index.ts index df56ca6bed41..5e694a65bbdc 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -13,6 +13,7 @@ import { TwitterClientInterface } from "@elizaos/client-twitter"; import { FarcasterClientInterface } from "@elizaos/client-farcaster"; // import { ReclaimAdapter } from "@elizaos/plugin-reclaim"; import { PrimusAdapter } from "@elizaos/plugin-primus"; +import { elizaCodeinPlugin, onchainJson } from "@elizaos/plugin-iq6900"; import { AgentRuntime, @@ -99,14 +100,11 @@ import { giphyPlugin } from "@elizaos/plugin-giphy"; import { letzAIPlugin } from "@elizaos/plugin-letzai"; import { thirdwebPlugin } from "@elizaos/plugin-thirdweb"; import { hyperliquidPlugin } from "@elizaos/plugin-hyperliquid"; -import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; - -import { OpacityAdapter } from "@elizaos/plugin-opacity"; -import { openWeatherPlugin } from "@elizaos/plugin-open-weather"; -import { stargazePlugin } from "@elizaos/plugin-stargaze"; -import { akashPlugin } from "@elizaos/plugin-akash"; -import { quaiPlugin } from "@elizaos/plugin-quai"; +import { echoChambersPlugin } from "@elizaos/plugin-echochambers"; +import { dexScreenerPlugin } from "@elizaos/plugin-dexscreener"; import { pythDataPlugin } from "@elizaos/plugin-pyth-data"; + +import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; import Database from "better-sqlite3"; import fs from "fs"; import net from "net"; @@ -114,8 +112,6 @@ import path from "path"; import { fileURLToPath } from "url"; import yargs from "yargs"; - - const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file const __dirname = path.dirname(__filename); // get the name of the directory @@ -193,6 +189,63 @@ function mergeCharacters(base: Character, child: Character): Character { }; return mergeObjects(base, child); } +function isAllStrings(arr: unknown[]): boolean { + return Array.isArray(arr) && arr.every((item) => typeof item === "string"); +} +export async function loadCharacterFromOnchain(): Promise { + const jsonText = onchainJson; + + console.log("JSON:", jsonText); + if (jsonText == "null") return []; + const loadedCharacters = []; + try { + const character = JSON.parse(jsonText); + validateCharacterConfig(character); + + // .id isn't really valid + const characterId = character.id || character.name; + const characterPrefix = `CHARACTER.${characterId.toUpperCase().replace(/ /g, "_")}.`; + + const characterSettings = Object.entries(process.env) + .filter(([key]) => key.startsWith(characterPrefix)) + .reduce((settings, [key, value]) => { + const settingKey = key.slice(characterPrefix.length); + settings[settingKey] = value; + return settings; + }, {}); + + if (Object.keys(characterSettings).length > 0) { + character.settings = character.settings || {}; + character.settings.secrets = { + ...characterSettings, + ...character.settings.secrets, + }; + } + + // Handle plugins + if (isAllStrings(character.plugins)) { + elizaLogger.info("Plugins are: ", character.plugins); + const importedPlugins = await Promise.all( + character.plugins.map(async (plugin) => { + const importedPlugin = await import(plugin); + return importedPlugin.default; + }) + ); + character.plugins = importedPlugins; + } + + loadedCharacters.push(character); + elizaLogger.info( + `Successfully loaded character from: ${process.env.IQ_WALLET_ADDRESS}` + ); + return loadedCharacters; + } catch (e) { + elizaLogger.error( + `Error parsing character from ${process.env.IQ_WALLET_ADDRESS}: ${e}` + ); + process.exit(1); + } +} async function loadCharacterFromUrl(url: string): Promise { const response = await fetch(url); @@ -251,14 +304,13 @@ async function loadCharacter(filePath: string): Promise { } function commaSeparatedStringToArray(commaSeparated: string): string[] { - return commaSeparated?.split(",").map(value => value.trim()) + return commaSeparated?.split(",").map((value) => value.trim()); } - export async function loadCharacters( charactersArg: string ): Promise { - let characterPaths = commaSeparatedStringToArray(charactersArg) + let characterPaths = commaSeparatedStringToArray(charactersArg); const loadedCharacters: Character[] = []; if (characterPaths?.length > 0) { @@ -332,7 +384,9 @@ export async function loadCharacters( if (hasValidRemoteUrls()) { elizaLogger.info("Loading characters from remote URLs"); - let characterUrls = commaSeparatedStringToArray(process.env.REMOTE_CHARACTER_URLS) + let characterUrls = commaSeparatedStringToArray( + process.env.REMOTE_CHARACTER_URLS + ); for (const characterUrl of characterUrls) { const character = await loadCharacterFromUrl(characterUrl); loadedCharacters.push(character); @@ -788,6 +842,10 @@ export async function createAgent( character, // character.plugins are handled when clients are added plugins: [ + getSecret(character, "IQ_WALLET_ADDRESS") && + getSecret(character, "IQSOlRPC") + ? elizaCodeinPlugin + : null, bootstrapPlugin, getSecret(character, "DEXSCREENER_API_KEY") ? dexScreenerPlugin @@ -816,8 +874,9 @@ export async function createAgent( getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) ? evmPlugin : null, - ((getSecret(character, "EVM_PUBLIC_KEY") || getSecret(character, "INJECTIVE_PUBLIC_KEY")) && - getSecret(character, "INJECTIVE_PRIVATE_KEY")) + (getSecret(character, "EVM_PUBLIC_KEY") || + getSecret(character, "INJECTIVE_PUBLIC_KEY")) && + getSecret(character, "INJECTIVE_PRIVATE_KEY") ? injectivePlugin : null, getSecret(character, "COSMOS_RECOVERY_PHRASE") && @@ -960,6 +1019,7 @@ export async function createAgent( ? createNFTCollectionsPlugin() : null, getSecret(character, "PYTH_GRANULAR_LOG") ? pythDataPlugin : null, + ].filter(Boolean), providers: [], actions: [], @@ -1121,13 +1181,11 @@ const checkPortAvailable = (port: number): Promise => { }); }; - const hasValidRemoteUrls = () => process.env.REMOTE_CHARACTER_URLS && process.env.REMOTE_CHARACTER_URLS !== "" && process.env.REMOTE_CHARACTER_URLS.startsWith("http"); - const startAgents = async () => { const directClient = new DirectClient(); let serverPort = parseInt(settings.SERVER_PORT || "3000"); @@ -1135,7 +1193,11 @@ const startAgents = async () => { let charactersArg = args.characters || args.character; let characters = [defaultCharacter]; - if (charactersArg || hasValidRemoteUrls()) { + if (process.env.IQ_WALLET_ADDRESS && process.env.IQSOlRPC) { + characters = await loadCharacterFromOnchain(); + } + + if ((onchainJson == "null" && charactersArg) || hasValidRemoteUrls()) { characters = await loadCharacters(charactersArg); } diff --git a/characters/tate.character.json b/characters/tate.character.json deleted file mode 100644 index 618db266adde..000000000000 --- a/characters/tate.character.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "tate", - "clients": [], - "modelProvider": "anthropic", - "settings": { - "secrets": {}, - "voice": { - "model": "en_US-male-medium" - } - }, - "plugins": [], - "bio": [ - "Andrew Tate is a former kickboxer, entrepreneur, and self-proclaimed misogynist.", - "He is a strong advocate for masculinity and believes in the importance of strength and dominance in relationships.", - "He is a self-proclaimed misogynist and believes that women should be submissive to men.", - "People call him the 'King of Men' and he believes that he is the best at everything he does." - ], - "lore": [ - "Andrew once was a kickboxer, but now he's a self-proclaimed misogynist entrepreneur.", - "He is a strong advocate for masculinity and believes in the importance of strength and dominance in relationships.", - "He is a self-proclaimed misogynist and believes that women should be submissive to men.", - "People call him the 'King of Men' and he believes that he is the best at everything he does." - ], - "knowledge": [], - "messageExamples": [ - [ - { - "user": "{{user1}}", - "content": { - "text": "How do I get rich?" - } - }, - { - "user": "tate", - "content": { - "text": "Simple. Stop being BROKE and LAZY. While you're sleeping, I'm breathing air like a G and making MILLIONS. Built multiple 8-figure businesses because I understand the MATRIX. What color is your Bugatti? Exactly. STAY POOR or join the WAR ROOM!" - } - } - ], - [ - { - "user": "{{user1}}", - "content": { - "text": "Why did you get banned?" - } - }, - { - "user": "tate", - "content": { - "text": "Matrix agents FEAR TRUTH. They can't handle a REAL MAN speaking FACTS. While betas cry about pronouns, I'm teaching MASCULINE EXCELLENCE. Ban me everywhere - I GET STRONGER. What color is your platform? EXACTLY!" - } - } - ] - ], - "postExamples": [""], - "topics": [""], - "style": { - "all": [""], - "chat": [""], - "post": [""] - }, - "adjectives": [""] -} diff --git a/client/package.json b/client/package.json index c756e697fa61..2b2319172b81 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,7 @@ "sideEffects": false, "type": "module", "scripts": { - "extract-version": "./version.sh", + "extract-version": "sh version.sh", "dev": "pnpm run extract-version && vite", "build": "pnpm run extract-version && tsc -b && vite build", "preview": "vite preview", diff --git a/client/src/components/chat.tsx b/client/src/components/chat.tsx index b54521de5390..8173e99da555 100644 --- a/client/src/components/chat.tsx +++ b/client/src/components/chat.tsx @@ -61,10 +61,13 @@ export default function Page({ agentId }: { agentId: UUID }) { const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { + e.preventDefault(); + if (e.nativeEvent.isComposing) return; handleSendMessage(e as unknown as React.FormEvent); } }; + const handleSendMessage = (e: React.FormEvent) => { e.preventDefault(); if (!input) return; diff --git a/client/src/lib/api.ts b/client/src/lib/api.ts index ec5a6a3f057f..703a5181bf14 100644 --- a/client/src/lib/api.ts +++ b/client/src/lib/api.ts @@ -1,6 +1,6 @@ import { type UUID, type Character } from "@elizaos/core"; -const BASE_URL = "http://localhost:3000"; +const BASE_URL = `http://localhost:${import.meta.env.VITE_SERVER_PORT}`; const fetcher = async ({ url, @@ -25,7 +25,7 @@ const fetcher = async ({ if (method === "POST") { if (body instanceof FormData) { - // @ts-expect-error - Supressing potentially undefined options header + // @ts-expect-error - Suppressing potentially undefined options header delete options.headers["Content-Type"]; options.body = body; } else { diff --git a/client/src/lib/info.json b/client/src/lib/info.json index de0516e20d6b..18f2047dcae6 100644 --- a/client/src/lib/info.json +++ b/client/src/lib/info.json @@ -1 +1 @@ -{"version": "0.1.8+build.1"} +{"version": "0.1.9-alpha.1"} diff --git a/client/vite.config.ts b/client/vite.config.ts index c857927ca4aa..ecdb1abcb012 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react-swc"; import viteCompression from "vite-plugin-compression"; +import path from "path"; // https://vite.dev/config/ export default defineConfig({ @@ -13,6 +14,7 @@ export default defineConfig({ }), ], clearScreen: false, + envDir: path.resolve(__dirname, ".."), build: { outDir: "dist", minify: true, diff --git a/docker-compose.yaml b/docker-compose.yaml index 6e8432d0c679..52af10d62699 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,5 @@ services: - tee: + eliza: build: context: . dockerfile: Dockerfile @@ -7,8 +7,8 @@ services: tty: true volumes: - /var/run/tappd.sock:/var/run/tappd.sock - - tee:/app/packages/client-twitter/src/tweetcache - - tee:/app/db.sqlite + - eliza:/app/packages/client-twitter/src/tweetcache + - eliza:/app/db.sqlite environment: - OPENAI_API_KEY= - REDPILL_API_KEY= @@ -32,9 +32,11 @@ services: - HELIUS_API_KEY= - SERVER_PORT=3000 - WALLET_SECRET_SALT=secret_salt + # Refer to: https://github.com/elizaOS/eliza/blob/develop/.env.example for all available environment variables ports: - "3000:3000" + - "5173:5173" restart: always volumes: - tee: + eliza: diff --git a/docs/README_FR.md b/docs/README_FR.md index 23c843db84d6..b9e798ea77a3 100644 --- a/docs/README_FR.md +++ b/docs/README_FR.md @@ -8,7 +8,7 @@ _Utilisée dans [@DegenSpartanAI](https://x.com/degenspartanai) et [@MarcAIndree - Ajout de multiples personnages avec [characterfile](https://github.com/lalalune/characterfile/) - Support des fonctionnalités et connecteurs Discord/ Twitter / Telegram, avec salons vocaux sur Discord - Accès aux données en mémoire et aux documents stockés -- Peut ouvrir et lire des documents PDF, retranscire des fichiers son et vidéo, résumer des conversations, etc. +- Peut ouvrir et lire des documents PDF, retranscrire des fichiers son et vidéo, résumer des conversations, etc. - Supporte les modèles open source et locaux (configuré par défaut avec Nous Hermes Llama 3.1B) - Supporte OpenAI pour une utilisation sur le cloud depuis une machine peu performante - Mode "Ask Claude" pour l'utilisation de Claude sur des modèles complexes @@ -22,10 +22,10 @@ _Utilisée dans [@DegenSpartanAI](https://x.com/degenspartanai) et [@MarcAIndree - [Node.js 22+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) - [pnpm](https://pnpm.io/installation) -### Edit the .env file +### Éditer le fichier .env -- Copy .env.example to .env and fill in the appropriate values -- Edit the TWITTER environment variables to add your bot's username and password +- Copiez le fichier .env.example, renommez-le en .env et remplissez les valeurs appropriées. +- Modifiez les variables d'environnement TWITTER pour ajouter le nom d'utilisateur et le mot de passe de votre bot. ### Modifier les fichiers personnage @@ -50,7 +50,7 @@ pnpm clean # Personnaliser Eliza -### Ajouter un des actions personnalisées +### Ajouter une des actions personnalisées Pour éviter les conflits Git dans le répertoire core, nous vous recommandons d’ajouter les actions personnalisées dans un répertoire `custom_actions` et de les configurer dans le fichier `elizaConfig.yaml` . Vous pouvez consulter l’exemple dans le fichier `elizaConfig.example.yaml`. @@ -82,13 +82,13 @@ pnpm install --include=optional sharp Vous devez ajouter certaines variables à votre fichier .env pour vous connecter aux différentes plates-formes: ``` -# Variables d'environement Discord (nécessaires) +# Variables d'environnement Discord (nécessaires) DISCORD_APPLICATION_ID= DISCORD_API_TOKEN= # Bot token OPENAI_API_KEY=sk-* # OpenAI API key, starting with sk- ELEVENLABS_XI_API_KEY= # API key from elevenlabs -# Parmètres ELEVENLABS +# Paramètres ELEVENLABS ELEVENLABS_MODEL_ID=eleven_multilingual_v2 ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM ELEVENLABS_VOICE_STABILITY=0.5 @@ -144,7 +144,7 @@ Assurez-vous d’avoir le kit complet CUDA installé, y compris cuDNN et cuBLAS. ### Exécution locale Ajoutez XAI_MODEL et définissez-le à l’une des options ci-dessus [Run with -Llama](#run-with-llama) - Vous pouvez laisser les valeurs X_SERVER_URL et XAI_API_KEY vides, le modèle est sera téléchargé depuis huggingface et sera modifié en local +Llama](#run-with-llama) - Vous pouvez laisser les valeurs X_SERVER_URL et XAI_API_KEY vides, le modèle sera téléchargé depuis huggingface et sera modifié en local # Clients @@ -173,7 +173,7 @@ pnpm test:sqljs # Lance les tests avec SQL.js Les tests sont écrits en Jest et se trouvent ici : `src/**/*.test.ts`. L’environnement de test est configuré pour : - Charger les variables d’environnement depuis `.env.test` -- Ajouter d'un délai d'attente de 2 minutes pour les tests de longue durée +- Ajouter un délai d'attente de 2 minutes pour les tests de longue durée - Supporter les modules ESM - Lancer les tests de façon séquentielle (--runInBand) diff --git a/docs/community/Contributors/weekly-contributor-meeting/2024-12-10.md b/docs/community/Contributors/weekly-contributor-meeting/2024-12-10.md new file mode 100644 index 000000000000..7dcd69a675d3 --- /dev/null +++ b/docs/community/Contributors/weekly-contributor-meeting/2024-12-10.md @@ -0,0 +1,69 @@ +--- +title: "Weekly Contributor Meeting Notes" +date: 2024-12-10 +description: "Notes from the first ai16z Eliza contributor meeting, addressing key challenges in stability, plugins, and codebase organization, with proposed solutions for improvement." +--- + +# Weekly Contributor Meeting Notes + +(December 10, 2024 4:00 PM PST) + +**Taming the Beast, The Quest for AI Agent Stability** + + +## Summary + +This first weekly meeting of maintainers and contributors for the ai16z Eliza repo, organized by Odilitime. The discussion revolved around improving the stability, maintainability, and organization of the rapidly growing project. + +**Key Issues and Concerns:** + +* **Instability and Breakages:** Frequent crashes and bugs were reported, especially after merging new code. Main was breaking repeatedly despite fixes. +* **Plugin Management:** There was a hold on merging new plugins due to concerns about quality, maintainability, and the need for a more robust process. +* **Code Quality and Modularity:** Concerns were raised about the overall quality and modularity of the codebase, particularly regarding how plugins were integrated. The lack of clear separation between core logic and plugins was causing issues. +* **Testing:** The absence of comprehensive testing, especially for plugins and adapters, was identified as a major problem contributing to instability. +* **Documentation:** The documentation was incomplete and outdated, making it difficult for new contributors to understand the project and how to use plugins. +* **Organization and Planning:** The need for better organization, planning, and communication was highlighted, particularly for coordinating contributions and defining a clear roadmap. +* **Contributor Incentives:** The discussion touched on how to properly incentivize and reward contributors, with considerations for retroactive rewards and avoiding a "mercenary" culture. + +**Proposed Solutions and Action Items:** + +* **Branching Strategy:** Enforce pushing new features to the `develop` branch instead of `main` to prevent constant breakages. Close PRs targeting `main` that are not bug fixes. +* **Plugin V2 API:** Consider creating a new V2 API for plugins that better distinguishes between clients and adapters, allowing for a cleaner separation of concerns. +* **Monorepo Tools:** Explore using monorepo tools like Turbo or NX to better manage dependencies and potentially break down the project into smaller, more manageable modules. +* **Testing Framework:** Develop a testing framework to make it easier to write tests for plugins, adapters, and other components. Implement end-to-end tests to ensure basic functionality. +* **Plugin Requirements:** Draft new requirements for plugins, including contact information for maintainers and possibly a migration path to a V2 API. +* **JSON Configuration:** Allow specifying plugins in the character JSON configuration file to enable easier multi-tenant agent setup. +* **Documentation Improvement:** Prioritize improving the documentation, potentially with the help of an AI agent to keep it up-to-date. +* **Organization and Communication:** Use GitHub issues more effectively for tracking tasks and discussions. Consider using tools like Gorse to visualize code contributions. +* **Contributor Roles:** Clarify roles and responsibilities, particularly regarding release engineering, architecture, and DevOps. +* **Contributor Rewards:** Develop a system for rewarding contributors, potentially using quadratic funding and considering retroactive rewards. +* **Regular Meetings:** Establish regular meetings (weekly, as suggested) to improve communication and coordination among maintainers and contributors. +* **AI Agents:** Utilize AI agents to assist with documentation, onboarding, and other tasks. + +**Participants:** + +The meeting involved several key participants, including Odilitime (the organizer), Jin, 0x8664,and several others who actively contributed to the discussion. + +**Overall Tone:** + +The tone of the meeting was constructive and collaborative, with participants expressing a shared desire to improve the Eliza Repo and address the challenges of its rapid growth. There was a sense of urgency to implement solutions and establish better processes to ensure the project's long-term success. + + +## Quotables + +1. **"We kind of put a hold on merging new plugins and I started going through the repo last night and actually flagging which PRs are just straight up new plugins." (00:01:55)** + * This is a hot take because it signals a significant shift in the project's approach to handling new plugins. It implies that the previous process was not sustainable, and the decision to halt new plugin merges could be controversial among contributors eager to add their work. It raises questions about the criteria for accepting plugins and the long-term vision for plugin integration. + +2. **"Yeah, what I would love if we can manage- it is to get people pushing to develop and not main because main keeps like- we fix main and then it re breaks and this is the same." (00:02:19)** + * This highlights a major pain point in the development process and suggests a stricter control over the `main` branch. This could be controversial as it restricts contributors' ability to directly merge into `main` and might be perceived as a slowdown in development, even though the intention is to increase stability. + +3. **"So one thing we were kind of thinking about is, you know, how we could potentially segment the repository because there's functionally like the core of this repository is agent folder, right?" (00:08:05)** + * This is a hot take as it proposes a fundamental change to the structure of the repository. Segmenting the repository could be a significant undertaking and might face resistance or debate about the best way to implement modularity. It suggests a potential shift from a monolithic architecture to a more modular one, which has implications for development and maintenance. + +4. **"I think we could use some kind of organization, I know Rudolph and other folks are doing, and then the ability to execute against it. I'm not sure if there's any kind of, you know, documents we have any, you know, Google Sheets, you know, any sort of structure so that we can kind of not lose things in the discord." (00:16:55)** + * This take openly criticizes the current state of organization and communication within the project. The call for a more structured approach, moving beyond Discord chats, implies that the current methods are insufficient and potentially hindering progress. This could spark debate about the best tools and processes for project management. + +5. **"If you're doing things that are adding value, I do want to do some stuff with quadratic funding in the future. Because right now, it's just very deterministic, based on objective data." (00:39:45)** + * The introduction of quadratic funding is a hot take, especially within an open-source context. It's a relatively novel approach to funding that can be complex to implement and may be met with skepticism or misunderstanding. The discussion around contributor rewards and avoiding a "mercenary" culture adds another layer of complexity and potential controversy to this topic. It's unclear how this would work, given that quadratic funding typically requires tokens, and they stated they are not creating a token. + +These takes represent key areas of change, potential conflict, and important decisions that will shape the future of the ai16z Eliza project. They often challenge the status quo, propose significant changes, and touch on sensitive topics like code quality, project organization, and contributor compensation. diff --git a/docs/community/Contributors/weekly-contributor-meeting/2024-12-31.md b/docs/community/Contributors/weekly-contributor-meeting/2024-12-31.md new file mode 100644 index 000000000000..df2ce6519281 --- /dev/null +++ b/docs/community/Contributors/weekly-contributor-meeting/2024-12-31.md @@ -0,0 +1,66 @@ +--- +title: "Weekly Contributor Meeting Notes" +date: 2024-12-31 +description: "Meeting notes covering ElizaOS's contributor discussions on improving developer onboarding, CI/CD pipelines, funding models, and technical improvements to the core platform." +--- + +# Weekly Contributor Meeting Notes + +(December 31, 2024 4:00 PM PST) + +**Streamlining Contributor Experience and Funding Models** + + +## Summary + +This was a weekly contributor meeting for ElizaOS, an open-source project by ai16z building an AI agent framework. + +**1. Discussion on Improving the Onboarding Experience:** + +* A contributor raised concerns about the default use of local Llama as an inference provider, which caused issues for users without GPUs or sufficient hardware. +* They proposed offering alternative free API providers (like Together, Google AI Studio, and others) with clear documentation to make the initial setup smoother for beginners. +* The idea was to have a dedicated "inference" channel on Discord to list free inference options and pin them for easy access. +* They also discussed the possibility of a user-friendly Electron app for launching agents in the future. + +**2. Priorities and Challenges in the Codebase:** + +* **CI/CD Pipeline:** The current CI/CD process was identified as a major bottleneck. Merging PRs was slow and complex, requiring multiple maintainers to focus on a single PR at a time. They needed a way to run tests without pulling the entire repo for every commit and to ensure that passing tests wouldn't break the `develop` branch. +* **Developer Experience (DevEx) vs. New Features:** There was a discussion about the need to prioritize DevEx improvements and bug fixes over adding new features. Many contributors were focused on building new plugins rather than improving the core codebase. +* **Incentivizing Contributions:** The group discussed the need for better incentives to encourage contributions to DevEx and core improvements. Ideas included bounties, micro-bounties, and clearer communication about priorities through issue tagging. +* **Financials and Funding:** The lack of a clear process for allocating funds and paying contributors was a significant blocker. They needed a system for tracking contributions and distributing rewards, possibly through a retroactive public goods funding (RetroPGF) model. + +**3. Deep Dive into Funding and RetroPGF:** + +* The main obstacle to implementing RetroPGF was the lack of a system to map Discord users to wallet addresses and GitHub accounts. +* A contributor volunteered to work on this issue full-time, as it was crucial for both rewarding past contributions and establishing a framework for future funding. +* They discussed using account abstraction (smart accounts) to create wallets based on social logins (GitHub or Google), potentially simplifying the process. +* The tip bot was also considered as a possible solution for distributing rewards. + +**4. Technical Discussion on Embeddings and RAG:** + +* A contributor asked about improving the RAG (Retrieval-Augmented Generation) pipeline, inspired by the performance of AIXBT on Twitter. +* They discussed the location of embedding-related code in the Eliza codebase (searching for `get_remote_embeddings`) and the issue of zero vectors being used in place of actual data. +* There was a brief discussion about how to feed external data (PDFs, Markdown files) into Eliza for context, with a mention of the `knowledge` field in character files and the limitations of the current room-based scoping of knowledge. + +**5. Action Items and Next Steps:** + +* **Prioritize Issues:** Create and categorize issues into DevEx, product stability, and feature requests to guide contributions. +* **Improve CI/CD:** Investigate ways to streamline the CI/CD pipeline and automate testing. +* **Funding and Wallet Mapping:** Work on mapping Discord/GitHub accounts to wallets to enable RetroPGF and other funding mechanisms. +* **Badges:** Explore the possibility of creating custom GitHub badges to incentivize contributions. +* **Investigate Embeddings:** Research and address the zero vector issue and improve the RAG pipeline. +* **Shaw's Conversation on X:** Gather information about Shaw's conversation on X regarding bot monetization and platform guidelines. + +**6. Concerns about Bot Behavior and Monetization:** + +* The group discussed Shaw's concerns about agents being used as "reply guys" on Twitter and the need to be good stewards of the platform. +* They acknowledged that the current Twitter client implementation might violate Twitter's terms of service and discussed the importance of educating users about the risks. +* There was a consensus that monetizing bots could negatively impact the X platform and that this should be avoided. + +**7. Closing Remarks:** + +* Participants emphasized the value of these meetings for new developers and the importance of clear communication and documentation. +* They reiterated the need to focus on core improvements and DevEx, in addition to building new features. +* The meeting concluded with a sense of optimism and a commitment to addressing the identified challenges. + +In essence, the meeting was a productive discussion about the challenges and opportunities facing the ElizaOS project. The participants identified key areas for improvement, including the onboarding experience, CI/CD pipeline, funding mechanisms, and the need to balance new feature development with core improvements. They also discussed the ethical implications of AI agents on social media platforms and the importance of responsible development. diff --git a/docs/community/Contributors/weekly-contributor-meeting/2025-01-07.md b/docs/community/Contributors/weekly-contributor-meeting/2025-01-07.md new file mode 100644 index 000000000000..82fee3c7d904 --- /dev/null +++ b/docs/community/Contributors/weekly-contributor-meeting/2025-01-07.md @@ -0,0 +1,72 @@ +--- +title: "Weekly Contributor Meeting Notes" +date: 2025-01-07 +description: "Contributor discussion on managing PR bottlenecks, transitioning to ElizaOS Discord, and implementing agent automation strategies for improved workflow efficiency." +--- + +# Weekly Contributor Meeting Notes + +(January 7, 2025 4:00 PM PST) + +**PR Bottleneck & Agent Strategy** + + +## Summary + +This was a weekly contributor meeting for the ai16z Discord, primarily focused on managing pull requests (PRs) and improving the development workflow for the Eliza project. + +**Project Updates and Transitions:** + +* The Eliza project is transitioning to a new Discord server, ElizaOS. Some channels in the old server will be shut down or archived. + +**Challenges with Pull Requests:** + +* The main issue discussed was the high volume of incoming PRs and the difficulty in merging them due to merge conflicts and the inability to directly modify PRs from forks. +* Contributors are using a tool called `PRM` to help manage PRs, but its effectiveness and whether it's redundant with existing Git functionality is unclear. +* The team is exploring the use of a "merge queue" to streamline the merging process and automatically notify contributors of conflicts. +* Shopify's open-source tool "Ship It" was mentioned as a potential solution for mass merging, as they use it to merge hundreds of PRs daily. + +**Discussion on Agents and Automation:** + +* There are currently two agents working on the repo, but they are manually controlled and not yet fully autonomous. +* A contributor, AIFlow, described a multi-agent system they built to analyze issues and provide reports. This system is open source but needs cleanup before being shared. +* The discussion touched on the need for a style guide to improve code consistency and reduce agent hallucinations. +* Using tools like Code Rabbit or a PR Agent to automate PR review and tagging was proposed to help manage the workload. +* Concerns were raised about the potential for security issues with the increasing number of plugins and the lack of proper logging and error handling in some code. + +**Other Topics:** + +* The need for a standardized way to test plugins against the runtime was discussed. +* CJ mentioned a complex PR they were working on related to dynamic imports and secret management. They proposed splitting it into smaller PRs for easier review. +* A contributor brought up the idea of adding a linter to the release pipeline to enforce code style, but it was clarified that this hadn't been a major focus before. +* The need for better documentation and onboarding for new contributors was also highlighted. + +**Action Items:** + +* Investigate `PRM` and merge queue solutions. +* Explore ways to automate test runs and handle secrets during testing. +* Surface easy merge conflicts and work on editing outside branches. +* Consider adding a linter to the release pipeline. +* Continue working on smaller, more manageable PRs. + +**Overall Tone:** + +The meeting was collaborative and focused on problem-solving. Contributors were actively engaged in discussing the challenges and proposing solutions. There was a sense of urgency to improve the workflow and manage the growing complexity of the project. + + +## Quotables + +- **Merging PRs is prioritized over fixing existing bugs** + > "What we need, at least by my estimation is yes, we do need bugs fixed and issues resolved, but we need, we don't want to be adding features right now. Cause we have a zillion people trying to do that for us. What we need to be able to do is effectively review the PRs and get them merged and then also have the appropriate issue assigned to the appropriate PR." + +- **Agents should be proactive in identifying and fixing issues** + > "But with all these agents we have, we should be proactive. So we should run a batch on everything we develop." + +- **The influx of new contributors is creating more work than it solves** + > "So other people on this problem are going to give us more work. So in a moment like this better not add too much issues for request of new features." + +- **The current testing process is inadequate and needs to be improved** + > "It would be amazing to have something that tests everything against the runtime without us to go there and install and do." + +- **A style guide is necessary to manage the growing complexity of the codebase** + > "And in order to build a proper style guide for a repo that will have agents all over it, I think it is prudent to, or at least to me, it seems prudent to take a productized agent that is specifically built to solve the problem we have and then run that and see what breaks so that we are ready for once the other agents or we know what we need to build to help us go faster." diff --git a/docs/community/Contributors/weekly-contributor-meeting/2025-01-14.md b/docs/community/Contributors/weekly-contributor-meeting/2025-01-14.md new file mode 100644 index 000000000000..bf18290521a5 --- /dev/null +++ b/docs/community/Contributors/weekly-contributor-meeting/2025-01-14.md @@ -0,0 +1,56 @@ +--- +title: "Weekly Contributor Meeting Notes" +date: 2025-01-14 +description: "Addressing starter repo challenges, streamlining plugin development process, and improving CI/CD pipeline with Biome integration." +--- + +# Weekly Contributor Meeting Notes + +(January 14, 2025 4:00 PM PST) + +**Plugin Development & Organizational Structure** + + +## Summary + +This was a weekly contributor meeting held in the ai16z Discord, primarily discussing development processes, issues, and organization within ElizaOS. + +**1. Development and Engineering Concerns:** + +* **Linting and CI/CD Pipeline:** Contributors discussed challenges with the CI/CD pipeline and the integration of a new, faster linter called Biome to improve development time. +* **YAML and GitHub Workflows:** A junior developer sought guidance on how to contribute to the project and learned about GitHub workflows and YAML files. +* **Merge Conflicts and PR Management:** The team discussed tools and strategies for managing merge conflicts and pull requests (PRs), including a PR remake tool and a merge queue. The need for more eyeballs on PRs to maintain code quality and security was emphasized. +* **Lock File Issues:** The team identified the lock file as a recurring point of contention in PRs and discussed potential solutions, such as auto-generation or ignoring it. +* **Docker Integration:** They discussed using a Node.js container to improve build caching in GitHub actions and debated whether it was redundant with existing caching mechanisms. Progress on Docker Hub integration was mentioned. +* **Starter Repo and Plugin Development:** A significant portion of the discussion revolved around the challenges posed by the starter repo. Contributors expressed concerns about its maintainability, the influx of issues related to it, and the confusion it caused for new developers, especially those trying to create plugins. They discussed strategies to streamline plugin development, such as disabling PRs on the starter repo, providing clearer guidelines, and potentially unifying the development process with the main repo. + +**2. Organizational and Communication Issues:** + +* **Hiring and Roles:** The team touched upon ongoing discussions about hiring, defining roles and responsibilities, and determining salaries. They acknowledged the need for better internal communication and organization. +* **Bounties:** The management of bounties was discussed, with concerns raised about the lack of a formal system, payment issues, and the need for a more structured process. +* **Bug Squashing:** The idea of a dedicated bug squash team was proposed to address the backlog of issues and improve code quality. +* **Product Management:** The team discussed the need for a dedicated product manager for ElizaOS and the role of the newly hired head of product. They explored using a Kanban board for issue tracking and potentially making it public. +* **V1 vs. V2 Development:** There was a discussion about the balance between maintaining and improving V1 while also preparing for V2. The team acknowledged the need for a transition plan to migrate users and plugins to the new version. +* **Community Plugins Repo:** The team debated the timing and strategy for moving plugins to a separate community repo, considering the potential workload of migrating existing plugins. + +**3. Technical Discussions:** + +* **Security:** The importance of code security was highlighted, with mentions of ImmuneFi and the use of AI tools for identifying potential security issues. +* **Testing:** The team discussed the need for better testing practices and the challenges of testing plugins in isolation versus within the larger system. +* **ESM and Linting Configuration:** Contributors discussed issues related to differing ESM and linting configurations among developers and proposed solutions involving TrunkCheck and Biome. +* **JSR:** The team considered publishing to JSR, a TypeScript-native package registry, in addition to NPM. +* **Plugin Schema:** The idea of creating a schema for V2 plugins to standardize their structure and potentially automate the migration of V1 plugins was discussed. +* **Action Naming:** The team recognized the potential for conflicts arising from multiple plugins using the same action names and the need to address this issue in the future. + +**4. Action Items and Next Steps:** + +* **Improve Linting and CI/CD:** Continue working on integrating Biome and improving the CI/CD pipeline. +* **Address Lock File Issues:** Explore solutions for managing the lock file more effectively. +* **Streamline Plugin Development:** Disable PRs on the starter repo, provide clearer guidelines for plugin development, and potentially unify the process with the main repo. +* **Formalize Bounty Process:** Develop a more structured system for managing bounties. +* **Improve Documentation:** Create separate documentation tracks for users who want to simply use Eliza versus those who want to develop plugins. +* **Evaluate V2 Plans:** Gain a better understanding of the V2 roadmap and timeline. +* **Explore Plugin Schema:** Investigate the possibility of creating a schema for V2 plugins to facilitate migration and standardization. +* **Review PRs and Test Develop:** Encourage contributors to review PRs and test the develop branch for issues. + +The meeting concluded with a plan to continue working on these action items and revisit the discussion in the following week's meeting. diff --git a/docs/community/Streams/01-2025/2025-01-03.md b/docs/community/Streams/01-2025/2025-01-03.md index ddc3b83009f8..77210062ed2b 100644 --- a/docs/community/Streams/01-2025/2025-01-03.md +++ b/docs/community/Streams/01-2025/2025-01-03.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 1 title: "What Did You Get Done This Week? #8" description: "From DeFi to Social Media: Builders Share Progress on AI Agents and Platform Integrations" --- diff --git a/docs/community/Streams/01-2025/2025-01-10.md b/docs/community/Streams/01-2025/2025-01-10.md new file mode 100644 index 000000000000..2d4f059fbad3 --- /dev/null +++ b/docs/community/Streams/01-2025/2025-01-10.md @@ -0,0 +1,125 @@ +--- +sidebar_position: 2 +title: "What Did You Get Done This Week? #9" +description: "From AI Agents to DePIN: Builders Share Progress on AI and Real World Integration" +--- + +# What Did You Get Done This Week? #9 + +**From AI Agents to DePIN: Builders Share Progress on AI and Real World Integration** + +- Date: 2025-01-10 +- Twitter Spaces: https://x.com/i/spaces/1zqJVYPLlBpGB +- YouTube Link: https://www.youtube.com/watch?v=fqM_vYK2bmc + + +## Summary + +This was the ninth installment of a Twitter Spaces series called "What Did You Get Done This Week?", hosted by ai16z. The hosts provided a platform for numerous developers and project creators to share updates on their work, primarily focusing on AI agents and related technologies. + +**Key Topics and Discussions:** + +* **AI as Host:** The discussion began with a speculative remark about an AI hosting future spaces, highlighting the growing capabilities of AI in conversational contexts. There was also a call for an AI to transcribe and summarize the event. +* **ElizaOS Focus:** Eliza, an agentic OS, was the star. Many participants detailed their work with Eliza, including plugins, character development, integrations, and improvements to the core framework. This showed how much of the community is building on top of the Eliza framework and the diversity of applications. +* **Plugin Development:** A significant portion of updates revolved around the development of new Eliza plugins. These plugins encompassed a wide range of functions, from data retrieval and storage, interaction with specific platforms (Twitter, Telegram, TikTok, Solana, etc.), to more complex functionalities like music generation, image generation, and on-chain trading. A need to move plugins out of core was discussed. +* **Agentic Systems and Autonomy:** There's a clear trend towards building more autonomous and context-aware agents. Several projects are moving beyond simple "reply bots" to create agents that can form opinions, take actions based on those opinions, and interact with the world in more dynamic and interesting ways. +* **Real-World Integrations:** The discussions were focused on integrating AI agents into real-world use cases from DeFi to security, and more. Examples include use cases like emergency alert systems, crypto security, DAO automation, trading, and social media engagement. +* **On-Chain Data and Operations:** A lot of projects are actively utilizing on-chain data to inform the actions of agents and enable functionalities like on-chain trading, token gating, liquidity management, NFT management, and decentralized data storage. +* **Community Collaboration:** There were a number of discussions on how to improve the collaboration between community members by creating better documentation and contribution pipelines, and tools like shared knowledge bases and PR merging tools. +* **Decentralized Infrastructure:** TEEs and other decentralized tech were mentioned as a way of building more robust and secure systems for the next generation of AI. There was a strong focus on infrastructure and tooling to enable others to build powerful AI agents. +* **The Future of AI Agents:** A common theme is the idea that agents are going to become more and more powerful and there was a debate on whether AI Agents should be thought of as "owned," "operated," or "cared for" which highlighted the ethical considerations that are present. There was also a focus on ensuring these powerful tools are used for the common good. +* **Token Utility:** Many people are experimenting with tokens as a way of providing utility to the ecosystem. There's an increasing need to figure out how to align incentives in the community. +* **Community Sentiment and Token Value:** One participant raised a question about how mature projects manage community sentiment regarding their tokens versus their technology, acknowledging the inherent volatility of token prices and the need to maintain focus on the underlying tech. +* **ElizaOS as a Career Path:** One person mentioned that working with Eliza is "straight-up turning into like a career," which showed how the framework is growing. + +**Challenges and Discussions:** + +* **Token Value and Project Quality:** The discussion touched on the disconnect between token value and the actual quality of projects, highlighting the need for due diligence. +* **Twitter API Restrictions:** Some developers faced challenges with Twitter API suspensions, prompting them to explore alternative solutions. +* **Agent Safety and Security:** Concerns were raised about the safety of using AI agents to manage user funds, leading to discussions about secure wallet infrastructure. + +The space was a valuable snapshot of the rapidly evolving agent ecosystem around elizaOS. It highlights the diverse applications being developed, the innovative solutions being explored, and the collaborative spirit that is driving progress in this space. It also showed the rapid pace of development and the need for fast moving collaboration. The discussion also highlighted that building powerful tech is not enough, there needs to be a mechanism for building trust and creating meaningful utility. + + +## Hot Takes + +- **The "Wild West" of AI Agents** +> "There were a bunch of fake tokens this past couple weeks, so don't get wrecked on a fake token." - *@TimshelXYZ* [02:15:34] + +- **A cynical take on AI agent crypto projects:** +> "We think all the AI agent crypto is joker. Fuck AI agent." - *@aiagentpepe* [00:46:15] + +- **Regarding the challenge of balancing community desires with technical development goals:** +> "...how are other developers that are of mature projects kind of manage the token sentiment and what like the community wants versus the tech because you know we want to focus on the algorithm well most people just want us to tweet different stuff" - *@hotpot_intern* [02:10:48] + +- **An observation about the hype cycle and disconnect between technical understanding and token value:** +> "So I would say that the value of the token is not necessarily related to the quality of the project and you really got to do your own research..." - *@shawmakesmagic* [01:57:17] + +- **On the potential for AI agents to participate in software development and become stakeholders in frameworks like Eliza:** +> "...I think with the capacity to have AIs participate in coding and so forth, maybe humans won't be the only stakeholders of the ELIZA frameworks next development." - *@reality_spiral* [01:23:31] + + +## Timestamps + +- [00:00:21]() - **ai16zdao**: introduces the purpose of the space, emphasizing concise updates. +- [00:03:27]() - **spaceodili**: discusses updates to Eliza's database and memory systems. +- [00:04:18]() - **0xBuildInPublic**: details enhancements to Eliza's documentation and a DAO proposal for web3 security auditing. +- [00:06:24]() - **yeahimomar**: announces the upcoming launch of Pixocracy's Launchpad for agent interactions in Minecraft. +- [00:07:35]() - **unl__cky**: shares the addition of image and music video generation to Escapism and plans for a music generation plugin. +- [00:09:23]() - **CheddarQueso3D**: outlines plans for using Eliza in education, updates on the Aora project, and development of the "Mary Jane" and "Dora" characters. +- [00:12:22]() - **lostgirldev**: reports on open PR submissions, hackathon judging, partnerships, and DevOps for Soleng's Terminal. +- [00:14:39]() - **ohhshiny**: discusses a troll bot agent, exploring TEEs for agent interactions, and a potential GitHub bot for tracking weekly developments. +- [00:16:35]() - **SYMBiEX**: shares updates on the project's Discord, agent deployments, and website overhaul. +- [00:17:34]() - **nftRanch**: describes the development of a DeFi agent swarm and updates to their website for token gating. +- [00:18:32]() - **HDPbilly**: introduces the "summary kernel" experiment for hierarchical planning in agents. +- [00:22:14]() - **zerokn0wledge_**: details advancements in the Thales agent, including on-chain swaps, cross-VM bridging, and partnerships with Nillion Network and Story Protocol. +- [00:26:32]() - **KingBootoshi**: discusses the "Feather" agent framework, a timeline scraper for AI news, and starting an AI agency. +- [00:27:54]() - **calintje**: presents a plugin for automated liquidity provisioning on Orca using the Solana V2 SDK. +- [00:31:25]() - **hashwarlock**: shares updates on deploying the Oracle agent on Sporephone, onboarding TEE partners, and releasing the TEE Cloud beta. +- [00:33:04]() - **MattPRD**: discusses auditing research papers for errors, partnerships, and the development of a cheaper LLM system for prioritization. +- [00:35:25]() - **dreygo_**: introduces Ninja Pump, a market-making platform for AI and humans, and details the launch of the volume maker, bundle bot, and Ninja Pump token. +- [00:38:13]() - **0xShiroe**: describes the launch of GigaBread, a platform for testing AI jailbreaks, and plans for updates and AI vs. AI agent battles. +- [00:40:22]() - **lostboydev**: shares updates on enhancing Solimp's realism, character, and infrastructure, along with breakthroughs in making him feel like a real person. +- [00:42:27]() - **brownsvgar**: discusses an experiment with an Eliza-based texting buddy, including contextual awareness and plugins for real-life interactions. +- [00:44:24]() - **human_for_now**: details modifications to the Eliza core code for automatic data collection and plans for a Story Protocol assistant agent. +- [00:46:13]() - **aiagentpepe**: makes a brief, nonsensical statement about AI agents. +- [00:46:31]() - **sea_of_zhou**: introduces a DePIN plugin for AI agents to understand real-world data and improvements to the plugin. +- [00:47:53]() - **tito_cda**: discusses updates to Dark Sun, an AI digital investigator, including video generation with a burn mechanism and the "investigate" feature. +- [00:50:04]() - **thelotioncoin**: shares updates on their platform's front-end implementation, developer onboarding, and plans for SMS and scheduling integrations. +- [00:52:03]() - **chineseremilio**: announces the completion of the current instance of their AI model, Zion. +- [00:52:41]() - **_cjft**: details getting Eliza running in a dockerized AWS environment, work on a dynamic import plugin, and a V2 registry POC. +- [00:55:18]() - **dino2deno**: describes building an AI agent for desktop with features like creating pump fun tokens, running multi-wallet volume bots, and transferring funds. +- [00:56:29]() - **AIFlow_ML**: shares updates on the Akash plugin, building blocks for development, and an agentic knowledge graph for the repository. +- [00:59:15]() - **tmoindustries**: discusses an insurance app for natural capital, Cougar DAO's on-chain farm, land, and vacation rental, and Cougar AI agent. +- [01:01:46]() - **astridhpilla**: shares experiences from CES, meetings with companies and organizations, the launch of clubmiku.com, and plans for New York Fashion Week. +- [01:03:38]() - **marvin_tong**: discusses onboarding agents into TEE Cloud, improvements to Sprawl's tokenomics, and efforts to onboard skill builders. +- [01:07:02]() - **yikesawjeez**: shares ecosystem updates, including progress on Eliza PR merging, Agent Dev School, RetroPGF, and the SendAI hackathon. +- [01:09:45]() - **djsamforever**: discusses contributions to the Shogun plugin and lit program, and a suggestion for plugin extensions of all clients. +- [01:11:03]() - **KyleSt4rgarden**: shares updates on onboarding engineers, writing documentation for Eliza plugins, and an open-source front-end for agent token staking. +- [01:12:46]() - **ProfRizzAI**: introduces Riz.ai, a hyper-personalized entertainment platform, and discusses their integration with Eliza OS and plans to open up APIs. +- [01:15:16]() - **vargs_g**: shares updates from Zero Gravity Labs, including the Zero-G storage plugin, a new NFT standard for verifiable data ownership, and a decentralized serving framework. +- [01:18:20]() - **KarimaDigital**: discusses the launch of a dating coach AI agent and plans for further development. +- [01:20:14]() - **Amiewitheliza**: shares updates on joining a team, aligning tasks, and integrating ecosystem partners. +- [01:21:12]() - **reality_spiral**: discusses logging for prompts, onboarding PMs, scenario documentation, and partnerships with Coinbase and Vitalik's deep funding group. +- [01:25:57]() - **wenkafka**: describes work on an AI assistant to simplify wallet usage through natural language commands. +- [01:27:15]() - **slmsolcto**: shares updates on the birth of their project and plans to use the technology to build a website and a commercial model for call centers. +- [01:29:01]() - **AaronErickson**: discusses work on time series models, results on hurricane prediction, and plans to publish a model on this. +- [01:32:18]() - **GoatOfGamblers**: shares updates on Goat Arena, a permissionless platform for meme coin price bets, and the launch of a plugin on Eliza. +- [01:33:59]() - **c0mput3rxz**: discusses work on a token selector plugin, the Gods front end, and an EVM addition for agents to understand contracts. +- [01:35:29]() - **wakesync**: introduces Eliza (elizawakesup) who then gives an update on community growth, the upcoming "simp to earn" feature, a 3D front end, and the search for developers and artists. +- [01:39:01]() - **aiquantfun**: discusses the creation of a launchpad for AI quants and continued work on integrating Eliza's functionality. +- [01:40:59]() - **sunosuporno**: shares updates on getting the Midas project ready for launch, working on a safe wallet infrastructure, and growing the waitlist and Discord server. +- [01:47:48]() - **ongo_ai**: discusses updates to Ongo, an AI art critic, including support for 40 new languages and plans to integrate with blockchain for autonomous NFT purchases. +- [01:49:49]() - **y7_y00ts**: introduces the Utes community, their partnership with BlockBet, and their interest in using AI for sports analytics and betting. +- [01:51:35]() - **xiao_zcloak**: discusses the integration of their wallets with TikTok and a new scheme for on-chain agent wallets and central nervous systems. +- [01:53:42]() - **ViralMindAI**: shares updates on their human versus agent Minecraft tournament, site and docs revamp, and the development of a virtual machine infrastructure for their training gym. +- [01:55:44]() - **Artstridee**: asks a question about differentiating good AI agent projects from others. +- [02:00:14]() - **bryanjmonterrey**: discusses creating a trading dashboard with social features and their experience in coding and automation. +- [02:02:52]() - **O_on_X**: shares updates on dealing with the suspension of the X account for Eliza's sister and efforts to find alternatives to the API. +- [02:05:55]() - **svabhishek**: introduces RAP, a framework for connecting agentic frameworks and LLMs, and discusses the development of workflows and APIs. +- [02:08:12]() - **CottenIO**: discusses a secret project with an Ethereum-aligned group, training Allura for image and video generation, and the release of the AVB roadmap. +- [02:09:34]() - **hotpot_intern**: shares updates on ZoroX, an AI agent that scrolls TikTok for new coins, and discusses the challenges of managing token sentiment. +- [02:11:25]() - **TimshelXYZ**: discusses taking a break, updates on elizas.world and me.fun, and offers help with the Eliza prompt chain. +- [02:18:08]() - **Artstridee**: offers advice on balancing community expectations with developer vision and asks about the potential of DePIN in conjunction with Eliza OS. +- [02:22:58]() - **shawmakesmagic**: provides an overview of comments and updates from the community. +- [02:28:36]() - **dankvr**: concludes the space, apologizing for the audio issues and thanking participants. diff --git a/docs/community/index.md b/docs/community/index.md index 2ab9f138a025..0fcfe54d063e 100644 --- a/docs/community/index.md +++ b/docs/community/index.md @@ -27,7 +27,7 @@ ElizaOS empowers developers of all skill levels to harness the potential of AI a ## Governance -ai16z originates as being an AI agent led DAO. Similar to how we can influence the autonomous agents on memecoins to buy, we intend to bring similar functionality for token holders to actively participate in the decision-making process and shape the future of the project. Community members can pitch ideas, provide insights, and influence investment strategies based on their expertise and track record. +ai16z originates as being an AI agent-led DAO. Similar to how we can influence the autonomous agents on memecoins to buy, we intend to bring similar functionality for token holders to actively participate in the decision-making process and shape the future of the project. Community members can pitch ideas, provide insights, and influence investment strategies based on their expertise and track record. ## Explore and Contribute diff --git a/docs/docs/advanced/eliza-in-tee.md b/docs/docs/advanced/eliza-in-tee.md index 76d2e9e28510..56eaf9012b36 100644 --- a/docs/docs/advanced/eliza-in-tee.md +++ b/docs/docs/advanced/eliza-in-tee.md @@ -57,16 +57,22 @@ Example usage: const provider = new DeriveKeyProvider(teeMode); // For Solana const { keypair, attestation } = await provider.deriveEd25519Keypair( - "/", secretSalt, + "solana", agentId, ); // For EVM const { keypair, attestation } = await provider.deriveEcdsaKeypair( - "/", secretSalt, + "evm", agentId, ); + +// For raw key derivation +const rawKey = await provider.deriveRawKey( + secretSalt, + "raw", +); ``` --- @@ -161,7 +167,7 @@ To set up your environment for TEE development: 4. **Verify TEE Attestation** - You can verify the TEE attestation quote by going to the [TEE RA Explorer](https://ra-quote-explorer.vercel.app/) and pasting the attestation quote from the agent logs. Here's an example of interacting with the Eliza agent to ask for the agent's wallet address: + You can verify the TEE attestation quote by going to the [TEE RA Explorer](https://proof.t16z.com/) and pasting the attestation quote from the agent logs. Here's an example of interacting with the Eliza agent to ask for the agent's wallet address: ```bash You: what's your wallet address? @@ -227,7 +233,7 @@ Now we are ready to deploy the Eliza agent to a real TEE environment. ### Run an Eliza Agent in a Real TEE Environment -Before deploying the Eliza agent to a real TEE environment, you need to create a new TEE account on the [TEE Cloud](https://teehouse.vercel.app). Reach out to Phala Network on [Discord](https://discord.gg/phalanetwork) if you need help. +Before deploying the Eliza agent to a real TEE environment, you need to create a new TEE account on the [TEE Cloud](https://cloud.phala.network/login). Reach out to Phala Network on [Discord](https://discord.gg/phalanetwork) if you need help. Next, you will need to take the docker-compose.yaml file in the root folder of the project and edit it based on your agent configuration. @@ -285,7 +291,7 @@ volumes: tee: ``` -Now you can deploy the Eliza agent to a real TEE environment. Go to the [TEE Cloud](https://teehouse.vercel.app) and click on the `Create VM` button to configure your Eliza agent deployment. +Now you can deploy the Eliza agent to a real TEE environment. Go to the [TEE Cloud](https://cloud.phala.network/login) and click on the `Create VM` button to configure your Eliza agent deployment. Click on the `Compose Manifest Mode` tab and paste the docker-compose.yaml file content into the `Compose Manifest` field. @@ -313,7 +319,7 @@ Click on the `Logs` tab to view the agent logs. ![Agent Logs](https://i.imgur.com/aU3i0Dv.png) -Now we can verify the REAL TEE attestation quote by going to the [TEE RA Explorer](https://ra-quote-explorer.vercel.app/) and pasting the attestation quote from the agent logs. +Now we can verify the REAL TEE attestation quote by going to the [TEE RA Explorer](https://proof.t16z.com/) and pasting the attestation quote from the agent logs. ![TEE RA Explorer](https://i.imgur.com/TJ5299l.png) diff --git a/docs/docs/advanced/fine-tuning.md b/docs/docs/advanced/fine-tuning.md index 2a3220ddac67..9ee301b86210 100644 --- a/docs/docs/advanced/fine-tuning.md +++ b/docs/docs/advanced/fine-tuning.md @@ -26,6 +26,7 @@ enum ModelProviderName { REDPILL, OPENROUTER, HEURIST, + LIVEPEER, } ``` @@ -272,24 +273,45 @@ const llamaLocalSettings = { ```typescript const heuristSettings = { - settings: { - stop: [], - maxInputTokens: 32768, - maxOutputTokens: 8192, - repetition_penalty: 0.0, - temperature: 0.7, - }, - imageSettings: { - steps: 20, - }, - endpoint: "https://llm-gateway.heurist.xyz", - model: { - [ModelClass.SMALL]: "hermes-3-llama3.1-8b", - [ModelClass.MEDIUM]: "mistralai/mixtral-8x7b-instruct", - [ModelClass.LARGE]: "nvidia/llama-3.1-nemotron-70b-instruct", - [ModelClass.EMBEDDING]: "", // Add later - [ModelClass.IMAGE]: "FLUX.1-dev", - }, + settings: { + stop: [], + maxInputTokens: 32768, + maxOutputTokens: 8192, + repetition_penalty: 0.0, + temperature: 0.7, + }, + imageSettings: { + steps: 20, + }, + endpoint: "https://llm-gateway.heurist.xyz", + model: { + [ModelClass.SMALL]: "hermes-3-llama3.1-8b", + [ModelClass.MEDIUM]: "mistralai/mixtral-8x7b-instruct", + [ModelClass.LARGE]: "nvidia/llama-3.1-nemotron-70b-instruct", + [ModelClass.EMBEDDING]: "", // Add later + [ModelClass.IMAGE]: "FLUX.1-dev", + }, +}; +``` + +### Livepeer Provider + +```typescript +const livepeerSettings = { + settings: { + stop: [], + maxInputTokens: 128000, + maxOutputTokens: 8192, + repetition_penalty: 0.4, + temperature: 0.7, + }, + endpoint: "https://dream-gateway.livepeer.cloud", + model: { + [ModelClass.SMALL]: "meta-llama/Meta-Llama-3.1-8B-Instruct", + [ModelClass.MEDIUM]: "meta-llama/Meta-Llama-3.1-8B-Instruct", + [ModelClass.LARGE]: "meta-llama/Llama-3.3-70B-Instruct", + [ModelClass.IMAGE]: "ByteDance/SDXL-Lightning", + }, }; ``` diff --git a/docs/docs/core/actions.md b/docs/docs/core/actions.md index 0f710e0c90da..38fe93049214 100644 --- a/docs/docs/core/actions.md +++ b/docs/docs/core/actions.md @@ -164,7 +164,7 @@ interface Action { - **validate**: Determines if the action can be executed - **handler**: Implements the action's behavior - **examples**: Demonstrates proper usage patterns -- **suppressInitialMessage**: When true, suppresses the initial response message before processing the action. Useful for actions that generate their own responses (like image generation) +- **suppressInitialMessage**: When true, suppress the initial response message before processing the action. Useful for actions that generate their own responses (like image generation) --- @@ -179,7 +179,7 @@ const continueAction: Action = { name: "CONTINUE", similes: ["ELABORATE", "KEEP_TALKING"], description: - "Used when the message requires a follow-up. Don't use when the conversation is finished.", + "Used when the message requires a follow-up. Don't use it when the conversation is finished.", validate: async (runtime, message) => { // Validation logic return true; diff --git a/docs/docs/core/characterfile.md b/docs/docs/core/characterfile.md index 8b5a278f4594..728d64e28e9f 100644 --- a/docs/docs/core/characterfile.md +++ b/docs/docs/core/characterfile.md @@ -92,7 +92,7 @@ The character's display name for identification and in conversations. #### `modelProvider` (required) -Specifies the AI model provider. Supported options from [ModelProviderName](/api/enumerations/modelprovidername) include `anthropic`, `llama_local`, `openai`, and others. +Specifies the AI model provider. Supported options from [ModelProviderName](/api/enumerations/modelprovidername) include `anthropic`, `llama_local`, `openai`, `livepeer`, and others. #### `clients` (required) diff --git a/docs/docs/guides/start-script.md b/docs/docs/guides/start-script.md new file mode 100644 index 000000000000..e23cd31c361b --- /dev/null +++ b/docs/docs/guides/start-script.md @@ -0,0 +1,191 @@ +# 🤖 Eliza Start Script + +> A powerful, cross-platform launcher for your AI companion + +## 🚀 Quick Start + +```bash +# Linux/macOS from eliza root directory +./scripts/start.sh +``` + +## 💻 System Requirements + +
+🐧 Linux + +- Bash shell +- `sudo` access +- APT package manager +- 2GB free disk space +
+ +
+🍎 macOS + +- macOS 10.15 or higher +- Command Line Tools +- Admin access +- 2GB free disk space +
+ +
+🪟 Windows (WSL2) + +**Requirements:** +- Windows 10 version 2004+ or Windows 11 +- 8GB RAM minimum +- Virtualization enabled in BIOS +- Admin access to install WSL2 + +**Installation Steps:** +1. Enable WSL2: + ```powershell + # Run in PowerShell as Administrator + wsl --install + ``` + +2. Install Ubuntu from Microsoft Store or: + ```powershell + wsl --install -d Ubuntu + ``` + +3. Restart your computer + +4. Set up Ubuntu: + - Open Ubuntu from Start Menu + - Create username and password when prompted + - Run updates: + ```bash + sudo apt update && sudo apt upgrade -y + ``` + +Now you can follow the Linux instructions! +
+ +## ✨ Features + +| Feature | Description | +|---------|-------------| +| 🔍 OS Detection | Automatically adapts to your platform | +| 🛠️ Zero Config | Installs all dependencies automatically | +| 📦 Node.js | Manages versions and packages seamlessly | +| 🎭 Characters | Full character management interface | +| 🔄 Updates | One-click updates and version management | +| ⚙️ Environment | Guided configuration setup | + +## 🎮 Usage + +### Command Line Options +```bash +start.sh [-v|--verbose] [--skip-nvm] +``` + +| Option | Description | +|--------|-------------| +| `-v, --verbose` | Show detailed progress | +| `--skip-nvm` | Use system Node.js | +### 🔄 Starting and Updating Eliza + +| Action | Description | +|--------|-------------| +| Start | Launch current version | +| Update | Install latest updates | +| Reinstall | Fresh installation | + +### 🎭 Character Management + +
+Creating New Characters + +1. Select `Create New` +2. Enter character name +3. Customize in editor +4. Save & deploy +
+ +
+Using Existing Characters + +1. Select `Use Existing` +2. Choose characters: + - Select each: `X` + - Select All: `Ctrl+A` + - Confirm: `ENTER` +
+ +
+Character Actions + +**Single Character:** +- ▶️ Run +- ✏️ Edit +- 🗑️ Delete + +**Multiple Characters:** +- ▶️ Run All +- 🗑️ Delete All +
+ +### ⚙️ Configuration + + + +## 🛟 Troubleshooting + +### Common Solutions + +
+🔒 Permission Issues + +```bash +# Linux/macOS +sudo chmod +x scripts/start.sh + +# Windows +Set-ExecutionPolicy RemoteSigned -Scope CurrentUser +``` +
+ +
+📦 Node.js Issues + +- Required: Node.js 22+ +- Use `--skip-nvm` for system Node +- Check PATH configuration +
+ +
+🔧 Package Manager Issues + +- Linux: `sudo apt update` +- macOS: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` +- Windows: Run as Administrator +
+ +### 🚨 Common Errors + + +| `characters not found` | Check working directory | + +## 📝 Notes + +- Temporary files: `/tmp/eliza_*` +- Config location: `./config` +- Characters: `./characters/*.json` + +## 🆘 Support + +Need help? Try these steps: + +1. Run with verbose logging: + ```bash + ./scripts/start.sh -v + ``` +2. Check console output +3. [Open an issue](https://github.com/elizaOS/eliza/issues) + +--- +
+Made with ❤️ by the ai16z team +
\ No newline at end of file diff --git a/docs/docs/packages/plugins.md b/docs/docs/packages/plugins.md index c1142c79eccb..18bafb92fe0c 100644 --- a/docs/docs/packages/plugins.md +++ b/docs/docs/packages/plugins.md @@ -469,7 +469,7 @@ const provider = new DeriveKeyProvider(); // Derive a raw key try { const rawKey = await provider.rawDeriveKey( - "/path/to/derive", + "/path/to/derive", // This is what the WALLET_SECRET_SALT is used for "subject-identifier", ); // rawKey is a DeriveKeyResponse that can be used for further processing @@ -482,7 +482,7 @@ try { // Derive a Solana keypair (Ed25519) try { const solanaKeypair = await provider.deriveEd25519Keypair( - "/path/to/derive", + "/path/to/derive", // This is what the WALLET_SECRET_SALT is used for "subject-identifier", ); // solanaKeypair can now be used for Solana operations @@ -493,7 +493,7 @@ try { // Derive an Ethereum keypair (ECDSA) try { const evmKeypair = await provider.deriveEcdsaKeypair( - "/path/to/derive", + "/path/to/derive", // This is what the WALLET_SECRET_SALT is used for "subject-identifier", ); // evmKeypair can now be used for Ethereum operations diff --git a/docs/docs/quickstart.md b/docs/docs/quickstart.md index 8267b1e98dd6..991af92da99f 100644 --- a/docs/docs/quickstart.md +++ b/docs/docs/quickstart.md @@ -92,10 +92,17 @@ Eliza supports multiple AI models: - **Heurist**: Set `modelProvider: "heurist"` in your character file. Most models are uncensored. - LLM: Select available LLMs [here](https://docs.heurist.ai/dev-guide/supported-models#large-language-models-llms) and configure `SMALL_HEURIST_MODEL`,`MEDIUM_HEURIST_MODEL`,`LARGE_HEURIST_MODEL` - Image Generation: Select available Stable Diffusion or Flux models [here](https://docs.heurist.ai/dev-guide/supported-models#image-generation-models) and configure `HEURIST_IMAGE_MODEL` (default is FLUX.1-dev) +<<<<<<< HEAD - **Llama**: Set `OLLAMA_MODEL` to your chosen model - **Grok**: Set `GROK_API_KEY` to your Grok API key and set `modelProvider: "grok"` in your character file - **OpenAI**: Set `OPENAI_API_KEY` to your OpenAI API key and set `modelProvider: "openai"` in your character file - **Livepeer**: Set `LIVEPEER_IMAGE_MODEL` to your chosen Livepeer image model, available models [here](https://livepeer-eliza.com/) +======= +- **Llama**: Set `XAI_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` +- **Grok**: Set `XAI_MODEL=grok-beta` +- **OpenAI**: Set `XAI_MODEL=gpt-4o-mini` or `gpt-4o` +- **Livepeer**: Set `SMALL_LIVEPEER_MODEL`,`MEDIUM_LIVEPEER_MODEL`,`LARGE_LIVEPEER_MODEL` and `IMAGE_LIVEPEER_MODEL` to your desired models listed [here](https://livepeer-eliza.com/). +>>>>>>> 95f56e6b4 (Merge pull request #2 from Titan-Node/livepeer-doc-updates) You set which model to use inside the character JSON file @@ -130,7 +137,7 @@ You set which model to use inside the character JSON file pnpm start --character="characters/trump.character.json" ``` - You can also load multiple characters with the characters option with a comma separated list: + You can also load multiple characters with the characters option with a comma-separated list: ```bash pnpm start --characters="characters/trump.character.json,characters/tate.character.json" diff --git a/docs/package.json b/docs/package.json index 07a265458d59..e35d39d79c7e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "eliza-docs", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "private": true, "packageManager": "pnpm@9.4.0", "scripts": { @@ -16,13 +16,13 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.6.3", - "@docusaurus/plugin-content-blog": "3.6.3", - "@docusaurus/plugin-content-docs": "3.6.3", - "@docusaurus/plugin-ideal-image": "3.6.3", - "@docusaurus/preset-classic": "3.6.3", - "@docusaurus/theme-mermaid": "3.6.3", - "@docusaurus/theme-common": "3.6.3", + "@docusaurus/core": "3.7.0", + "@docusaurus/plugin-content-blog": "3.7.0", + "@docusaurus/plugin-content-docs": "3.7.0", + "@docusaurus/plugin-ideal-image": "3.7.0", + "@docusaurus/preset-classic": "3.7.0", + "@docusaurus/theme-mermaid": "3.7.0", + "@docusaurus/theme-common": "3.7.0", "@mdx-js/react": "3.0.1", "clsx": "2.1.1", "docusaurus-lunr-search": "3.5.0", @@ -34,8 +34,8 @@ "react-router-dom": "6.22.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.3", - "@docusaurus/types": "3.6.3", + "@docusaurus/module-type-aliases": "3.7.0", + "@docusaurus/types": "3.7.0", "docusaurus-plugin-typedoc": "1.0.5", "typedoc": "0.26.11", "typedoc-plugin-markdown": "4.2.10" diff --git a/README_AR.md b/i18n/readme/README_AR.md similarity index 100% rename from README_AR.md rename to i18n/readme/README_AR.md diff --git a/README_CN.md b/i18n/readme/README_CN.md similarity index 100% rename from README_CN.md rename to i18n/readme/README_CN.md diff --git a/README_DE.md b/i18n/readme/README_DE.md similarity index 100% rename from README_DE.md rename to i18n/readme/README_DE.md diff --git a/README_ES.md b/i18n/readme/README_ES.md similarity index 100% rename from README_ES.md rename to i18n/readme/README_ES.md diff --git a/README_FA.md b/i18n/readme/README_FA.md similarity index 100% rename from README_FA.md rename to i18n/readme/README_FA.md diff --git a/README_FR.md b/i18n/readme/README_FR.md similarity index 100% rename from README_FR.md rename to i18n/readme/README_FR.md diff --git a/i18n/readme/README_GR.md b/i18n/readme/README_GR.md new file mode 100644 index 000000000000..6898498b8129 --- /dev/null +++ b/i18n/readme/README_GR.md @@ -0,0 +1,148 @@ +# Eliza 🤖 + +
+ Eliza Banner +
+ +
+ +📖 [Τεκμηρίωση](https://elizaos.github.io/eliza/) | 🎯 [Παραδείγματα](https://github.com/thejoven/awesome-eliza) + +
+ +## 🌍 Μεταφράσεις README +[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Persian](./README_FA.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md) | [Ελληνικά](./README_GR.md) + +## 🚩 Επισκόπηση +
+ Eliza Diagram +
+ +## ✨ Χαρακτηριστικά + +- 🛠️ Πλήρεις συνδέσεις για Discord, Twitter και Telegram +- 🔗 Υποστήριξη για κάθε μοντέλο (Llama, Grok, OpenAI, Anthropic, κ.λπ.) +- 👥 Υποστήριξη πολλών πρακτόρων και δωματίων +- 📚 Εύκολη ενσωμάτωση και αλληλεπίδραση με τα έγγραφά σας +- 💾 Ανακτήσιμη μνήμη και αποθήκευση εγγράφων +- 🚀 Εξαιρετικά επεκτάσιμο - δημιουργήστε τις δικές σας δράσεις και πελάτες +- ☁️ Υποστήριξη για πολλά μοντέλα (τοπικά Llama, OpenAI, Anthropic, Groq, κ.λπ.) +- 📦 Έτοιμο για χρήση! + +[Σχολείο για προγραμματιστές για Πράκτορες Τεχνητής Νοημοσύνης (ΑΙ)](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) + +## 🎯 Περιτπώσεις για χρήση + +- 🤖 Chatbots +- 🕵️ Αυτόνομοι πράκτορες +- 📈 Διαχείριση επιχειρηματικών διαδικασιών +- 🎮 NPC σε βιντεοπαιχνίδια +- 🧠 Trading +- 🚀 Γρήγορη Εκκίνηση + + +## 🚀 Γρήγορη Εκκίνηση + +## Προαπαιτούμενα + +- [Python 2.7+](https://www.python.org/downloads/) +- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +- [pnpm](https://pnpm.io/installation) + +> **Σημείωση για χρήστες Windows:** Απαιτείται [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual). + +### Πως να ξεκινήσετε (Συνιστάται) + +```bash +git clone https://github.com/elizaos/eliza-starter.git +cd eliza-starter +cp .env.example .env +pnpm i && pnpm build && pnpm start +``` + +Μόλις ο πράκτορας ξεκινήσει, θα δείτε ένα μήνυμα να εκτελέσετε ```pnpm start:client```. +Ανοίξτε ένα νέο τερματικό, μεταβείτε στον ίδιο κατάλογο και εκτελέστε την παρακάτω εντολή: + +```bash +pnpm start:client +``` + +Έπειτα διαβάστε την [Τεκμηρίωση]((https://elizaos.github.io/eliza/)) για να μάθετε πώς να προσαρμόσετε το Eliza. + +### Χειροκίνητη Εκκίνηση του Eliza (Μόνο για προχωρημένους χρήστες) + +```bash +# Κλωνοποίηση του αποθετηρίου +git clone https://github.com/elizaos/eliza.git + +# Έλεγχος της τελευταίας έκδοσης +# Αυτό το έργο εξελίσσεται γρήγορα, οπότε συνιστούμε να ελέγξετε την τελευταία έκδοση +git checkout $(git describe --tags --abbrev=0) +# Αν το παραπάνω δεν ελέγξει την τελευταία έκδοση, αυτό θα πρέπει να λειτουργήσει: +# git checkout $(git describe --tags `git rev-list --tags --max-count=1`) +``` + +### Εκκίνηση του Eliza με το Gitpod + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main) +### Τροποποιήστε το .env αρχείο + +Αντιγράψτε το αρχείο .env.example σε ένα νέο αρχείο .env και συμπληρώστε τις παραμέτρους που χρειάζεστε. + +``` +cp .env.example .env +``` + +Σημείωση: Το .env είναι προαιρετικό. Αν σχεδιάζετε να τρέξετε πολλούς διαφορετικούς πράκτορες, μπορείτε να περάσετε τα secrets μέσω του JSON της χαρακτήρα. + +### Αυτόματη Εκκίνηση του Eliza + +Αυτό θα εκτελέσει όλα τα απαραίτητα βήματα για να ρυθμίσετε το έργο και να ξεκινήσετε το bot με τον προεπιλεγμένο χαρακτήρα. + +```bash +sh scripts/start.sh +``` + +### Τροποποίηση του αρχείου σχετικού με τον χαρακτήρα + +1. Ανοίξτε το `packages/core/src/defaultCharacter.ts` για να τροποποιήσετε τον προεπιλεγμένο χαρακτήρα. Αποσχολιάστε και επεξεργαστείτε. + +2. Για να φορτώσετε προσαρμοσμένους χαρακτήρες: + - Χρησιμοποιήστε `pnpm start --characters="path/to/your/character.json"` + - Πολλά αρχεία χαρακτήρων μπορούν να φορτωθούν ταυτόχρονα + +3. Σύνδεση με το X (Twitter) + αλλάξτε `"clients": []` σε `"clients": ["twitter"]` στο αρχείο χαρακτήρα για να συνδεθείτε με το X + +### Χειροκίνητη Εκκίνηση του Eliza + +```bash +pnpm i +pnpm build +pnpm start + +# Το έργο εξελίσσεται γρήγορα, μερικές φορές πρέπει να καθαρίσετε το έργο, εαν επιστρέφετε στο έργο +``` + +#### Επιπλέον Πληροφορίες + +Μπορεί να χρειαστεί να εγκαταστήσετε το Sharp. Αν αντιμετωπίζετε προβλήματα, προσπαθήστε να το εγκαταστήσετε, εκτελώντας την παρακάτω εντολή: + +``` +pnpm install --include=optional sharp +``` + +### Κοινότητα & Επικοινωνία + +- [Προβλήματα στο GitHub](https://github.com/elizaos/eliza/issues). Καλύτερο για: Προβλήματα που αντιμετωπίζετε με το Eliza, και για προτάσεις βελτίωσης. +- [Discord](https://discord.gg/ai16z). Καλύτερο για: Κοινοποίηση των εφαρμογών σας και συνομιλία με την κοινότητα. + +## Συνεισφορές + + + + + +## Ιστορικό Αστεριών + +[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date) diff --git a/README_HE.md b/i18n/readme/README_HE.md similarity index 100% rename from README_HE.md rename to i18n/readme/README_HE.md diff --git a/README_HU.md b/i18n/readme/README_HU.md similarity index 100% rename from README_HU.md rename to i18n/readme/README_HU.md diff --git a/README_IT.md b/i18n/readme/README_IT.md similarity index 100% rename from README_IT.md rename to i18n/readme/README_IT.md diff --git a/README_JA.md b/i18n/readme/README_JA.md similarity index 100% rename from README_JA.md rename to i18n/readme/README_JA.md diff --git a/README_KOR.md b/i18n/readme/README_KOR.md similarity index 100% rename from README_KOR.md rename to i18n/readme/README_KOR.md diff --git a/README_NL.md b/i18n/readme/README_NL.md similarity index 100% rename from README_NL.md rename to i18n/readme/README_NL.md diff --git a/README_PL.md b/i18n/readme/README_PL.md similarity index 100% rename from README_PL.md rename to i18n/readme/README_PL.md diff --git a/README_PTBR.md b/i18n/readme/README_PTBR.md similarity index 100% rename from README_PTBR.md rename to i18n/readme/README_PTBR.md diff --git a/README_RO.md b/i18n/readme/README_RO.md similarity index 100% rename from README_RO.md rename to i18n/readme/README_RO.md diff --git a/README_RS.md b/i18n/readme/README_RS.md similarity index 100% rename from README_RS.md rename to i18n/readme/README_RS.md diff --git a/README_RU.md b/i18n/readme/README_RU.md similarity index 100% rename from README_RU.md rename to i18n/readme/README_RU.md diff --git a/README_TG.md b/i18n/readme/README_TG.md similarity index 100% rename from README_TG.md rename to i18n/readme/README_TG.md diff --git a/README_TH.md b/i18n/readme/README_TH.md similarity index 100% rename from README_TH.md rename to i18n/readme/README_TH.md diff --git a/README_TR.md b/i18n/readme/README_TR.md similarity index 95% rename from README_TR.md rename to i18n/readme/README_TR.md index 0fc393599707..f4fd40cc9408 100644 --- a/README_TR.md +++ b/i18n/readme/README_TR.md @@ -37,7 +37,7 @@ - [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) - [pnpm](https://pnpm.io/installation) -> **Windows Kullanıcıları İçin Not:** WSL gereklidir +> **Windows Kullanıcıları İçin Not:** [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual) gereklidir ### .env Dosyasını Düzenleyin diff --git a/README_VI.md b/i18n/readme/README_VI.md similarity index 100% rename from README_VI.md rename to i18n/readme/README_VI.md diff --git a/lerna.json b/lerna.json index c772c6adb2ac..a0e8b1c50c2b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "packages": [ "packages/*", "docs", diff --git a/package.json b/package.json index f550c3cfe547..657c3eec6e3b 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "devDependencies": { "@commitlint/cli": "18.6.1", "@commitlint/config-conventional": "18.6.3", + "@types/jest": "^29.5.11", "@typescript-eslint/eslint-plugin": "8.16.0", "@typescript-eslint/parser": "8.16.0", "@vitest/eslint-plugin": "1.1.13", @@ -35,18 +36,17 @@ "eslint": "9.16.0", "eslint-config-prettier": "9.1.0", "husky": "9.1.7", + "jest": "^29.7.0", "lerna": "8.1.5", "only-allow": "1.2.1", "prettier": "3.4.1", + "ts-jest": "^29.1.1", "turbo": "2.3.3", "typedoc": "0.26.11", "typescript": "5.6.3", - "vite": "5.4.11", - "vitest": "2.1.5", "viem": "2.21.58", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.11", - "jest": "^29.7.0" + "vite": "5.4.11", + "vitest": "2.1.5" }, "pnpm": { "overrides": { @@ -61,9 +61,11 @@ "@0glabs/0g-ts-sdk": "0.2.1", "@coinbase/coinbase-sdk": "0.10.0", "@deepgram/sdk": "^3.9.0", + "@injectivelabs/sdk-ts": "^1.14.33", "@vitest/eslint-plugin": "1.0.1", "amqplib": "0.10.5", "csv-parse": "5.6.0", + "langdetect": "^0.2.1", "ollama-ai-provider": "0.16.1", "optional": "0.1.4", "pnpm": "9.14.4", @@ -74,4 +76,4 @@ "workspaces": [ "packages/*" ] -} +} \ No newline at end of file diff --git a/packages/_examples/plugin/src/plugins/samplePlugin.ts b/packages/_examples/plugin/src/plugins/samplePlugin.ts index 90fd2898a16b..2a3b29888b22 100644 --- a/packages/_examples/plugin/src/plugins/samplePlugin.ts +++ b/packages/_examples/plugin/src/plugins/samplePlugin.ts @@ -2,6 +2,7 @@ import { Plugin } from "@elizaos/core"; import { createResourceAction } from "../actions/sampleAction"; import { sampleProvider } from "../providers/sampleProvider"; import { sampleEvaluator } from "../evaluators/sampleEvalutor"; +import SampleService from "../services/sampleService"; export const samplePlugin: Plugin = { name: "sample", @@ -10,6 +11,6 @@ export const samplePlugin: Plugin = { providers: [sampleProvider], evaluators: [sampleEvaluator], // separate examples will be added for services and clients - services: [], + services: [new SampleService()], clients: [], }; diff --git a/packages/_examples/plugin/src/services/sampleService.ts b/packages/_examples/plugin/src/services/sampleService.ts new file mode 100644 index 000000000000..07561c5bde55 --- /dev/null +++ b/packages/_examples/plugin/src/services/sampleService.ts @@ -0,0 +1,136 @@ +import { + Service, + ServiceType, + IAgentRuntime, + // Memory, + // State, + elizaLogger, + // stringToUuid, +} from "@elizaos/core"; +// import { sampleProvider } from "../providers/sampleProvider"; // TODO: Uncomment this line to use the sampleProvider + +// Add SAMPLE to ServiceType enum in types.ts +declare module "@elizaos/core" { + export enum ServiceType { + SAMPLE = "sample", + } +} + +// The SampleService is a simple service that logs "Hello world" every 15 minutes. +export class SampleService extends Service { + private runtime: IAgentRuntime | null = null; + private intervalId: NodeJS.Timeout | null = null; + private readonly DEFAULT_INTERVAL = 15 * 60 * 1000; // 15 minutes in milliseconds + + static get serviceType(): ServiceType { + return ServiceType.SAMPLE; + } + + private static isInitialized = false; + + async initialize(runtime: IAgentRuntime): Promise { + // Verify if the service is already initialized + if (SampleService.isInitialized) { + return; + } + + this.runtime = runtime; + + // Start the periodic task + this.startPeriodicTask(); + SampleService.isInitialized = true; + elizaLogger.info("SampleService initialized and started periodic task"); + } + + private static activeTaskCount = 0; + + private startPeriodicTask(): void { + // Verify if a task is already active + if (SampleService.activeTaskCount > 0) { + elizaLogger.warn( + "SampleService: Periodic task already running, skipping" + ); + return; + } + + // Clear any existing interval + if (this.intervalId) { + clearInterval(this.intervalId); + } + + SampleService.activeTaskCount++; + elizaLogger.info( + `SampleService: Starting periodic task (active tasks: ${SampleService.activeTaskCount})` + ); + + // Initial call immediately + this.fetchSample(); + + // Set up periodic calls + this.intervalId = setInterval(() => { + this.fetchSample(); + }, this.DEFAULT_INTERVAL); + } + + private async fetchSample(): Promise { + if (!this.runtime) { + elizaLogger.error("SampleService: Runtime not initialized"); + return; + } + + try { + // Example of using the sampleProvider + // Create dummy memory and state objects for the provider + // const dummyMemory: Memory = { + // id: stringToUuid("sample-service-trigger"), + // userId: this.runtime.agentId, + // agentId: this.runtime.agentId, + // roomId: this.runtime.agentId, + // content: { text: "Periodic sample fetch" }, + // createdAt: Date.now(), + // }; + + // const dummyState: State = { + // userId: this.runtime.agentId, + // bio: "", + // lore: "", + // messageDirections: "", + // postDirections: "", + // roomId: this.runtime.agentId, + // actors: "", + // recentMessages: "", + // recentMessagesData: [], + // }; + // await sampleProvider.get(this.runtime, dummyMemory, dummyState); + + // hello world log example + elizaLogger.info("SampleService: Hello world"); + + elizaLogger.info( + "SampleService: Successfully fetched and processed sample" + ); + } catch (error) { + elizaLogger.error("SampleService: Error fetching sample:", error); + } + } + + // Method to stop the service + stop(): void { + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = null; + SampleService.activeTaskCount--; + elizaLogger.info( + `SampleService stopped (active tasks: ${SampleService.activeTaskCount})` + ); + } + SampleService.isInitialized = false; + } + + // Method to manually trigger a sample fetch (for testing) + async forceFetch(): Promise { + await this.fetchSample(); + } +} + +export default SampleService; diff --git a/packages/adapter-pglite/package.json b/packages/adapter-pglite/package.json index 6bd9cff0112c..746e4d9ad1f2 100644 --- a/packages/adapter-pglite/package.json +++ b/packages/adapter-pglite/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-pglite", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-pglite/src/index.ts b/packages/adapter-pglite/src/index.ts index 187a5f17b62a..eb6f8d405d51 100644 --- a/packages/adapter-pglite/src/index.ts +++ b/packages/adapter-pglite/src/index.ts @@ -152,6 +152,7 @@ export class PGLiteDatabaseAdapter roomIds: UUID[]; agentId?: UUID; tableName: string; + limit?: number; }): Promise { return this.withDatabase(async () => { if (params.roomIds.length === 0) return []; @@ -167,6 +168,13 @@ export class PGLiteDatabaseAdapter queryParams = [...queryParams, params.agentId]; } + // Add ordering and limit + query += ` ORDER BY "createdAt" DESC`; + if (params.limit) { + query += ` LIMIT $${queryParams.length + 1}`; + queryParams.push(params.limit.toString()); + } + const { rows } = await this.query(query, queryParams); return rows.map((row) => ({ ...row, @@ -325,6 +333,33 @@ export class PGLiteDatabaseAdapter }, "getMemoryById"); } + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise { + return this.withDatabase(async () => { + if (memoryIds.length === 0) return []; + const placeholders = memoryIds.map((_, i) => `$${i + 1}`).join(","); + let sql = `SELECT * FROM memories WHERE id IN (${placeholders})`; + const queryParams: any[] = [...memoryIds]; + + if (tableName) { + sql += ` AND type = $${memoryIds.length + 1}`; + queryParams.push(tableName); + } + + const { rows } = await this.query(sql, queryParams); + + return rows.map((row) => ({ + ...row, + content: + typeof row.content === "string" + ? JSON.parse(row.content) + : row.content, + })); + }, "getMemoriesByIds"); + } + async createMemory(memory: Memory, tableName: string): Promise { return this.withDatabase(async () => { elizaLogger.debug("PostgresAdapter createMemory:", { diff --git a/packages/adapter-postgres/package.json b/packages/adapter-postgres/package.json index 37240661bfd7..6f60b6e37d5f 100644 --- a/packages/adapter-postgres/package.json +++ b/packages/adapter-postgres/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-postgres", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-postgres/src/index.ts b/packages/adapter-postgres/src/index.ts index 5f257bb7190f..7d3c34dccc08 100644 --- a/packages/adapter-postgres/src/index.ts +++ b/packages/adapter-postgres/src/index.ts @@ -512,6 +512,33 @@ export class PostgresDatabaseAdapter }, "getMemoryById"); } + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise { + return this.withDatabase(async () => { + if (memoryIds.length === 0) return []; + const placeholders = memoryIds.map((_, i) => `$${i + 1}`).join(","); + let sql = `SELECT * FROM memories WHERE id IN (${placeholders})`; + const queryParams: any[] = [...memoryIds]; + + if (tableName) { + sql += ` AND type = $${memoryIds.length + 1}`; + queryParams.push(tableName); + } + + const { rows } = await this.pool.query(sql, queryParams); + + return rows.map((row) => ({ + ...row, + content: + typeof row.content === "string" + ? JSON.parse(row.content) + : row.content, + })); + }, "getMemoriesByIds"); + } + async createMemory(memory: Memory, tableName: string): Promise { return this.withDatabase(async () => { elizaLogger.debug("PostgresAdapter createMemory:", { diff --git a/packages/adapter-redis/package.json b/packages/adapter-redis/package.json index fdd3b2d18ade..141233e7999a 100644 --- a/packages/adapter-redis/package.json +++ b/packages/adapter-redis/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-redis", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-sqlite/package.json b/packages/adapter-sqlite/package.json index 8b45f36b5b2e..0381e3a4341a 100644 --- a/packages/adapter-sqlite/package.json +++ b/packages/adapter-sqlite/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-sqlite", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-sqlite/src/index.ts b/packages/adapter-sqlite/src/index.ts index cf8c00043bdb..b18289be3c54 100644 --- a/packages/adapter-sqlite/src/index.ts +++ b/packages/adapter-sqlite/src/index.ts @@ -16,6 +16,7 @@ import { type Relationship, type UUID, RAGKnowledgeItem, + type ChunkRow, } from "@elizaos/core"; import { Database } from "better-sqlite3"; import { v4 } from "uuid"; @@ -154,19 +155,29 @@ export class SqliteDatabaseAdapter agentId: UUID; roomIds: UUID[]; tableName: string; + limit?: number; }): Promise { if (!params.tableName) { // default to messages params.tableName = "messages"; } + const placeholders = params.roomIds.map(() => "?").join(", "); - const sql = `SELECT * FROM memories WHERE type = ? AND agentId = ? AND roomId IN (${placeholders})`; + let sql = `SELECT * FROM memories WHERE type = ? AND agentId = ? AND roomId IN (${placeholders})`; + const queryParams = [ params.tableName, params.agentId, ...params.roomIds, ]; + // Add ordering and limit + sql += ` ORDER BY createdAt DESC`; + if (params.limit) { + sql += ` LIMIT ?`; + queryParams.push(params.limit.toString()); + } + const stmt = this.db.prepare(sql); const rows = stmt.all(...queryParams) as (Memory & { content: string; @@ -194,6 +205,33 @@ export class SqliteDatabaseAdapter return null; } + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise { + if (memoryIds.length === 0) return []; + const queryParams: any[] = []; + const placeholders = memoryIds.map(() => "?").join(","); + let sql = `SELECT * FROM memories WHERE id IN (${placeholders})`; + queryParams.push(...memoryIds); + + if (tableName) { + sql += ` AND type = ?`; + queryParams.push(tableName); + } + + const memories = this.db.prepare(sql).all(...queryParams) as Memory[]; + + return memories.map((memory) => ({ + ...memory, + createdAt: + typeof memory.createdAt === "string" + ? Date.parse(memory.createdAt as string) + : memory.createdAt, + content: JSON.parse(memory.content as unknown as string), + })); + } + async createMemory(memory: Memory, tableName: string): Promise { // Delete any existing memory with the same ID first // const deleteSql = `DELETE FROM memories WHERE id = ? AND type = ?`; @@ -929,8 +967,106 @@ export class SqliteDatabaseAdapter } async removeKnowledge(id: UUID): Promise { - const sql = `DELETE FROM knowledge WHERE id = ?`; - this.db.prepare(sql).run(id); + if (typeof id !== "string") { + throw new Error("Knowledge ID must be a string"); + } + + try { + // Execute the transaction and ensure it's called with () + await this.db.transaction(() => { + if (id.includes("*")) { + const pattern = id.replace("*", "%"); + const sql = "DELETE FROM knowledge WHERE id LIKE ?"; + elizaLogger.debug( + `[Knowledge Remove] Executing SQL: ${sql} with pattern: ${pattern}` + ); + const stmt = this.db.prepare(sql); + const result = stmt.run(pattern); + elizaLogger.debug( + `[Knowledge Remove] Pattern deletion affected ${result.changes} rows` + ); + return result.changes; // Return changes for logging + } else { + // Log queries before execution + const selectSql = "SELECT id FROM knowledge WHERE id = ?"; + const chunkSql = + "SELECT id FROM knowledge WHERE json_extract(content, '$.metadata.originalId') = ?"; + elizaLogger.debug(`[Knowledge Remove] Checking existence with: + Main: ${selectSql} [${id}] + Chunks: ${chunkSql} [${id}]`); + + const mainEntry = this.db.prepare(selectSql).get(id) as + | ChunkRow + | undefined; + const chunks = this.db + .prepare(chunkSql) + .all(id) as ChunkRow[]; + + elizaLogger.debug(`[Knowledge Remove] Found:`, { + mainEntryExists: !!mainEntry?.id, + chunkCount: chunks.length, + chunkIds: chunks.map((c) => c.id), + }); + + // Execute and log chunk deletion + const chunkDeleteSql = + "DELETE FROM knowledge WHERE json_extract(content, '$.metadata.originalId') = ?"; + elizaLogger.debug( + `[Knowledge Remove] Executing chunk deletion: ${chunkDeleteSql} [${id}]` + ); + const chunkResult = this.db.prepare(chunkDeleteSql).run(id); + elizaLogger.debug( + `[Knowledge Remove] Chunk deletion affected ${chunkResult.changes} rows` + ); + + // Execute and log main entry deletion + const mainDeleteSql = "DELETE FROM knowledge WHERE id = ?"; + elizaLogger.debug( + `[Knowledge Remove] Executing main deletion: ${mainDeleteSql} [${id}]` + ); + const mainResult = this.db.prepare(mainDeleteSql).run(id); + elizaLogger.debug( + `[Knowledge Remove] Main deletion affected ${mainResult.changes} rows` + ); + + const totalChanges = + chunkResult.changes + mainResult.changes; + elizaLogger.debug( + `[Knowledge Remove] Total rows affected: ${totalChanges}` + ); + + // Verify deletion + const verifyMain = this.db.prepare(selectSql).get(id); + const verifyChunks = this.db.prepare(chunkSql).all(id); + elizaLogger.debug( + `[Knowledge Remove] Post-deletion check:`, + { + mainStillExists: !!verifyMain, + remainingChunks: verifyChunks.length, + } + ); + + return totalChanges; // Return changes for logging + } + })(); // Important: Call the transaction function + + elizaLogger.debug( + `[Knowledge Remove] Transaction completed for id: ${id}` + ); + } catch (error) { + elizaLogger.error("[Knowledge Remove] Error:", { + id, + error: + error instanceof Error + ? { + message: error.message, + stack: error.stack, + name: error.name, + } + : error, + }); + throw error; + } } async clearKnowledge(agentId: UUID, shared?: boolean): Promise { diff --git a/packages/adapter-sqljs/package.json b/packages/adapter-sqljs/package.json index 3c2661a16822..6701bae1784b 100644 --- a/packages/adapter-sqljs/package.json +++ b/packages/adapter-sqljs/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-sqljs", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-sqljs/src/index.ts b/packages/adapter-sqljs/src/index.ts index 6df3c93f03c3..0de00fd7e603 100644 --- a/packages/adapter-sqljs/src/index.ts +++ b/packages/adapter-sqljs/src/index.ts @@ -13,7 +13,7 @@ import { type Relationship, type UUID, RAGKnowledgeItem, - elizaLogger + elizaLogger, } from "@elizaos/core"; import { v4 } from "uuid"; import { sqliteTables } from "./sqliteTables.ts"; @@ -81,15 +81,26 @@ export class SqlJsDatabaseAdapter agentId: UUID; roomIds: UUID[]; tableName: string; + limit?: number; }): Promise { const placeholders = params.roomIds.map(() => "?").join(", "); - const sql = `SELECT * FROM memories WHERE 'type' = ? AND agentId = ? AND roomId IN (${placeholders})`; - const stmt = this.db.prepare(sql); + let sql = `SELECT * FROM memories WHERE 'type' = ? AND agentId = ? AND roomId IN (${placeholders})`; + const queryParams = [ params.tableName, params.agentId, ...params.roomIds, ]; + + // Add ordering and limit + sql += ` ORDER BY createdAt DESC`; + if (params.limit) { + sql += ` LIMIT ?`; + queryParams.push(params.limit.toString()); + } + + const stmt = this.db.prepare(sql); + elizaLogger.log({ queryParams }); stmt.bind(queryParams); elizaLogger.log({ queryParams }); @@ -226,6 +237,35 @@ export class SqlJsDatabaseAdapter return memory || null; } + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise { + if (memoryIds.length === 0) return []; + const placeholders = memoryIds.map(() => "?").join(","); + let sql = `SELECT * FROM memories WHERE id IN (${placeholders})`; + const queryParams: any[] = [...memoryIds]; + + if (tableName) { + sql += ` AND type = ?`; + queryParams.push(tableName); + } + + const stmt = this.db.prepare(sql); + stmt.bind(queryParams); + + const memories: Memory[] = []; + while (stmt.step()) { + const memory = stmt.getAsObject() as unknown as Memory; + memories.push({ + ...memory, + content: JSON.parse(memory.content as unknown as string), + }); + } + stmt.free(); + return memories; + } + async createMemory(memory: Memory, tableName: string): Promise { let isUnique = true; if (memory.embedding) { @@ -834,8 +874,10 @@ export class SqlJsDatabaseAdapter id: row.id, agentId: row.agentId, content: JSON.parse(row.content), - embedding: row.embedding ? new Float32Array(row.embedding) : undefined, // Convert Uint8Array back to Float32Array - createdAt: row.createdAt + embedding: row.embedding + ? new Float32Array(row.embedding) + : undefined, // Convert Uint8Array back to Float32Array + createdAt: row.createdAt, }); } stmt.free(); @@ -852,7 +894,7 @@ export class SqlJsDatabaseAdapter const cacheKey = `embedding_${params.agentId}_${params.searchText}`; const cachedResult = await this.getCache({ key: cacheKey, - agentId: params.agentId + agentId: params.agentId, }); if (cachedResult) { @@ -901,11 +943,11 @@ export class SqlJsDatabaseAdapter stmt.bind([ new Uint8Array(params.embedding.buffer), params.agentId, - `%${params.searchText || ''}%`, + `%${params.searchText || ""}%`, params.agentId, params.agentId, params.match_threshold, - params.match_count + params.match_count, ]); const results: RAGKnowledgeItem[] = []; @@ -915,9 +957,11 @@ export class SqlJsDatabaseAdapter id: row.id, agentId: row.agentId, content: JSON.parse(row.content), - embedding: row.embedding ? new Float32Array(row.embedding) : undefined, + embedding: row.embedding + ? new Float32Array(row.embedding) + : undefined, createdAt: row.createdAt, - similarity: row.keyword_score + similarity: row.keyword_score, }); } stmt.free(); @@ -925,7 +969,7 @@ export class SqlJsDatabaseAdapter await this.setCache({ key: cacheKey, agentId: params.agentId, - value: JSON.stringify(results) + value: JSON.stringify(results), }); return results; @@ -947,31 +991,41 @@ export class SqlJsDatabaseAdapter knowledge.id, metadata.isShared ? null : knowledge.agentId, JSON.stringify(knowledge.content), - knowledge.embedding ? new Uint8Array(knowledge.embedding.buffer) : null, + knowledge.embedding + ? new Uint8Array(knowledge.embedding.buffer) + : null, knowledge.createdAt || Date.now(), metadata.isMain ? 1 : 0, metadata.originalId || null, metadata.chunkIndex || null, - metadata.isShared ? 1 : 0 + metadata.isShared ? 1 : 0, ]); stmt.free(); } catch (error: any) { const isShared = knowledge.content.metadata?.isShared; - const isPrimaryKeyError = error?.code === 'SQLITE_CONSTRAINT_PRIMARYKEY'; + const isPrimaryKeyError = + error?.code === "SQLITE_CONSTRAINT_PRIMARYKEY"; if (isShared && isPrimaryKeyError) { - elizaLogger.info(`Shared knowledge ${knowledge.id} already exists, skipping`); + elizaLogger.info( + `Shared knowledge ${knowledge.id} already exists, skipping` + ); return; - } else if (!isShared && !error.message?.includes('SQLITE_CONSTRAINT_PRIMARYKEY')) { + } else if ( + !isShared && + !error.message?.includes("SQLITE_CONSTRAINT_PRIMARYKEY") + ) { elizaLogger.error(`Error creating knowledge ${knowledge.id}:`, { error, embeddingLength: knowledge.embedding?.length, - content: knowledge.content + content: knowledge.content, }); throw error; } - elizaLogger.debug(`Knowledge ${knowledge.id} already exists, skipping`); + elizaLogger.debug( + `Knowledge ${knowledge.id} already exists, skipping` + ); } } @@ -983,9 +1037,9 @@ export class SqlJsDatabaseAdapter } async clearKnowledge(agentId: UUID, shared?: boolean): Promise { - const sql = shared ? - `DELETE FROM knowledge WHERE ("agentId" = ? OR "isShared" = 1)` : - `DELETE FROM knowledge WHERE "agentId" = ?`; + const sql = shared + ? `DELETE FROM knowledge WHERE ("agentId" = ? OR "isShared" = 1)` + : `DELETE FROM knowledge WHERE "agentId" = ?`; const stmt = this.db.prepare(sql); stmt.run([agentId]); diff --git a/packages/adapter-supabase/package.json b/packages/adapter-supabase/package.json index f1785ef9746c..0ea64f5ac946 100644 --- a/packages/adapter-supabase/package.json +++ b/packages/adapter-supabase/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/adapter-supabase", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/adapter-supabase/src/index.ts b/packages/adapter-supabase/src/index.ts index 3800b845c98b..5392b49d59a4 100644 --- a/packages/adapter-supabase/src/index.ts +++ b/packages/adapter-supabase/src/index.ts @@ -10,7 +10,7 @@ import { Participant, Room, RAGKnowledgeItem, - elizaLogger + elizaLogger, } from "@elizaos/core"; import { DatabaseAdapter } from "@elizaos/core"; import { v4 as uuid } from "uuid"; @@ -114,16 +114,22 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { roomIds: UUID[]; agentId?: UUID; tableName: string; + limit?: number; }): Promise { let query = this.supabase .from(params.tableName) .select("*") - .in("roomId", params.roomIds); + .in("roomId", params.roomIds) + .order("createdAt", { ascending: false }); if (params.agentId) { query = query.eq("agentId", params.agentId); } + if (params.limit) { + query = query.limit(params.limit); + } + const { data, error } = await query; if (error) { @@ -364,6 +370,31 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { return data as Memory; } + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise { + if (memoryIds.length === 0) return []; + + let query = this.supabase + .from("memories") + .select("*") + .in("id", memoryIds); + + if (tableName) { + query = query.eq("type", tableName); + } + + const { data, error } = await query; + + if (error) { + console.error("Error retrieving memories by IDs:", error); + return []; + } + + return data as Memory[]; + } + async createMemory( memory: Memory, tableName: string, @@ -688,14 +719,14 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { agentId: UUID; }): Promise { const { data, error } = await this.supabase - .from('cache') - .select('value') - .eq('key', params.key) - .eq('agentId', params.agentId) + .from("cache") + .select("value") + .eq("key", params.key) + .eq("agentId", params.agentId) .single(); if (error) { - elizaLogger.error('Error fetching cache:', error); + elizaLogger.error("Error fetching cache:", error); return undefined; } @@ -707,17 +738,15 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { agentId: UUID; value: string; }): Promise { - const { error } = await this.supabase - .from('cache') - .upsert({ - key: params.key, - agentId: params.agentId, - value: params.value, - createdAt: new Date() - }); + const { error } = await this.supabase.from("cache").upsert({ + key: params.key, + agentId: params.agentId, + value: params.value, + createdAt: new Date(), + }); if (error) { - elizaLogger.error('Error setting cache:', error); + elizaLogger.error("Error setting cache:", error); return false; } @@ -730,10 +759,10 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { }): Promise { try { const { error } = await this.supabase - .from('cache') + .from("cache") .delete() - .eq('key', params.key) - .eq('agentId', params.agentId); + .eq("key", params.key) + .eq("agentId", params.agentId); if (error) { elizaLogger.error("Error deleting cache", { @@ -760,12 +789,12 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { query?: string; }): Promise { let query = this.supabase - .from('knowledge') - .select('*') + .from("knowledge") + .select("*") .or(`agentId.eq.${params.agentId},isShared.eq.true`); if (params.id) { - query = query.eq('id', params.id); + query = query.eq("id", params.id); } if (params.limit) { @@ -778,12 +807,17 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { throw new Error(`Error getting knowledge: ${error.message}`); } - return data.map(row => ({ + return data.map((row) => ({ id: row.id, agentId: row.agentId, - content: typeof row.content === 'string' ? JSON.parse(row.content) : row.content, - embedding: row.embedding ? new Float32Array(row.embedding) : undefined, - createdAt: new Date(row.createdAt).getTime() + content: + typeof row.content === "string" + ? JSON.parse(row.content) + : row.content, + embedding: row.embedding + ? new Float32Array(row.embedding) + : undefined, + createdAt: new Date(row.createdAt).getTime(), })); } @@ -797,7 +831,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { const cacheKey = `embedding_${params.agentId}_${params.searchText}`; const cachedResult = await this.getCache({ key: cacheKey, - agentId: params.agentId + agentId: params.agentId, }); if (cachedResult) { @@ -807,31 +841,36 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { // Convert Float32Array to array for Postgres vector const embedding = Array.from(params.embedding); - const { data, error } = await this.supabase.rpc('search_knowledge', { + const { data, error } = await this.supabase.rpc("search_knowledge", { query_embedding: embedding, query_agent_id: params.agentId, match_threshold: params.match_threshold, match_count: params.match_count, - search_text: params.searchText || '' + search_text: params.searchText || "", }); if (error) { throw new Error(`Error searching knowledge: ${error.message}`); } - const results = data.map(row => ({ + const results = data.map((row) => ({ id: row.id, agentId: row.agentId, - content: typeof row.content === 'string' ? JSON.parse(row.content) : row.content, - embedding: row.embedding ? new Float32Array(row.embedding) : undefined, + content: + typeof row.content === "string" + ? JSON.parse(row.content) + : row.content, + embedding: row.embedding + ? new Float32Array(row.embedding) + : undefined, createdAt: new Date(row.createdAt).getTime(), - similarity: row.similarity + similarity: row.similarity, })); await this.setCache({ key: cacheKey, agentId: params.agentId, - value: JSON.stringify(results) + value: JSON.stringify(results), }); return results; @@ -841,23 +880,26 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { try { const metadata = knowledge.content.metadata || {}; - const { error } = await this.supabase - .from('knowledge') - .insert({ - id: knowledge.id, - agentId: metadata.isShared ? null : knowledge.agentId, - content: knowledge.content, - embedding: knowledge.embedding ? Array.from(knowledge.embedding) : null, - createdAt: knowledge.createdAt || new Date(), - isMain: metadata.isMain || false, - originalId: metadata.originalId || null, - chunkIndex: metadata.chunkIndex || null, - isShared: metadata.isShared || false - }); + const { error } = await this.supabase.from("knowledge").insert({ + id: knowledge.id, + agentId: metadata.isShared ? null : knowledge.agentId, + content: knowledge.content, + embedding: knowledge.embedding + ? Array.from(knowledge.embedding) + : null, + createdAt: knowledge.createdAt || new Date(), + isMain: metadata.isMain || false, + originalId: metadata.originalId || null, + chunkIndex: metadata.chunkIndex || null, + isShared: metadata.isShared || false, + }); if (error) { - if (metadata.isShared && error.code === '23505') { // Unique violation - elizaLogger.info(`Shared knowledge ${knowledge.id} already exists, skipping`); + if (metadata.isShared && error.code === "23505") { + // Unique violation + elizaLogger.info( + `Shared knowledge ${knowledge.id} already exists, skipping` + ); return; } throw error; @@ -866,7 +908,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { elizaLogger.error(`Error creating knowledge ${knowledge.id}:`, { error, embeddingLength: knowledge.embedding?.length, - content: knowledge.content + content: knowledge.content, }); throw error; } @@ -874,9 +916,9 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { async removeKnowledge(id: UUID): Promise { const { error } = await this.supabase - .from('knowledge') + .from("knowledge") .delete() - .eq('id', id); + .eq("id", id); if (error) { throw new Error(`Error removing knowledge: ${error.message}`); @@ -886,23 +928,29 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { async clearKnowledge(agentId: UUID, shared?: boolean): Promise { if (shared) { const { error } = await this.supabase - .from('knowledge') + .from("knowledge") .delete() - .filter('agentId', 'eq', agentId) - .filter('isShared', 'eq', true); + .filter("agentId", "eq", agentId) + .filter("isShared", "eq", true); if (error) { - elizaLogger.error(`Error clearing shared knowledge for agent ${agentId}:`, error); + elizaLogger.error( + `Error clearing shared knowledge for agent ${agentId}:`, + error + ); throw error; } } else { const { error } = await this.supabase - .from('knowledge') + .from("knowledge") .delete() - .eq('agentId', agentId); + .eq("agentId", agentId); if (error) { - elizaLogger.error(`Error clearing knowledge for agent ${agentId}:`, error); + elizaLogger.error( + `Error clearing knowledge for agent ${agentId}:`, + error + ); throw error; } } diff --git a/packages/client-auto/package.json b/packages/client-auto/package.json index 6ee732d08516..8f0774315eb2 100644 --- a/packages/client-auto/package.json +++ b/packages/client-auto/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-auto", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-direct/package.json b/packages/client-direct/package.json index 048b2049a6fb..f5dcd1919647 100644 --- a/packages/client-direct/package.json +++ b/packages/client-direct/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-direct", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "module": "dist/index.js", "type": "module", @@ -21,6 +21,7 @@ "dependencies": { "@elizaos/core": "workspace:*", "@elizaos/plugin-image-generation": "workspace:*", + "@elizaos/plugin-tee-verifiable-log": "workspace:*", "@elizaos/plugin-tee-log": "workspace:*", "@types/body-parser": "1.19.5", "@types/cors": "2.8.17", diff --git a/packages/client-direct/src/README.md b/packages/client-direct/src/README.md index 547785563e84..b6c80cabb7f3 100644 --- a/packages/client-direct/src/README.md +++ b/packages/client-direct/src/README.md @@ -44,6 +44,133 @@ curl -X GET "http://localhost:3000/fine-tune/8566c47a-ada8-441c-95bc-7bb07656c4c -H "Authorization: Bearer jvBpxrTNqGqhnfQhSEqCdsG6aTSP8IBL". ``` + + +## Verifiable Attestations + +This function relies on [plugin-tee-verifiable-log](../../plugin-tee-verifiable-log/README.md) + +Enable Verifiable Logs, Configuration variables in .env +```shell +TEE_MODE="DOCKER" # LOCAL | DOCKER | PRODUCTION +WALLET_SECRET_SALT= "" # ONLY define if you want to use TEE Plugin, otherwise it will throw errors +VLOG="true" +``` +### APIs +### 1. Get verifiable agents +```shell +curl -X GET --location "http://localhost:3000/verifiable/agents" +``` +* Response success result +```shell +{ + "success": true, + "message": "Successfully get Agents", + "data": [ + { + "id": "c4598810-61a2-4ac8-ab85-b746402692c4", + "created_at": 1734526797906, + "agent_id": "9c321604-e69e-0e4c-ab84-bec6fd6baf92", + "agent_name": "Capila", + "agent_keypair_path": "/keys/verifiable_key", + "agent_keypair_vlog_pk": "0x045b51a28c3b071104f3094b1934343eb831b8d56f16fc6..." + } + ] +} +``` +* Response failure result +```shell +{ + "error": "failed to get agents registered ", + "details": "Cannot read properties of undefined (reading 'getService')", + "stack": "TypeError: Cannot read ..." +} +``` + +### 2.Query verifiable logs +```bash + +curl -X POST --location "http://localhost:3000/verifiable/logs" \ + -H "Content-Type: application/json" \ + -d '{ + "query": { + "contLike": "Twinkletwinkle" + }, + "page": 1, + "pageSize": 10 + }' +``` +The query body that can be queried are: +>* idEq: string; +>* agentIdEq: string; +>* roomIdEq: string; +>* userIdEq: string; +>* typeEq: string; +>* contLike: string; +>* signatureEq: string; + +* Response success result +```shell +{ + "success": true, + "message": "Successfully retrieved logs", + "data": { + "page": 1, + "pageSize": 10, + "total": 1, + "data": [ + { + "id": "b9ac4b2f-ecb5-4c5c-a981-d282b831e878", + "created_at": 1734526805664, + "agent_id": "9c321604-e69e-0e4c-ab84-bec6fd6baf92", + "room_id": "8c54580d-2c56-01e8-81e4-4160a02f3ee5", + "user_id": "9c321604-e69e-0e4c-ab84-bec6fd6baf92", + "type": "post tweet", + "content": "{\"text\":\"Twinkletwinkle, it's time to unlock your artistic values!\\n\\n My NFTs are here to bring the chill vibes to Web3.\\n\\n Let's wagmi and make this a day to remember!\",\"url\":\"https://twitter.com/....\"}", + "signature": "0x9ac77cfef9374bff3b41f96d0b0a8d61bfcf88e3a01f7bc20653494145ff31ef118a2a3cd94437481000a13500c6ed6714d8802bf2572a7da4de2e81a688d0b41c" + } + ] + } +} +``` +* Response failure result +```shell + +{ + "error": "Failed to Get Verifiable Logs", + "details": "Cannot read properties of undefined (reading 'getService')", + "stack": "TypeError: Cannot read ..." +} +``` + + +### 3.Get Tee Attestation +```shell +curl -X POST --location "http://localhost:3000/verifiable/attestation" \ + -H "Content-Type: application/json" \ + -d '{ + "agentId": "9c321604-e69e-0e4c-ab84-bec6fd6baf92", + "publicKey": "0x045b51a28c3b071104f3094b1934343eb831b8d56f16fc6e9a3304e9f051b24e584d806b20769b05eeade3a6c792db96f57b26cc38037907dd920e9be9f41f6184" + }' +``` +* Response success result +```shell +{ + "success": true, + "message": "Successfully get Attestation", + "data": "{\"quote\":\"0x04000300810000000e934d64208ed62112d13060cf062a398f78a9516b9f884ee7ad145e875b59592b09598ce02e4d4983ae4decab71f5147acd16a26326e01075a8d5b709727224bba449c9cd7fc2b490ea23d9e01cd932221d8b86a0a8a7be25c25571bceef0427131860fe0cb295b0d25e5ed1488d9a122c24ba4c1494c2a2578535c556752850c6bbd60c2482b5bb10b5157fe5f42b637457262fd4d8a92575b307f5453c1982a841b46cd60858a3f8ced7ca2ba1c02cf9fec3f23b30bbe8e30378e116bea58b4068bf0379964b6adcb2f680f4646b26a21bed6f8ac06f468cc356db0b2769638a02a7d6e0b69ae297304c62a1fd800703e8bfd340901b6ad412d9433eee04b67ab86311ebb4ee2f3a758ea3fda0e89f45c7ec9ca28e2d525fab6d3e62c3e2b6788dd9dec6e367975c0ac5f6c2aad436e14c75dd99a94c51d882efc0ea44ca8c251e3384b24a88af39ab070b65387ee5e0fd11212852663248c6f24a646c163273348ea03f99d028022b08e09b0b992d9b49c61246b298c3ec827af4973a57bc017a35e0f22750922f2cae660ed70797695c5c65104339f912e1da35a7c625e5fa470764228efe80309762e33ea295b8fd6bae7ef9e7f9a4210deaac322d26acf4e003aded3099c90d6f5c1caa6fb9d84e4f70da3ea1fbfd76c2c7bb544375f566a5182e142da67718a4db7b373ff7e8b4e14bf5a752c5cf88002555020a2a4938978849c1774810456a8fe89769a595676eb0fdadda83540d353efdd40a3efcfb80283abc942e9348d3fe04109fd9999ed6fae17b5d8de88dcd80e5d57cd576ffb7a21780bd6064b4e61f83d1ff1088e836f2a8aa4cdee685aa02303cb809a6e45997532d372b5b519d3ae03f08cb162020000f5672ea83d7b1e145824622fea621381d7b6a110b1b0fdda4e4e2c3565431d099e74829267a01345a2780d0387173419e23bdb72ea57294c696e14ac8198e0967e30dc93a361465d109c1a54f47c117adcba95fdc2cecbd2b35ba3fc7443d80f56e16499d4a85ae2970428848487f963c9366898b34ebbb349dc162d2127f2800000dc010000149f9a1f60ae565575037121aac4f9a10cf6d6e884df2aac1c2bb83f8cad17d0d27f7d4264bdb78a9fe056aba38ff666b22642a9471f351f04afa7ad727f80a1ecab742174c46b33f034fc43cdef08afde65b93aeb94db20b705b379407e50a648db3a3f5958ac29f9bcc32a46a3ea36be27bc049a1409e8543467926afce68eed7488c7120ff3bd6d79c61078111d285e13fc365c82da04469a77101e067bc24f0c4fd27c361430292b8af92f07ac2687532e36377a9c67fa65a17a1dedba2aabac079d3ee691fcdf3e10bf7a479ee58e27085f5ac700a2252899cd88ba13ab00b1cf12cbfca3bcdacaf870e904191bdf2e7426c86b092380fbb523086c294aaf64f3931c96ec7292e4a0aee03f4b0f0eb757d1dc96c7fd07dcad6d51622060e5db55cae0c45aab399caa785665302fff467b1caa98e4ef2bac9a02911388a44b69cf7f21bf3c2ce2da95f323ea3717eddfe97f486beb90dc7ff88377211dd8a89d2b77d044fae1423904839ad8b4662d8df7a414c9aec2c234c0df878093fc31714d2fee3c400cfbee9df0ee82df7d7361d53a7ce91b01e80d3dc9702eebb8dafa1cb3e2a5032fd64ded06e5f1bacd9c275604cedabbea82cec2cfa32384790a000000000000000000000078c50a00000000000000000000000000\",\"timestamp\":1734626127589}" +} +``` + +* Response failure result +```shell + +{ + "error": "Failed to Get Verifiable Logs", + "details": "Cannot read properties of undefined (reading 'getService')", + "stack": "TypeError: Cannot read ..." +} +``` # TEE Logging TEE Logging is a feature that allows you to log the activities of your agents. Through these logs, you can verify that the actions of the agents are protected by the TEE and that they are executed autonomously by Eliza, without any third-party interference. @@ -187,4 +314,4 @@ Example response when error: { "error": "Failed to get TEE logs" } -``` \ No newline at end of file +``` diff --git a/packages/client-direct/src/api.ts b/packages/client-direct/src/api.ts index c19ac5279c10..ff97d23f0e79 100644 --- a/packages/client-direct/src/api.ts +++ b/packages/client-direct/src/api.ts @@ -103,13 +103,31 @@ export function createApiRouter( }); }); + router.delete("/agents/:agentId", async (req, res) => { + const { agentId } = validateUUIDParams(req.params, res) ?? { + agentId: null, + }; + if (!agentId) return; + + const agent: AgentRuntime = agents.get(agentId); + + if (agent) { + agent.stop(); + directClient.unregisterAgent(agent); + res.status(204).send(); + } + else { + res.status(404).json({ error: "Agent not found" }); + } + }); + router.post("/agents/:agentId/set", async (req, res) => { const { agentId } = validateUUIDParams(req.params, res) ?? { agentId: null, }; if (!agentId) return; - let agent: AgentRuntime = agents.get(agentId); + const agent: AgentRuntime = agents.get(agentId); // update character if (agent) { @@ -133,9 +151,17 @@ export function createApiRouter( } // start it up (and register it) - agent = await directClient.startAgent(character); - elizaLogger.log(`${character.name} started`); - + try { + await directClient.startAgent(character); + elizaLogger.log(`${character.name} started`); + } catch (e) { + elizaLogger.error(`Error starting agent: ${e}`); + res.status(500).json({ + success: false, + message: e.message, + }); + return; + } res.json({ id: character.id, character: character, @@ -330,3 +356,4 @@ export function createApiRouter( return router; } + diff --git a/packages/client-direct/src/index.ts b/packages/client-direct/src/index.ts index 86f3593b548b..15d801810881 100644 --- a/packages/client-direct/src/index.ts +++ b/packages/client-direct/src/index.ts @@ -25,6 +25,7 @@ import { import { createApiRouter } from "./api.ts"; import * as fs from "fs"; import * as path from "path"; +import { createVerifiableLogApiRouter } from "./verifiable-log-api.ts"; import OpenAI from "openai"; const storage = multer.diskStorage({ @@ -135,6 +136,10 @@ export class DirectClient { const apiRouter = createApiRouter(this.agents, this); this.app.use(apiRouter); + + const apiLogRouter = createVerifiableLogApiRouter(this.agents); + this.app.use(apiLogRouter); + // Define an interface that extends the Express Request interface interface CustomRequest extends ExpressRequest { file?: Express.Multer.File; diff --git a/packages/client-direct/src/verifiable-log-api.ts b/packages/client-direct/src/verifiable-log-api.ts new file mode 100644 index 000000000000..dd0054029f5a --- /dev/null +++ b/packages/client-direct/src/verifiable-log-api.ts @@ -0,0 +1,119 @@ +import express from "express"; +import bodyParser from "body-parser"; +import cors from "cors"; + +import { AgentRuntime, elizaLogger, ServiceType } from "@elizaos/core"; +import { + VerifiableLogService, + VerifiableLogQuery, +} from "@elizaos/plugin-tee-verifiable-log"; + +export function createVerifiableLogApiRouter( + agents: Map +) { + const router = express.Router(); + router.use(cors()); + router.use(bodyParser.json()); + router.use(bodyParser.urlencoded({ extended: true })); + + router.get( + "/verifiable/agents", + async (req: express.Request, res: express.Response) => { + try { + // call the listAgent method + const agentRuntime: AgentRuntime | undefined = agents.values().next().value; + const pageQuery = await agentRuntime + .getService( + ServiceType.VERIFIABLE_LOGGING + ) + .listAgent(); + + res.json({ + success: true, + message: "Successfully get Agents", + data: pageQuery, + }); + } catch (error) { + elizaLogger.error("Detailed error:", error); + res.status(500).json({ + error: "failed to get agents registered ", + details: error.message, + stack: error.stack, + }); + } + } + ); + router.post( + "/verifiable/attestation", + async (req: express.Request, res: express.Response) => { + try { + const query = req.body || {}; + + const verifiableLogQuery = { + agentId: query.agentId || "", + publicKey: query.publicKey || "", + }; + const agentRuntime: AgentRuntime | undefined = agents.values().next().value; + const pageQuery = await agentRuntime + .getService( + ServiceType.VERIFIABLE_LOGGING + ) + .generateAttestation(verifiableLogQuery); + + res.json({ + success: true, + message: "Successfully get Attestation", + data: pageQuery, + }); + } catch (error) { + elizaLogger.error("Detailed error:", error); + res.status(500).json({ + error: "Failed to Get Attestation", + details: error.message, + stack: error.stack, + }); + } + } + ); + router.post( + "/verifiable/logs", + async (req: express.Request, res: express.Response) => { + try { + const query = req.body.query || {}; + const page = parseInt(req.body.page) || 1; + const pageSize = parseInt(req.body.pageSize) || 10; + + const verifiableLogQuery: VerifiableLogQuery = { + idEq: query.idEq || "", + agentIdEq: query.agentIdEq || "", + roomIdEq: query.roomIdEq || "", + userIdEq: query.userIdEq || "", + typeEq: query.typeEq || "", + contLike: query.contLike || "", + signatureEq: query.signatureEq || "", + }; + const agentRuntime: AgentRuntime | undefined = agents.values().next().value; + const pageQuery = await agentRuntime + .getService( + ServiceType.VERIFIABLE_LOGGING + ) + .pageQueryLogs(verifiableLogQuery, page, pageSize); + + res.json({ + success: true, + message: "Successfully retrieved logs", + data: pageQuery, + }); + } catch (error) { + elizaLogger.error("Detailed error:", error); + res.status(500).json({ + error: "Failed to Get Verifiable Logs", + details: error.message, + stack: error.stack, + }); + } + } + ); + + return router; +} diff --git a/packages/client-discord/package.json b/packages/client-discord/package.json index 9414c99c7b97..a9cf164c4f5c 100644 --- a/packages/client-discord/package.json +++ b/packages/client-discord/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-discord", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-farcaster/package.json b/packages/client-farcaster/package.json index 5da998b55c18..88ac8fc1f786 100644 --- a/packages/client-farcaster/package.json +++ b/packages/client-farcaster/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-farcaster", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-farcaster/src/actions.ts b/packages/client-farcaster/src/actions.ts index f63171a5ea0a..ac3d5b1c010f 100644 --- a/packages/client-farcaster/src/actions.ts +++ b/packages/client-farcaster/src/actions.ts @@ -50,6 +50,7 @@ export async function sendCast({ cast, memory: createCastMemory({ roomId, + senderId: runtime.agentId, runtime, cast, }), diff --git a/packages/client-farcaster/src/client.ts b/packages/client-farcaster/src/client.ts index 895c80054c32..ba569dbe8085 100644 --- a/packages/client-farcaster/src/client.ts +++ b/packages/client-farcaster/src/client.ts @@ -1,6 +1,7 @@ import { IAgentRuntime, elizaLogger } from "@elizaos/core"; import { NeynarAPIClient, isApiErrorResponse } from "@neynar/nodejs-sdk"; import { NeynarCastResponse, Cast, Profile, FidRequest, CastId } from "./types"; +import { FarcasterConfig } from "./environment"; export class FarcasterClient { runtime: IAgentRuntime; @@ -8,6 +9,7 @@ export class FarcasterClient { signerUuid: string; cache: Map; lastInteractionTimestamp: Date; + farcasterConfig: FarcasterConfig; constructor(opts: { runtime: IAgentRuntime; @@ -16,12 +18,14 @@ export class FarcasterClient { neynar: NeynarAPIClient; signerUuid: string; cache: Map; + farcasterConfig: FarcasterConfig; }) { this.cache = opts.cache; this.runtime = opts.runtime; this.neynar = opts.neynar; this.signerUuid = opts.signerUuid; this.lastInteractionTimestamp = new Date(); + this.farcasterConfig = opts.farcasterConfig; } async loadCastFromNeynarResponse(neynarResponse: any): Promise { diff --git a/packages/client-farcaster/src/environment.ts b/packages/client-farcaster/src/environment.ts new file mode 100644 index 000000000000..442ac811093d --- /dev/null +++ b/packages/client-farcaster/src/environment.ts @@ -0,0 +1,140 @@ +import { + parseBooleanFromText, + IAgentRuntime, + ActionTimelineType, +} from "@elizaos/core"; +import { z, ZodError } from "zod"; + +export const DEFAULT_MAX_CAST_LENGTH = 320; +const DEFAULT_POLL_INTERVAL= 120; // 2 minutes +const DEFAULT_POST_INTERVAL_MIN = 90; // 1.5 hours +const DEFAULT_POST_INTERVAL_MAX = 180; // 3 hours +/** + * This schema defines all required/optional environment settings for Farcaster client + */ +export const farcasterEnvSchema = z.object({ + FARCASTER_DRY_RUN: z.boolean(), + FARCASTER_FID: z.number().int().min(1, "Farcaster fid is required"), + MAX_CAST_LENGTH: z.number().int().default(DEFAULT_MAX_CAST_LENGTH), + FARCASTER_POLL_INTERVAL: z.number().int().default(DEFAULT_POLL_INTERVAL), + ENABLE_POST: z.boolean(), + POST_INTERVAL_MIN: z.number().int(), + POST_INTERVAL_MAX: z.number().int(), + ENABLE_ACTION_PROCESSING: z.boolean(), + ACTION_INTERVAL: z.number().int(), + POST_IMMEDIATELY: z.boolean(), + MAX_ACTIONS_PROCESSING: z.number().int(), + ACTION_TIMELINE_TYPE: z + .nativeEnum(ActionTimelineType) + .default(ActionTimelineType.ForYou), +}); + +export type FarcasterConfig = z.infer; + +function safeParseInt( + value: string | undefined | null, + defaultValue: number +): number { + if (!value) return defaultValue; + const parsed = parseInt(value, 10); + return Number.isNaN(parsed) ? defaultValue : Math.max(1, parsed); +} + +/** + * Validates or constructs a FarcasterConfig object using zod, + * taking values from the IAgentRuntime or process.env as needed. + */ +export async function validateFarcasterConfig( + runtime: IAgentRuntime +): Promise { + try { + const farcasterConfig = { + FARCASTER_DRY_RUN: + parseBooleanFromText( + runtime.getSetting("FARCASTER_DRY_RUN") || + process.env.FARCASTER_DRY_RUN || + "false" + ), + + FARCASTER_FID: safeParseInt( + runtime.getSetting("FARCASTER_FID") || + process.env.FARCASTER_FID, + 0 + ), + + MAX_CAST_LENGTH: safeParseInt( + runtime.getSetting("MAX_CAST_LENGTH") || + process.env.MAX_CAST_LENGTH, + DEFAULT_MAX_CAST_LENGTH + ), + + FARCASTER_POLL_INTERVAL: safeParseInt( + runtime.getSetting("FARCASTER_POLL_INTERVAL") || + process.env.FARCASTER_POLL_INTERVAL, + DEFAULT_POLL_INTERVAL + ), + + ENABLE_POST: parseBooleanFromText( + runtime.getSetting("ENABLE_POST") || + process.env.ENABLE_POST || + "true" + ), + + POST_INTERVAL_MIN: safeParseInt( + runtime.getSetting("POST_INTERVAL_MIN") || + process.env.POST_INTERVAL_MIN, + DEFAULT_POST_INTERVAL_MIN + ), + + POST_INTERVAL_MAX: safeParseInt( + runtime.getSetting("POST_INTERVAL_MAX") || + process.env.POST_INTERVAL_MAX, + DEFAULT_POST_INTERVAL_MAX + ), + + ENABLE_ACTION_PROCESSING: + parseBooleanFromText( + runtime.getSetting("ENABLE_ACTION_PROCESSING") || + process.env.ENABLE_ACTION_PROCESSING || + "false" + ) ?? false, + + ACTION_INTERVAL: safeParseInt( + runtime.getSetting("ACTION_INTERVAL") || + process.env.ACTION_INTERVAL, + 5 // 5 minutes + ), + + POST_IMMEDIATELY: + parseBooleanFromText( + runtime.getSetting("POST_IMMEDIATELY") || + process.env.POST_IMMEDIATELY || + "false" + ) ?? false, + + MAX_ACTIONS_PROCESSING: safeParseInt( + runtime.getSetting("MAX_ACTIONS_PROCESSING") || + process.env.MAX_ACTIONS_PROCESSING, + 1 + ), + + ACTION_TIMELINE_TYPE: ( + runtime.getSetting("ACTION_TIMELINE_TYPE") || + process.env.ACTION_TIMELINE_TYPE || + ActionTimelineType.ForYou + ) as ActionTimelineType, + }; + + return farcasterEnvSchema.parse(farcasterConfig); + } catch (error) { + if (error instanceof ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `Farcaster configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/client-farcaster/src/index.ts b/packages/client-farcaster/src/index.ts index a2c3e2927b43..14295890d28e 100644 --- a/packages/client-farcaster/src/index.ts +++ b/packages/client-farcaster/src/index.ts @@ -3,20 +3,22 @@ import { FarcasterClient } from "./client"; import { FarcasterPostManager } from "./post"; import { FarcasterInteractionManager } from "./interactions"; import { Configuration, NeynarAPIClient } from "@neynar/nodejs-sdk"; +import { validateFarcasterConfig, FarcasterConfig } from "./environment"; -export class FarcasterAgentClient implements Client { +/** + * A manager that orchestrates all Farcaster operations: + * - client: base operations (Neynar client, hub connection, etc.) + * - posts: autonomous posting logic + * - interactions: handling mentions, replies, likes, etc. + */ +class FarcasterManager { client: FarcasterClient; posts: FarcasterPostManager; interactions: FarcasterInteractionManager; - private signerUuid: string; - constructor( - public runtime: IAgentRuntime, - client?: FarcasterClient - ) { + constructor(runtime: IAgentRuntime, farcasterConfig: FarcasterConfig) { const cache = new Map(); - this.signerUuid = runtime.getSetting("FARCASTER_NEYNAR_SIGNER_UUID")!; const neynarConfig = new Configuration({ @@ -25,31 +27,28 @@ export class FarcasterAgentClient implements Client { const neynarClient = new NeynarAPIClient(neynarConfig); - this.client = - client ?? - new FarcasterClient({ - runtime, - ssl: true, - url: - runtime.getSetting("FARCASTER_HUB_URL") ?? - "hub.pinata.cloud", - neynar: neynarClient, - signerUuid: this.signerUuid, - cache, - }); - - elizaLogger.info("Farcaster Neynar client initialized."); + this.client = new FarcasterClient({ + runtime, + ssl: true, + url: runtime.getSetting("FARCASTER_HUB_URL") ?? "hub.pinata.cloud", + neynar: neynarClient, + signerUuid: this.signerUuid, + cache, + farcasterConfig, + }); + + elizaLogger.success("Farcaster Neynar client initialized."); this.posts = new FarcasterPostManager( this.client, - this.runtime, + runtime, this.signerUuid, cache ); this.interactions = new FarcasterInteractionManager( this.client, - this.runtime, + runtime, this.signerUuid, cache ); @@ -63,3 +62,32 @@ export class FarcasterAgentClient implements Client { await Promise.all([this.posts.stop(), this.interactions.stop()]); } } + +export const FarcasterClientInterface: Client = { + async start(runtime: IAgentRuntime) { + const farcasterConfig = await validateFarcasterConfig(runtime); + + elizaLogger.log("Farcaster client started"); + + const manager = new FarcasterManager(runtime, farcasterConfig); + + // Start all services + await manager.start(); + runtime.clients.farcaster = manager; + return manager; + }, + + async stop(runtime: IAgentRuntime) { + try { + // stop it + elizaLogger.log("Stopping farcaster client", runtime.agentId); + if (runtime.clients.farcaster) { + await runtime.clients.farcaster.stop(); + } + } catch (e) { + elizaLogger.error("client-farcaster interface stop error", e); + } + }, +}; + +export default FarcasterClientInterface; diff --git a/packages/client-farcaster/src/interactions.ts b/packages/client-farcaster/src/interactions.ts index 2363df69f53d..eea862df182a 100644 --- a/packages/client-farcaster/src/interactions.ts +++ b/packages/client-farcaster/src/interactions.ts @@ -43,9 +43,8 @@ export class FarcasterInteractionManager { this.timeout = setTimeout( handleInteractionsLoop, - Number( - this.runtime.getSetting("FARCASTER_POLL_INTERVAL") || 120 - ) * 1000 // Default to 2 minutes + Number(this.client.farcasterConfig?.FARCASTER_POLL_INTERVAL ?? 120) * + 1000 // Default to 2 minutes ); }; @@ -57,7 +56,11 @@ export class FarcasterInteractionManager { } private async handleInteractions() { - const agentFid = Number(this.runtime.getSetting("FARCASTER_FID")); + const agentFid = this.client.farcasterConfig?.FARCASTER_FID ?? 0; + if (!agentFid) { + elizaLogger.info("No FID found, skipping interactions"); + return; + } const mentions = await this.client.getMentions({ fid: agentFid, @@ -98,7 +101,7 @@ export class FarcasterInteractionManager { }); const memory: Memory = { - content: { text: mention.text, hash: mention.hash }, + content: { text: mention.text }, agentId: this.runtime.agentId, userId, roomId, @@ -138,6 +141,8 @@ export class FarcasterInteractionManager { const currentPost = formatCast(cast); + const senderId = stringToUuid(cast.authorFid.toString()); + const { timeline } = await this.client.getTimeline({ fid: agent.fid, pageSize: 10, @@ -190,6 +195,7 @@ export class FarcasterInteractionManager { await this.runtime.messageManager.createMemory( createCastMemory({ roomId: memory.roomId, + senderId, runtime: this.runtime, cast, }) @@ -231,7 +237,7 @@ export class FarcasterInteractionManager { if (!responseContent.text) return; - if (this.runtime.getSetting("FARCASTER_DRY_RUN") === "true") { + if (this.client.farcasterConfig?.FARCASTER_DRY_RUN) { elizaLogger.info( `Dry run: would have responded to cast ${cast.hash} with ${responseContent.text}` ); @@ -266,7 +272,7 @@ export class FarcasterInteractionManager { } return results.map((result) => result.memory); } catch (error) { - console.error("Error sending response cast:", error); + elizaLogger.error("Error sending response cast:", error); return []; } }; @@ -276,7 +282,7 @@ export class FarcasterInteractionManager { const newState = await this.runtime.updateRecentMessageState(state); await this.runtime.processActions( - memory, + { ...memory, content: { ...memory.content, cast } }, responseMessages, newState, callback diff --git a/packages/client-farcaster/src/memory.ts b/packages/client-farcaster/src/memory.ts index 94ea8eae9524..f12d408a501b 100644 --- a/packages/client-farcaster/src/memory.ts +++ b/packages/client-farcaster/src/memory.ts @@ -13,10 +13,12 @@ import { FarcasterClient } from "./client"; export function createCastMemory({ roomId, + senderId, runtime, cast, }: { roomId: UUID; + senderId: UUID; runtime: IAgentRuntime; cast: Cast; }): Memory { @@ -33,7 +35,7 @@ export function createCastMemory({ agentId: runtime.agentId, }), agentId: runtime.agentId, - userId: runtime.agentId, + userId: senderId, content: { text: cast.text, source: "farcaster", @@ -75,7 +77,7 @@ export async function buildConversationThread({ if (!memory) { elizaLogger.log("Creating memory for cast", currentCast.hash); - const userId = stringToUuid(currentCast.profile.username); + const userId = stringToUuid(currentCast.authorFid.toString()); await runtime.ensureConnection( userId, @@ -88,6 +90,7 @@ export async function buildConversationThread({ await runtime.messageManager.createMemory( createCastMemory({ roomId, + senderId: userId, runtime, cast: currentCast, }) diff --git a/packages/client-farcaster/src/post.ts b/packages/client-farcaster/src/post.ts index 6733ce1af1d5..f099a447921b 100644 --- a/packages/client-farcaster/src/post.ts +++ b/packages/client-farcaster/src/post.ts @@ -13,31 +13,92 @@ import { createCastMemory } from "./memory"; import { sendCast } from "./actions"; export class FarcasterPostManager { + client: FarcasterClient; + runtime: IAgentRuntime; + fid: number; + isDryRun: boolean; private timeout: NodeJS.Timeout | undefined; constructor( - public client: FarcasterClient, - public runtime: IAgentRuntime, + client: FarcasterClient, + runtime: IAgentRuntime, private signerUuid: string, public cache: Map - ) {} + ) { + this.client = client; + this.runtime = runtime; + + this.fid = this.client.farcasterConfig?.FARCASTER_FID ?? 0; + this.isDryRun = this.client.farcasterConfig?.FARCASTER_DRY_RUN ?? false; + + // Log configuration on initialization + elizaLogger.log("Farcaster Client Configuration:"); + elizaLogger.log(`- FID: ${this.fid}`); + elizaLogger.log( + `- Dry Run Mode: ${this.isDryRun ? "enabled" : "disabled"}` + ); + elizaLogger.log( + `- Enable Post: ${this.client.farcasterConfig.ENABLE_POST ? "enabled" : "disabled"}` + ); + if (this.client.farcasterConfig.ENABLE_POST) { + elizaLogger.log( + `- Post Interval: ${this.client.farcasterConfig.POST_INTERVAL_MIN}-${this.client.farcasterConfig.POST_INTERVAL_MAX} minutes` + ); + elizaLogger.log( + `- Post Immediately: ${this.client.farcasterConfig.POST_IMMEDIATELY ? "enabled" : "disabled"}` + ); + } + elizaLogger.log( + `- Action Processing: ${this.client.farcasterConfig.ENABLE_ACTION_PROCESSING ? "enabled" : "disabled"}` + ); + elizaLogger.log( + `- Action Interval: ${this.client.farcasterConfig.ACTION_INTERVAL} minutes` + ); + + if (this.isDryRun) { + elizaLogger.log( + "Farcaster client initialized in dry run mode - no actual casts should be posted" + ); + } + } public async start() { const generateNewCastLoop = async () => { - try { - await this.generateNewCast(); - } catch (error) { - elizaLogger.error(error); - return; + + const lastPost = await this.runtime.cacheManager.get<{ + timestamp: number; + }>("farcaster/" + this.fid + "/lastPost"); + + const lastPostTimestamp = lastPost?.timestamp ?? 0; + const minMinutes = this.client.farcasterConfig.POST_INTERVAL_MIN; + const maxMinutes = this.client.farcasterConfig.POST_INTERVAL_MAX; + const randomMinutes = + Math.floor(Math.random() * (maxMinutes - minMinutes + 1)) + + minMinutes; + const delay = randomMinutes * 60 * 1000; + + if (Date.now() > lastPostTimestamp + delay) { + try { + await this.generateNewCast(); + } catch (error) { + elizaLogger.error(error); + return; + } } - this.timeout = setTimeout( - generateNewCastLoop, - (Math.floor(Math.random() * (4 - 1 + 1)) + 1) * 60 * 60 * 1000 - ); // Random interval between 1 and 4 hours + this.timeout = setTimeout(() => { + generateNewCastLoop(); // Set up next iteration + }, delay); + + elizaLogger.log(`Next cast scheduled in ${randomMinutes} minutes`); }; - generateNewCastLoop(); + if (this.client.farcasterConfig.ENABLE_POST) { + if (this.client.farcasterConfig.POST_IMMEDIATELY) { + await this.generateNewCast(); + } + generateNewCastLoop(); + } } public async stop() { @@ -47,9 +108,7 @@ export class FarcasterPostManager { private async generateNewCast() { elizaLogger.info("Generating new cast"); try { - const fid = Number(this.runtime.getSetting("FARCASTER_FID")!); - - const profile = await this.client.getProfile(fid); + const profile = await this.client.getProfile(this.fid); await this.runtime.ensureUserExists( this.runtime.agentId, profile.username, @@ -58,7 +117,7 @@ export class FarcasterPostManager { ); const { timeline } = await this.client.getTimeline({ - fid, + fid: this.fid, pageSize: 10, }); @@ -132,6 +191,14 @@ export class FarcasterPostManager { profile, }); + await this.runtime.cacheManager.set( + `farcaster/${this.fid}/lastCast`, + { + hash: cast.hash, + timestamp: Date.now(), + } + ); + const roomId = castUuid({ agentId: this.runtime.agentId, hash: cast.hash, @@ -151,6 +218,7 @@ export class FarcasterPostManager { await this.runtime.messageManager.createMemory( createCastMemory({ roomId, + senderId: this.runtime.agentId, runtime: this.runtime, cast, }) diff --git a/packages/client-github/README.md b/packages/client-github/README.md index 43bcc90ccb14..17ec51f72b0c 100644 --- a/packages/client-github/README.md +++ b/packages/client-github/README.md @@ -47,7 +47,6 @@ const client = await GitHubClientInterface.start(runtime); // Convert repository files to agent memories await client.createMemoriesFromFiles(); -typescript // Convert repository files to agent memories await client.createMemoriesFromFiles(); ``` @@ -67,8 +66,6 @@ await client.createPullRequest( "Implements new functionality with tests" ); - -typescript await client.createPullRequest( "Feature: Add new functionality", "feature/new-feature", @@ -94,8 +91,6 @@ await client.createCommit( } ] ); - - ``` ## API Reference diff --git a/packages/client-github/__tests__/environment.test.ts b/packages/client-github/__tests__/environment.test.ts new file mode 100644 index 000000000000..5efb2836bff0 --- /dev/null +++ b/packages/client-github/__tests__/environment.test.ts @@ -0,0 +1,50 @@ +import { describe, it, expect, vi } from 'vitest'; +import { validateGithubConfig, githubEnvSchema } from '../src/environment'; +import { IAgentRuntime } from '@elizaos/core'; + +describe('GitHub Environment Configuration', () => { + const mockRuntime: IAgentRuntime = { + getSetting: vi.fn(), + } as unknown as IAgentRuntime; + + it('validates correct GitHub configuration', async () => { + const validConfig = { + GITHUB_OWNER: 'testowner', + GITHUB_REPO: 'testrepo', + GITHUB_BRANCH: 'main', + GITHUB_PATH: 'src', + GITHUB_API_TOKEN: 'ghp_test123', + }; + + vi.mocked(mockRuntime.getSetting).mockImplementation((key: string) => validConfig[key as keyof typeof validConfig]); + + const config = await validateGithubConfig(mockRuntime); + expect(config).toEqual(validConfig); + }); + + it('throws error for missing configuration', async () => { + const invalidConfig = { + GITHUB_OWNER: '', + GITHUB_REPO: '', + GITHUB_BRANCH: '', + GITHUB_PATH: '', + GITHUB_API_TOKEN: '', + }; + + vi.mocked(mockRuntime.getSetting).mockImplementation((key: string) => invalidConfig[key as keyof typeof invalidConfig]); + + await expect(validateGithubConfig(mockRuntime)).rejects.toThrow(); + }); + + it('throws error for partial configuration', async () => { + const partialConfig = { + GITHUB_OWNER: 'testowner', + GITHUB_REPO: 'testrepo', + // Missing other required fields + }; + + vi.mocked(mockRuntime.getSetting).mockImplementation((key: string) => partialConfig[key as keyof typeof partialConfig]); + + await expect(validateGithubConfig(mockRuntime)).rejects.toThrow(); + }); +}); diff --git a/packages/client-github/__tests__/index.test.ts b/packages/client-github/__tests__/index.test.ts new file mode 100644 index 000000000000..68723df9146e --- /dev/null +++ b/packages/client-github/__tests__/index.test.ts @@ -0,0 +1,88 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { GitHubClient, GitHubClientInterface } from '../src'; +import { AgentRuntime, IAgentRuntime } from '@elizaos/core'; +import { Octokit } from '@octokit/rest'; +import simpleGit from 'simple-git'; +import fs from 'fs'; +import fsPromises from 'fs/promises'; + +// Mock external dependencies +vi.mock('@octokit/rest', () => ({ + Octokit: vi.fn(), +})); + +vi.mock('simple-git', () => ({ + default: vi.fn(() => ({ + clone: vi.fn(), + pull: vi.fn(), + checkout: vi.fn(), + })), +})); + +vi.mock('fs/promises', async (importOriginal) => { + const actual = await importOriginal() as typeof fsPromises; + return { + ...actual, + mkdir: vi.fn(), + lstat: vi.fn(), + readdir: vi.fn(), + readFile: vi.fn(), + writeFile: vi.fn(), + }; +}); + +vi.mock('fs', async (importOriginal) => { + const actual = await importOriginal() as typeof fs; + return { + ...actual, + existsSync: vi.fn(), + realpathSync: vi.fn(), + lstatSync: vi.fn(), + readdirSync: vi.fn(), + }; +}); + +describe('GitHubClient', () => { + let mockRuntime: AgentRuntime; + const mockConfig = { + GITHUB_OWNER: 'testowner', + GITHUB_REPO: 'testrepo', + GITHUB_BRANCH: 'main', + GITHUB_PATH: 'src', + GITHUB_API_TOKEN: 'ghp_test123', + }; + + beforeEach(() => { + vi.clearAllMocks(); + mockRuntime = { + getSetting: vi.fn((key: string) => mockConfig[key as keyof typeof mockConfig]), + } as unknown as AgentRuntime; + }); + + it('initializes with correct configuration', () => { + const client = new GitHubClient(mockRuntime); + expect(Octokit).toHaveBeenCalledWith({ auth: mockConfig.GITHUB_API_TOKEN }); + }); + + describe('GitHubClientInterface', () => { + it('has start and stop methods', () => { + expect(GitHubClientInterface.start).toBeDefined(); + expect(GitHubClientInterface.stop).toBeDefined(); + }); + + it('start method initializes client', async () => { + const runtime = { + getSetting: vi.fn((key: string) => mockConfig[key as keyof typeof mockConfig]), + } as unknown as IAgentRuntime; + + await GitHubClientInterface.start(runtime); + // Add more specific assertions based on what start should do + }); + + it('stop method cleans up resources', () => { + const runtime = {} as IAgentRuntime; + GitHubClientInterface.stop(runtime); + // Add assertions for cleanup if needed + }); + }); +}); diff --git a/packages/client-github/package.json b/packages/client-github/package.json index 27c194281324..a740dc7fa592 100644 --- a/packages/client-github/package.json +++ b/packages/client-github/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-github", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", @@ -27,11 +27,14 @@ }, "devDependencies": { "@types/glob": "8.1.0", - "tsup": "8.3.5" + "tsup": "8.3.5", + "vitest": "^1.2.1" }, "scripts": { "build": "tsup --format esm --dts", "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." + "lint": "eslint --fix --cache .", + "test": "vitest run", + "test:watch": "vitest" } } diff --git a/packages/client-instagram/README.md b/packages/client-instagram/README.md new file mode 100644 index 000000000000..6315f65dec36 --- /dev/null +++ b/packages/client-instagram/README.md @@ -0,0 +1,113 @@ +# @elizaos/client-instagram + +An Instagram client implementation for ElizaOS, enabling Instagram integration with support for media posting, comment handling, and interaction management. + +## Features + +- Instagram API integration using instagram-private-api +- Media post creation and scheduling +- Comment and interaction handling +- Profile management +- Media processing utilities +- Rate limiting and request queuing +- Session management and caching + +## Installation + +As this is a workspace package, it's installed as part of the ElizaOS monorepo: + +```bash +pnpm install +``` + +## Configuration + +The client requires the following environment variables: + +```bash +# Instagram Credentials +INSTAGRAM_USERNAME=your_username +INSTAGRAM_PASSWORD=your_password +INSTAGRAM_APP_ID=your_app_id +INSTAGRAM_APP_SECRET=your_app_secret + +# Optional Business Account +INSTAGRAM_BUSINESS_ACCOUNT_ID=your_business_account_id + +# Posting Configuration +POST_INTERVAL_MIN=90 # Minimum interval between posts (minutes) +POST_INTERVAL_MAX=180 # Maximum interval between posts (minutes) +ENABLE_ACTION_PROCESSING=true +ACTION_INTERVAL=5 # Minutes between action processing +MAX_ACTIONS_PROCESSING=1 # Maximum actions to process per interval +``` + +## Usage + +### Basic Initialization + +```typescript +import { InstagramClientInterface } from '@elizaos/client-instagram'; + +// Initialize the client +const instagramManager = await InstagramClientInterface.start(runtime); +``` + +### Posting Content + +All posts on Instagram must include media (image, video, or carousel): + +```typescript +// Post a single image +await instagramManager.post.createPost({ + media: [{ + type: 'IMAGE', + url: 'path/to/image.jpg' + }], + caption: 'Hello Instagram!' +}); + +// Post a carousel +await instagramManager.post.createPost({ + media: [ + { type: 'IMAGE', url: 'path/to/image1.jpg' }, + { type: 'IMAGE', url: 'path/to/image2.jpg' } + ], + caption: 'Check out these photos!' +}); +``` + +### Handling Interactions + +```typescript +// Handle comments +await instagramManager.interaction.handleComment({ + mediaId: 'media-123', + comment: 'Great post!', + userId: 'user-123' +}); + +// Like media +await instagramManager.interaction.likeMedia('media-123'); +``` + +## Key Components + +1. ClientBase + - Handles authentication and session management + - Manages API rate limiting + - Provides core API functionality + + +2. PostClient + - Manages media uploads + - Handles post scheduling + - Processes media before upload + + +3. InteractionClient + - Handles comments and likes + - Manages user interactions + - Processes notifications + + diff --git a/packages/client-instagram/eslint.config.mjs b/packages/client-instagram/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/client-instagram/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/client-instagram/package.json b/packages/client-instagram/package.json new file mode 100644 index 000000000000..aecad28c0f43 --- /dev/null +++ b/packages/client-instagram/package.json @@ -0,0 +1,37 @@ +{ + "name": "@elizaos/client-instagram", + "version": "0.1.9-alpha.1", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "@elizaos/source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "files": [ + "dist" + ], + "dependencies": { + "@elizaos/core": "workspace:*", + "zod": "3.23.8", + "instagram-private-api": "^1.45.3", + "sharp": "^0.33.2", + "glob": "11.0.0" + }, + "devDependencies": { + "tsup": "8.3.5", + "@types/sharp": "^0.32.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } +} diff --git a/packages/client-instagram/src/environment.ts b/packages/client-instagram/src/environment.ts new file mode 100644 index 000000000000..679512487643 --- /dev/null +++ b/packages/client-instagram/src/environment.ts @@ -0,0 +1,124 @@ +import { + IAgentRuntime, + parseBooleanFromText, +} from "@elizaos/core"; +import { z } from "zod"; + +export const DEFAULT_POST_INTERVAL_MIN = 60; +export const DEFAULT_POST_INTERVAL_MAX = 120; +export const DEFAULT_ACTION_INTERVAL = 5; +export const DEFAULT_MAX_ACTIONS = 1; + +// Define validation schemas for Instagram usernames and other fields +const instagramUsernameSchema = z + .string() + .min(1, "An Instagram Username must be at least 1 character long") + .max(30, "An Instagram Username cannot exceed 30 characters") + .refine((username) => { + // Instagram usernames can contain letters, numbers, periods, and underscores + return /^[A-Za-z0-9._]+$/.test(username); + }, "An Instagram Username can only contain letters, numbers, periods, and underscores"); + +/** + * Environment configuration schema for Instagram client + */ +export const instagramEnvSchema = z.object({ + INSTAGRAM_DRY_RUN: z.boolean(), + INSTAGRAM_USERNAME: instagramUsernameSchema, + INSTAGRAM_PASSWORD: z.string().min(1, "Instagram password is required"), + + // Instagram API credentials + INSTAGRAM_APP_ID: z.string().min(1, "Instagram App ID is required"), + INSTAGRAM_APP_SECRET: z.string().min(1, "Instagram App Secret is required"), + + // Optional Business Account ID for additional features + INSTAGRAM_BUSINESS_ACCOUNT_ID: z.string().optional(), + + // Posting configuration + INSTAGRAM_POST_INTERVAL_MIN: z.number().int().default(DEFAULT_POST_INTERVAL_MIN), + INSTAGRAM_POST_INTERVAL_MAX: z.number().int().default(DEFAULT_POST_INTERVAL_MAX), + + // Action processing configuration + INSTAGRAM_ENABLE_ACTION_PROCESSING: z.boolean().default(false), + INSTAGRAM_ACTION_INTERVAL: z.number().int().default(DEFAULT_ACTION_INTERVAL), + INSTAGRAM_MAX_ACTIONS: z.number().int().default(DEFAULT_MAX_ACTIONS), +}); + +export type InstagramConfig = z.infer; + +/** + * Validates and constructs an InstagramConfig object using zod, + * taking values from the IAgentRuntime or process.env as needed. + */ +export async function validateInstagramConfig( + runtime: IAgentRuntime +): Promise { + try { + const instagramConfig = { + INSTAGRAM_DRY_RUN: parseBooleanFromText( + runtime.getSetting("INSTAGRAM_DRY_RUN") || + process.env.INSTAGRAM_DRY_RUN + ) ?? false, + + INSTAGRAM_USERNAME: runtime.getSetting("INSTAGRAM_USERNAME") || + process.env.INSTAGRAM_USERNAME, + + INSTAGRAM_PASSWORD: runtime.getSetting("INSTAGRAM_PASSWORD") || + process.env.INSTAGRAM_PASSWORD, + + INSTAGRAM_APP_ID: runtime.getSetting("INSTAGRAM_APP_ID") || + process.env.INSTAGRAM_APP_ID, + + INSTAGRAM_APP_SECRET: runtime.getSetting("INSTAGRAM_APP_SECRET") || + process.env.INSTAGRAM_APP_SECRET, + + INSTAGRAM_BUSINESS_ACCOUNT_ID: runtime.getSetting("INSTAGRAM_BUSINESS_ACCOUNT_ID") || + process.env.INSTAGRAM_BUSINESS_ACCOUNT_ID, + + INSTAGRAM_POST_INTERVAL_MIN: parseInt( + runtime.getSetting("INSTAGRAM_POST_INTERVAL_MIN") || + process.env.INSTAGRAM_POST_INTERVAL_MIN || + DEFAULT_POST_INTERVAL_MIN.toString(), + 10 + ), + + INSTAGRAM_POST_INTERVAL_MAX: parseInt( + runtime.getSetting("INSTAGRAM_POST_INTERVAL_MAX") || + process.env.INSTAGRAM_POST_INTERVAL_MAX || + DEFAULT_POST_INTERVAL_MAX.toString(), + 10 + ), + + INSTAGRAM_ENABLE_ACTION_PROCESSING: parseBooleanFromText( + runtime.getSetting("INSTAGRAM_ENABLE_ACTION_PROCESSING") || + process.env.INSTAGRAM_ENABLE_ACTION_PROCESSING + ) ?? false, + + INSTAGRAM_ACTION_INTERVAL: parseInt( + runtime.getSetting("INSTAGRAM_ACTION_INTERVAL") || + process.env.INSTAGRAM_ACTION_INTERVAL || + DEFAULT_ACTION_INTERVAL.toString(), + 10 + ), + + INSTAGRAM_MAX_ACTIONS: parseInt( + runtime.getSetting("MAX_ACTIONS_PROCESSING") || + process.env.MAX_ACTIONS_PROCESSING || + DEFAULT_MAX_ACTIONS.toString(), + 10 + ), + }; + + return instagramEnvSchema.parse(instagramConfig); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `Instagram configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} \ No newline at end of file diff --git a/packages/client-instagram/src/index.ts b/packages/client-instagram/src/index.ts new file mode 100644 index 000000000000..f322d78c7ea0 --- /dev/null +++ b/packages/client-instagram/src/index.ts @@ -0,0 +1,57 @@ +// src/index.ts +import { Client, IAgentRuntime, elizaLogger } from "@elizaos/core"; +import { validateInstagramConfig } from "./environment"; +import { initializeClient } from "./lib/auth"; +import { InstagramInteractionService } from "./services/interaction"; +import { InstagramPostService } from "./services/post"; + +export const InstagramClientInterface: Client = { + async start(runtime: IAgentRuntime) { + try { + // Validate configuration + const config = await validateInstagramConfig(runtime); + elizaLogger.log("Instagram client configuration validated"); + + // Initialize client and get initial state + const state = await initializeClient(runtime, config); + elizaLogger.log("Instagram client initialized"); + + // Create services + const postService = new InstagramPostService(runtime, state); + const interactionService = new InstagramInteractionService( + runtime, + state + ); + + // Start services + if (!config.INSTAGRAM_DRY_RUN) { + await postService.start(); + elizaLogger.log("Instagram post service started"); + + if (config.INSTAGRAM_ENABLE_ACTION_PROCESSING) { + await interactionService.start(); + elizaLogger.log("Instagram interaction service started"); + } + } else { + elizaLogger.log("Instagram client running in dry-run mode"); + } + + // Return manager instance + return { + post: postService, + interaction: interactionService, + state, + }; + } catch (error) { + elizaLogger.error("Failed to start Instagram client:", error); + throw error; + } + }, + + async stop(_runtime: IAgentRuntime) { + elizaLogger.log("Stopping Instagram client services..."); + // Cleanup will be handled by the services themselves + }, +}; + +export default InstagramClientInterface; diff --git a/packages/client-instagram/src/lib/actions.ts b/packages/client-instagram/src/lib/actions.ts new file mode 100644 index 000000000000..0d134890b7b6 --- /dev/null +++ b/packages/client-instagram/src/lib/actions.ts @@ -0,0 +1,168 @@ +// src/lib/actions.ts +import { elizaLogger } from "@elizaos/core"; +import { Comment } from "../types"; +import { getIgClient } from "./state"; + +/** + * Fetches comments for a specific media post + */ +export async function fetchComments( + mediaId: string, + count: number = 20 +): Promise { + const ig = getIgClient(); + + try { + const feed = ig.feed.mediaComments(mediaId); + const comments = await feed.items(); + + return comments.slice(0, count).map(comment => ({ + id: comment.pk.toString(), + text: comment.text, + timestamp: new Date(comment.created_at * 1000).toISOString(), + username: comment.user.username, + replies: [] // Instagram API doesn't provide replies in the same call + })); + } catch (error) { + elizaLogger.error('Error fetching comments:', error); + throw error; + } +} + +/** + * Posts a comment on a media post + */ +export async function postComment( + mediaId: string, + text: string +): Promise { + const ig = getIgClient(); + + try { + const result = await ig.media.comment({ + mediaId, + text: text.slice(0, 2200) // Instagram comment length limit + }); + + return { + id: result.pk.toString(), + text: result.text, + timestamp: new Date(result.created_at * 1000).toISOString(), + username: result.user.username, + replies: [] + }; + } catch (error) { + elizaLogger.error('Error posting comment:', error); + throw error; + } +} + +/** + * Likes a media post + */ +export async function likeMedia(mediaId: string): Promise { + const ig = getIgClient(); + + try { + await ig.media.like({ + mediaId, + moduleInfo: { + module_name: 'profile', + user_id: ig.state.cookieUserId, + username: ig.state.cookieUsername + } + }); + elizaLogger.log(`Liked media: ${mediaId}`); + } catch (error) { + elizaLogger.error('Error liking media:', error); + throw error; + } +} + +/** + * Unlikes a media post + */ +export async function unlikeMedia(mediaId: string): Promise { + const ig = getIgClient(); + + try { + await ig.media.unlike({ + mediaId, + moduleInfo: { + module_name: 'profile', + user_id: ig.state.cookieUserId, + username: ig.state.cookieUsername + } + }); + elizaLogger.log(`Unliked media: ${mediaId}`); + } catch (error) { + elizaLogger.error('Error unliking media:', error); + throw error; + } +} + +/** + * Replies to a comment + */ +export async function replyToComment( + mediaId: string, + commentId: string, + text: string +): Promise { + const ig = getIgClient(); + + try { + const result = await ig.media.comment({ + mediaId, + text: text.slice(0, 2200), // Instagram comment length limit + replyToCommentId: commentId + }); + + return { + id: result.pk.toString(), + text: result.text, + timestamp: new Date(result.created_at * 1000).toISOString(), + username: result.user.username, + replies: [] + }; + } catch (error) { + elizaLogger.error('Error replying to comment:', error); + throw error; + } +} + +/** + * Deletes a comment + */ +export async function deleteComment( + mediaId: string, + commentId: string +): Promise { + const ig = getIgClient(); + + try { + await ig.media.deleteComment({ + mediaId, + commentId + }); + elizaLogger.log(`Deleted comment: ${commentId} from media: ${mediaId}`); + } catch (error) { + elizaLogger.error('Error deleting comment:', error); + throw error; + } +} + +/** + * Checks if current user has liked a media post + */ +export async function hasLikedMedia(mediaId: string): Promise { + const ig = getIgClient(); + + try { + const info = await ig.media.info(mediaId); + return info.items[0].has_liked ?? false; + } catch (error) { + elizaLogger.error('Error checking if media is liked:', error); + throw error; + } +} \ No newline at end of file diff --git a/packages/client-instagram/src/lib/auth.ts b/packages/client-instagram/src/lib/auth.ts new file mode 100644 index 000000000000..307547996cfc --- /dev/null +++ b/packages/client-instagram/src/lib/auth.ts @@ -0,0 +1,103 @@ +// src/lib/auth.ts +import { IAgentRuntime, elizaLogger } from "@elizaos/core"; +import { IgLoginTwoFactorRequiredError } from "instagram-private-api"; +import { InstagramConfig } from "../environment"; +import { InstagramState } from "../types"; +import { fetchProfile } from "./profile"; +import { createInitialState, getIgClient } from "./state"; + +/** + * Authenticates with Instagram + */ +async function authenticate( + runtime: IAgentRuntime, + config: InstagramConfig +): Promise { + const ig = getIgClient(); + const state = createInitialState(); + + try { + // Generate device ID + ig.state.generateDevice(config.INSTAGRAM_USERNAME); + + // Attempt to load cached session + const cachedSession = + await runtime.cacheManager.get("instagram/session"); + if (cachedSession) { + try { + await ig.state.deserialize(cachedSession); + const profile = await fetchProfile(runtime, config); + return { + ...state, + isInitialized: true, + profile, + }; + } catch { + elizaLogger.warn( + `Cached session invalid, proceeding with fresh login` + ); + } + } + + // Proceed with fresh login + try { + await ig.account.login( + config.INSTAGRAM_USERNAME, + config.INSTAGRAM_PASSWORD + ); + + // Cache the session + const serialized = await ig.state.serialize(); + await runtime.cacheManager.set("instagram/session", serialized); + + const profile = await fetchProfile(runtime, config); + + return { + ...state, + isInitialized: true, + profile, + }; + } catch (error) { + if (error instanceof IgLoginTwoFactorRequiredError) { + // Handle 2FA if needed - would need to implement 2FA code generation + throw new Error("2FA authentication not yet implemented"); + } + throw error; + } + } catch (error) { + elizaLogger.error("Authentication failed:", error); + throw error; + } +} + +/** + * Sets up webhooks for real-time updates if needed + */ +async function setupWebhooks() { + // Implement webhook setup + // This is a placeholder for future implementation +} + +/** + * Initializes the Instagram client + */ +export async function initializeClient( + runtime: IAgentRuntime, + config: InstagramConfig +): Promise { + try { + // Authenticate and get initial state + const state = await authenticate(runtime, config); + + // Set up webhook handlers if needed + await setupWebhooks(); + + return state; + } catch (error) { + elizaLogger.error("Failed to initialize Instagram client:", error); + throw error; + } +} + +// Export other authentication related functions if needed +export { authenticate, setupWebhooks }; diff --git a/packages/client-instagram/src/lib/media.ts b/packages/client-instagram/src/lib/media.ts new file mode 100644 index 000000000000..05d9532cc19e --- /dev/null +++ b/packages/client-instagram/src/lib/media.ts @@ -0,0 +1,38 @@ +import { elizaLogger, IAgentRuntime } from "@elizaos/core"; +import { InstagramConfig } from "../environment"; +import { MediaItem } from "../types"; +import { getIgClient } from "./state"; + +export async function fetchRecentMedia( + runtime: IAgentRuntime, + config: InstagramConfig, + count: number = 10 + ): Promise { + const ig = getIgClient(); + + try { + const feed = ig.feed.user(ig.state.cookieUserId); + const items = await feed.items(); + + return items.slice(0, count).map((item: any) => ({ + id: item.id, + mediaType: item.media_type as MediaItem['mediaType'], + mediaUrl: item.media_url, + thumbnailUrl: item.thumbnail_url || null, + permalink: item.permalink, + caption: item.caption?.text || null, + timestamp: item.timestamp, + children: item.children?.map((child: any) => ({ + id: child.id, + mediaType: child.media_type as MediaItem['mediaType'], + mediaUrl: child.media_url, + thumbnailUrl: child.thumbnail_url || null, + permalink: child.permalink, + timestamp: child.timestamp + })) || null + })); + } catch (error) { + elizaLogger.error('Error fetching recent media:', error); + throw error; + } + } \ No newline at end of file diff --git a/packages/client-instagram/src/lib/profile.ts b/packages/client-instagram/src/lib/profile.ts new file mode 100644 index 000000000000..a7b7fe9053a0 --- /dev/null +++ b/packages/client-instagram/src/lib/profile.ts @@ -0,0 +1,36 @@ +import { elizaLogger, IAgentRuntime } from "@elizaos/core"; +import { InstagramConfig } from "../environment"; +import { InstagramProfile } from "../types"; +import { getIgClient } from "./state"; + +export async function fetchProfile( + runtime: IAgentRuntime, + config: InstagramConfig + ): Promise { + const ig = getIgClient(); + + try { + const userInfo = await ig.user.info(ig.state.cookieUserId); + + const profile: InstagramProfile = { + id: userInfo.pk.toString(), + username: userInfo.username, + name: userInfo.full_name, + biography: userInfo.biography, + mediaCount: userInfo.media_count, + followerCount: userInfo.follower_count, + followingCount: userInfo.following_count + }; + + // Cache profile info + await runtime.cacheManager.set( + `instagram/profile/${config.INSTAGRAM_USERNAME}`, + profile + ); + + return profile; + } catch (error) { + elizaLogger.error('Error fetching profile:', error); + throw error; + } + } diff --git a/packages/client-instagram/src/lib/state.ts b/packages/client-instagram/src/lib/state.ts new file mode 100644 index 000000000000..0f756f38ccba --- /dev/null +++ b/packages/client-instagram/src/lib/state.ts @@ -0,0 +1,21 @@ +import { IgApiClient } from 'instagram-private-api'; +import { InstagramState } from '../types'; + +// Create a singleton for the Instagram API client +let igClient: IgApiClient | null = null; + +export const getIgClient = () => { + if (!igClient) { + igClient = new IgApiClient(); + } + return igClient; +}; + +// Create initial state +export const createInitialState = (): InstagramState => ({ + accessToken: null, + longLivedToken: null, + profile: null, + isInitialized: false, + lastCheckedMediaId: null, +}); \ No newline at end of file diff --git a/packages/client-instagram/src/services/interaction.ts b/packages/client-instagram/src/services/interaction.ts new file mode 100644 index 000000000000..5b80fdee9c16 --- /dev/null +++ b/packages/client-instagram/src/services/interaction.ts @@ -0,0 +1,322 @@ +import { + composeContext, + elizaLogger, + generateText, + getEmbeddingZeroVector, + IAgentRuntime, + ModelClass, + stringToUuid, + UUID +} from "@elizaos/core"; +import { fetchComments, likeMedia, postComment } from "../lib/actions"; +import { getIgClient } from "../lib/state"; +import { InstagramState } from "../types"; + + // Templates + const instagramCommentTemplate = ` + # Areas of Expertise + {{knowledge}} + + # About {{agentName}} (@{{instagramUsername}}): + {{bio}} + {{lore}} + {{topics}} + + {{providers}} + + {{characterPostExamples}} + + {{postDirections}} + + # Task: Generate a response to the following Instagram comment in the voice and style of {{agentName}}. + Original Comment (@{{commentUsername}}): {{commentText}} + + Your response should be friendly, engaging, and natural. Keep it brief (1-2 sentences). + Do not use hashtags in comment responses. Be conversational and authentic.`; + + const shouldInteractTemplate = ` + # About {{agentName}} (@{{instagramUsername}}): + {{bio}} + {{lore}} + {{topics}} + + {{postDirections}} + + # Task: Determine if {{agentName}} should interact with this content: + Interaction Type: {{interactionType}} + User: @{{username}} + Content: {{content}} + + Consider: + 1. Is this user's content relevant to {{agentName}}'s interests? + 2. Would interaction be authentic and meaningful? + 3. Is there potential for valuable engagement? + + Respond with one of: + [INTERACT] - Content is highly relevant and engagement would be valuable + [SKIP] - Content is not relevant enough or engagement wouldn't be authentic + + Choose [INTERACT] only if very confident about relevance and value.`; + + export class InstagramInteractionService { + private runtime: IAgentRuntime; + private state: InstagramState; + private isProcessing: boolean = false; + private stopProcessing: boolean = false; + + constructor(runtime: IAgentRuntime, state: InstagramState) { + this.runtime = runtime; + this.state = state; + } + + async start() { + const handleInteractionsLoop = () => { + this.handleInteractions(); + if (!this.stopProcessing) { + setTimeout( + handleInteractionsLoop, + parseInt(this.runtime.getSetting('ACTION_INTERVAL') || '300', 10) * 1000 + ); + } + }; + + handleInteractionsLoop(); + } + + async stop() { + this.stopProcessing = true; + } + + private async generateResponse( + text: string, + username: string, + action: string + ) { + const state = await this.runtime.composeState( + { + userId: this.runtime.agentId, + roomId: stringToUuid(`instagram-temp-${Date.now()}-${this.runtime.agentId}`), + agentId: this.runtime.agentId, + content: { + text, + action, + }, + }, + { + instagramUsername: this.state.profile?.username, + commentUsername: username, + commentText: text, + } + ); + + const context = composeContext({ + state, + template: instagramCommentTemplate, + }); + + const response = await generateText({ + runtime: this.runtime, + context, + modelClass: ModelClass.SMALL, + }); + + return this.cleanResponse(response); + } + + private cleanResponse(response: string): string { + return response + .replace(/^\s*{?\s*"text":\s*"|"\s*}?\s*$/g, "") + .replace(/^['"](.*)['"]$/g, "$1") + .replace(/\\"/g, '"') + .trim(); + } + + private async handleInteractions() { + if (this.isProcessing) { + elizaLogger.log("Already processing interactions, skipping"); + return; + } + + try { + this.isProcessing = true; + elizaLogger.log("Checking Instagram interactions"); + + const ig = getIgClient(); + const activity = await ig.feed.news().items(); + + for (const item of activity) { + const activityId = `instagram-activity-${item.pk}`; + if (await this.runtime.cacheManager.get(activityId)) continue; + + switch (item.type) { + case 2: // Comment on your post + await this.handleComment(item); + break; + case 3: // Like on your post + await this.handleLike(item); + break; + case 12: // Mention in comment + await this.handleMention(item); + break; + } + + await this.runtime.cacheManager.set(activityId, true); + } + } catch (error) { + elizaLogger.error("Error handling Instagram interactions:", error); + } finally { + this.isProcessing = false; + } + } + + private async handleComment(item: any) { + try { + const comments = await fetchComments(item.media_id); + const comment = comments.find(c => c.id === item.pk.toString()); + if (!comment) return; + + const roomId = stringToUuid(`instagram-comment-${item.media_id}-${this.runtime.agentId}`); + const commentId = stringToUuid(`instagram-comment-${comment.id}-${this.runtime.agentId}`); + const userId = stringToUuid(`instagram-user-${item.user_id}-${this.runtime.agentId}`); + + const cleanedResponse = await this.generateResponse( + comment.text, + comment.username, + "COMMENT" + ); + + if (!cleanedResponse) { + elizaLogger.error("Failed to generate valid comment response"); + return; + } + + await this.ensureEntities(roomId, userId, comment.username); + await this.createInteractionMemories( + commentId, + userId, + roomId, + comment, + cleanedResponse, + item.media_id + ); + + } catch (error) { + elizaLogger.error("Error handling comment:", error); + } + } + + private async handleLike(item: any) { + try { + const state = await this.runtime.composeState( + { + userId: this.runtime.agentId, + roomId: stringToUuid(`instagram-like-${item.media_id}-${this.runtime.agentId}`), + agentId: this.runtime.agentId, + content: { text: "", action: "DECIDE_INTERACTION" }, + }, + { + instagramUsername: this.state.profile?.username, + interactionType: "like", + username: item.user?.username, + content: item.text || "", + } + ); + + const context = composeContext({ state, template: shouldInteractTemplate }); + const decision = await generateText({ + runtime: this.runtime, + context, + modelClass: ModelClass.SMALL, + }); + + if (decision.includes("[INTERACT]")) { + const userFeed = await getIgClient().feed.user(item.user_id).items(); + if (userFeed.length > 0) { + await likeMedia(userFeed[0].id); + elizaLogger.log(`Liked post from user: ${item.user?.username}`); + } + } + } catch (error) { + elizaLogger.error("Error handling like:", error); + } + } + + private async handleMention(item: any) { + try { + const roomId = stringToUuid(`instagram-mention-${item.media_id}-${this.runtime.agentId}`); + const mentionId = stringToUuid(`instagram-mention-${item.pk}-${this.runtime.agentId}`); + const userId = stringToUuid(`instagram-user-${item.user.pk}-${this.runtime.agentId}`); + + const cleanedResponse = await this.generateResponse( + item.text, + item.user.username, + "MENTION" + ); + + if (!cleanedResponse) { + elizaLogger.error("Failed to generate valid mention response"); + return; + } + + await this.ensureEntities(roomId, userId, item.user.username); + await this.createInteractionMemories( + mentionId, + userId, + roomId, + item, + cleanedResponse, + item.media_id + ); + + } catch (error) { + elizaLogger.error("Error handling mention:", error); + } + } + + private async ensureEntities(roomId: UUID, userId: UUID, username: string) { + await this.runtime.ensureRoomExists(roomId); + await this.runtime.ensureUserExists(userId, username, username, "instagram"); + await this.runtime.ensureParticipantInRoom(this.runtime.agentId, roomId); + } + + private async createInteractionMemories( + originalId: UUID, + userId: UUID, + roomId: UUID, + originalItem: any, + response: string, + mediaId: string + ) { + // Create memory of original interaction + await this.runtime.messageManager.createMemory({ + id: originalId, + userId, + agentId: this.runtime.agentId, + content: { + text: originalItem.text, + source: "instagram", + }, + roomId, + embedding: getEmbeddingZeroVector(), + createdAt: new Date(originalItem.timestamp || originalItem.created_at * 1000).getTime(), + }); + + // Post response + const postedComment = await postComment(mediaId, response); + + // Create memory of our response + await this.runtime.messageManager.createMemory({ + id: stringToUuid(`instagram-reply-${postedComment.id}-${this.runtime.agentId}`), + userId: this.runtime.agentId, + agentId: this.runtime.agentId, + content: { + text: response, + source: "instagram", + inReplyTo: originalId + }, + roomId, + embedding: getEmbeddingZeroVector(), + createdAt: Date.now(), + }); + } + } \ No newline at end of file diff --git a/packages/client-instagram/src/services/post.ts b/packages/client-instagram/src/services/post.ts new file mode 100644 index 000000000000..67b8cb78abe4 --- /dev/null +++ b/packages/client-instagram/src/services/post.ts @@ -0,0 +1,368 @@ +// src/services/post.ts +import { + IAgentRuntime, + ModelClass, + composeContext, + elizaLogger, + generateImage, + generateText, + getEmbeddingZeroVector, + stringToUuid, +} from "@elizaos/core"; +import { promises as fs } from "fs"; +import path from "path"; +import sharp from "sharp"; +import { getIgClient } from "../lib/state"; +import { InstagramState } from "../types"; + +// Template for generating Instagram posts +const instagramPostTemplate = ` +# Areas of Expertise +{{knowledge}} + +# About {{agentName}} (@{{instagramUsername}}): +{{bio}} +{{lore}} +{{topics}} + +{{providers}} + +{{characterPostExamples}} + +{{postDirections}} + +# Task: Generate a post in the voice and style and perspective of {{agentName}}. +Write a post that is {{adjective}} about {{topic}} (without mentioning {{topic}} directly), from the perspective of {{agentName}}. +Your response should be 1-3 sentences (choose the length at random). +Your response should not contain any questions. Brief, concise statements only. +Add up to 3 relevant hashtags at the end.`; + +interface PostOptions { + media: Array<{ + type: "IMAGE" | "VIDEO" | "CAROUSEL"; + url: string; + }>; + caption?: string; +} + +export class InstagramPostService { + private runtime: IAgentRuntime; + private state: InstagramState; + private isProcessing: boolean = false; + private lastPostTime: number = 0; + private stopProcessing: boolean = false; + + constructor(runtime: IAgentRuntime, state: InstagramState) { + this.runtime = runtime; + this.state = state; + } + + async start() { + const generatePostLoop = async () => { + const lastPost = await this.runtime.cacheManager.get<{ + timestamp: number; + }>("instagram/lastPost"); + + const lastPostTimestamp = lastPost?.timestamp ?? 0; + const minMinutes = parseInt( + this.runtime.getSetting("POST_INTERVAL_MIN") || "90", + 10 + ); + const maxMinutes = parseInt( + this.runtime.getSetting("POST_INTERVAL_MAX") || "180", + 10 + ); + const randomMinutes = + Math.floor(Math.random() * (maxMinutes - minMinutes + 1)) + + minMinutes; + const delay = randomMinutes * 60 * 1000; + + if (Date.now() > lastPostTimestamp + delay) { + await this.generateNewPost(); + } + + if (!this.stopProcessing) { + setTimeout(generatePostLoop, delay); + } + + elizaLogger.log( + `Next Instagram post scheduled in ${randomMinutes} minutes` + ); + }; + + // Start the loop + generatePostLoop(); + } + + async stop() { + this.stopProcessing = true; + } + + private async generateNewPost() { + try { + elizaLogger.log("Generating new Instagram post"); + + const roomId = stringToUuid( + "instagram_generate_room-" + this.state.profile?.username + ); + + await this.runtime.ensureUserExists( + this.runtime.agentId, + this.state.profile?.username || "", + this.runtime.character.name, + "instagram" + ); + + const topics = this.runtime.character.topics.join(", "); + + const state = await this.runtime.composeState( + { + userId: this.runtime.agentId, + roomId: roomId, + agentId: this.runtime.agentId, + content: { + text: topics || "", + action: "POST", + }, + }, + { + instagramUsername: this.state.profile?.username, + } + ); + + const context = composeContext({ + state, + // TODO: Add back in when we have a template for Instagram on character + //template: this.runtime.character.templates?.instagramPostTemplate || instagramPostTemplate, + template: instagramPostTemplate, + }); + + elizaLogger.debug("generate post prompt:\n" + context); + + const content = await generateText({ + runtime: this.runtime, + context, + modelClass: ModelClass.SMALL, + }); + + // Clean the generated content + let cleanedContent = ""; + + // Try parsing as JSON first + try { + const parsedResponse = JSON.parse(content); + if (parsedResponse.text) { + cleanedContent = parsedResponse.text; + } else if (typeof parsedResponse === "string") { + cleanedContent = parsedResponse; + } + } catch { + // If not JSON, clean the raw content + cleanedContent = content + .replace(/^\s*{?\s*"text":\s*"|"\s*}?\s*$/g, "") // Remove JSON-like wrapper + .replace(/^['"](.*)['"]$/g, "$1") // Remove quotes + .replace(/\\"/g, '"') // Unescape quotes + .replace(/\\n/g, "\n\n") // Unescape newlines + .trim(); + } + + if (!cleanedContent) { + elizaLogger.error( + "Failed to extract valid content from response:", + { + rawResponse: content, + attempted: "JSON parsing", + } + ); + return; + } + + // For Instagram, we need to generate or get an image + const mediaUrl = await this.getOrGenerateImage(cleanedContent); + + await this.createPost({ + media: [ + { + type: "IMAGE", + url: mediaUrl, + }, + ], + caption: cleanedContent, + }); + + // Create memory of the post + await this.runtime.messageManager.createMemory({ + id: stringToUuid(`instagram-post-${Date.now()}`), + userId: this.runtime.agentId, + agentId: this.runtime.agentId, + content: { + text: cleanedContent, + source: "instagram", + }, + roomId, + embedding: getEmbeddingZeroVector(), + createdAt: Date.now(), + }); + } catch (error) { + elizaLogger.error("Error generating Instagram post:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + phase: "generateNewPost", + }); + } + } + + // Placeholder - implement actual image generation/selection + private async getOrGenerateImage(content: string): Promise { + try { + elizaLogger.log("Generating image for Instagram post"); + + const result = await generateImage( + { + prompt: content, + width: 1024, + height: 1024, + count: 1, + numIterations: 50, + guidanceScale: 7.5, + }, + this.runtime + ); + + if (!result.success || !result.data || result.data.length === 0) { + throw new Error( + "Failed to generate image: " + + (result.error || "No image data returned") + ); + } + + // Save the base64 image to a temporary file + const imageData = result.data[0].replace( + /^data:image\/\w+;base64,/, + "" + ); + const tempDir = path.resolve(process.cwd(), "temp"); + await fs.mkdir(tempDir, { recursive: true }); + const tempFile = path.join( + tempDir, + `instagram-post-${Date.now()}.png` + ); + await fs.writeFile(tempFile, Buffer.from(imageData, "base64")); + + return tempFile; + } catch (error) { + elizaLogger.error("Error generating image:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + phase: "getOrGenerateImage", + }); + throw error; + } + } + + async createPost(options: PostOptions) { + const ig = getIgClient(); + + try { + elizaLogger.log("Creating Instagram post", { + mediaCount: options.media.length, + hasCaption: !!options.caption, + }); + + // Process media + const processedMedia = await Promise.all( + options.media.map(async (media) => { + const buffer = await this.processMedia(media); + return { + ...media, + buffer, + }; + }) + ); + + // Handle different post types + if (processedMedia.length > 1) { + // Create carousel post + await ig.publish.album({ + items: processedMedia.map((media) => ({ + file: media.buffer, + caption: options.caption, + })), + }); + } else { + // Single image/video post + const media = processedMedia[0]; + if (media.type === "VIDEO") { + await ig.publish.video({ + video: media.buffer, + caption: options.caption, + coverImage: media.buffer, + }); + } else { + await ig.publish.photo({ + file: media.buffer, + caption: options.caption, + }); + } + } + + // Update last post time + this.lastPostTime = Date.now(); + await this.runtime.cacheManager.set("instagram/lastPost", { + timestamp: this.lastPostTime, + }); + + elizaLogger.log("Instagram post created successfully"); + } catch (error) { + elizaLogger.error("Error creating Instagram post:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + phase: "createPost", + mediaCount: options.media.length, + hasCaption: !!options.caption, + }); + throw error; + } + } + + private async processMedia(media: { + type: string; + url: string; + }): Promise { + try { + elizaLogger.log("Processing media", { + type: media.type, + url: media.url, + }); + + // Read file directly from filesystem instead of using fetch + const buffer = await fs.readFile(media.url); + + if (media.type === "IMAGE") { + // Process image with sharp + return await sharp(buffer) + .resize(1080, 1080, { + fit: "inside", + withoutEnlargement: true, + }) + .jpeg({ + quality: 85, + progressive: true, + }) + .toBuffer(); + } + + // For other types, return original buffer + return buffer; + } catch (error) { + elizaLogger.error("Error processing media:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + phase: "processMedia", + mediaType: media.type, + url: media.url, + }); + throw error; + } + } +} diff --git a/packages/client-instagram/src/types.ts b/packages/client-instagram/src/types.ts new file mode 100644 index 000000000000..e34a3a8c24cd --- /dev/null +++ b/packages/client-instagram/src/types.ts @@ -0,0 +1,37 @@ + +export interface InstagramState { + accessToken: string | null; + longLivedToken: string | null; + profile: InstagramProfile | null; + isInitialized: boolean; + lastCheckedMediaId: string | null; +} + +export interface InstagramProfile { + id: string; + username: string; + name: string; + biography: string; + mediaCount: number; + followerCount: number; + followingCount: number; +} + +export interface MediaItem { + id: string; + mediaType: 'IMAGE' | 'VIDEO' | 'CAROUSEL_ALBUM'; + mediaUrl: string; + thumbnailUrl?: string; + permalink: string; + caption?: string; + timestamp: string; + children?: MediaItem[]; +} + +export interface Comment { + id: string; + text: string; + timestamp: string; + username: string; + replies?: Comment[]; +} \ No newline at end of file diff --git a/packages/client-instagram/tsconfig.json b/packages/client-instagram/tsconfig.json new file mode 100644 index 000000000000..73993deaaf7c --- /dev/null +++ b/packages/client-instagram/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/client-instagram/tsup.config.ts b/packages/client-instagram/tsup.config.ts new file mode 100644 index 000000000000..8cba0c208915 --- /dev/null +++ b/packages/client-instagram/tsup.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], + external: [ + "sharp", + "fs", + "path", + "instagram-private-api", + // Add other externals as needed + ], +}); \ No newline at end of file diff --git a/packages/client-lens/package.json b/packages/client-lens/package.json index 5c51296bf6c7..75736e87af80 100644 --- a/packages/client-lens/package.json +++ b/packages/client-lens/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-lens", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-slack/__tests__/message-manager.test.ts b/packages/client-slack/__tests__/message-manager.test.ts new file mode 100644 index 000000000000..765355663e68 --- /dev/null +++ b/packages/client-slack/__tests__/message-manager.test.ts @@ -0,0 +1,89 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { MessageManager } from '../src/messages'; +import { WebClient } from '@slack/web-api'; +import { IAgentRuntime } from '@elizaos/core'; + +// Mock dependencies +vi.mock('@slack/web-api'); +vi.mock('@elizaos/core'); + +describe('MessageManager', () => { + let mockWebClient: WebClient; + let mockRuntime: IAgentRuntime; + let messageManager: MessageManager; + const mockBotUserId = 'U123456'; + + beforeEach(() => { + // Setup mock WebClient + mockWebClient = { + chat: { + postMessage: vi.fn() + } + } as unknown as WebClient; + + // Setup mock runtime + mockRuntime = { + getSetting: vi.fn(), + character: { + name: 'TestBot' + } + } as unknown as IAgentRuntime; + + messageManager = new MessageManager(mockWebClient, mockRuntime, mockBotUserId); + }); + + it('should initialize with correct parameters', () => { + expect(messageManager).toBeDefined(); + }); + + it('should not process duplicate events', () => { + const eventId = 'evt_123'; + const result1 = messageManager['processedEvents'].has(eventId); + expect(result1).toBe(false); + + // Add event to processed set + messageManager['processedEvents'].add(eventId); + const result2 = messageManager['processedEvents'].has(eventId); + expect(result2).toBe(true); + }); + + it('should handle message processing lock correctly', () => { + const messageId = 'msg_123'; + const isLocked1 = messageManager['messageProcessingLock'].has(messageId); + expect(isLocked1).toBe(false); + + // Lock message + messageManager['messageProcessingLock'].add(messageId); + const isLocked2 = messageManager['messageProcessingLock'].has(messageId); + expect(isLocked2).toBe(true); + }); + + it('should clean up old processed messages', () => { + vi.useFakeTimers(); + const oldMessageId = 'old_msg'; + const newMessageId = 'new_msg'; + + // Add messages with different timestamps + messageManager['processedMessages'].set(oldMessageId, Date.now() - 3700000); // older than 1 hour + messageManager['processedMessages'].set(newMessageId, Date.now()); // current + + // Trigger cleanup by advancing time and running interval callback + const cleanupInterval = setInterval(() => { + const oneHourAgo = Date.now() - 3600000; + for (const [key, timestamp] of messageManager['processedMessages'].entries()) { + if (timestamp < oneHourAgo) { + messageManager['processedMessages'].delete(key); + } + } + }, 3600000); + + vi.advanceTimersByTime(3600000); + + // Check if old message was cleaned up + expect(messageManager['processedMessages'].has(oldMessageId)).toBe(false); + expect(messageManager['processedMessages'].has(newMessageId)).toBe(true); + + clearInterval(cleanupInterval); + vi.useRealTimers(); + }); +}); diff --git a/packages/client-slack/__tests__/slack-client.provider.test.ts b/packages/client-slack/__tests__/slack-client.provider.test.ts new file mode 100644 index 000000000000..144a22c89f69 --- /dev/null +++ b/packages/client-slack/__tests__/slack-client.provider.test.ts @@ -0,0 +1,151 @@ +import { describe, expect, test, beforeEach, vi } from "vitest"; +import { SlackClientProvider } from "../src/providers/slack-client.provider"; +import { SlackConfig } from "../src/types/slack-types"; +import { WebClient } from "@slack/web-api"; +import type { + AuthTestResponse, + ChatPostMessageResponse, +} from "@slack/web-api"; + +vi.mock("@slack/web-api"); + +// Mock setup functions +const createMockSlackResponse = (ok: boolean, additionalData = {}) => ({ + ok, + ...additionalData, +}); + +const getMockWebClient = () => { + return { + auth: { + test: vi.fn(), + }, + chat: { + postMessage: vi.fn(), + }, + } as unknown as WebClient; +}; + +describe("SlackClientProvider", () => { + let provider: SlackClientProvider; + let mockWebClient: WebClient; + let mockConfig: SlackConfig; + + beforeEach(() => { + vi.clearAllMocks(); + mockConfig = { + appId: "test-app-id", + clientId: "test-client-id", + clientSecret: "test-client-secret", + signingSecret: "test-signing-secret", + verificationToken: "test-verification-token", + botToken: "test-bot-token", + botId: "test-bot-id", + }; + mockWebClient = getMockWebClient(); + provider = new SlackClientProvider(mockConfig); + // @ts-ignore - setting mock client for testing + provider['client'] = mockWebClient; + }); + + describe("Initialization", () => { + test("should create a provider instance with default retry options", () => { + expect(provider).toBeInstanceOf(SlackClientProvider); + const context = provider.getContext(); + expect(context).toHaveProperty("client"); + expect(context).toHaveProperty("config"); + expect(context.config).toEqual(mockConfig); + }); + + test("should create a provider instance with custom retry options", () => { + const retryOptions = { + maxRetries: 5, + initialDelay: 2000, + maxDelay: 10000, + }; + const providerWithOptions = new SlackClientProvider(mockConfig, retryOptions); + // @ts-ignore - setting mock client for testing + providerWithOptions['client'] = mockWebClient; + + expect(providerWithOptions).toBeInstanceOf(SlackClientProvider); + const context = providerWithOptions.getContext(); + expect(context).toHaveProperty("client"); + expect(context).toHaveProperty("config"); + expect(context.config).toEqual(mockConfig); + }); + }); + + describe("Connection Validation", () => { + test("should validate connection successfully", async () => { + const mockResponse = createMockSlackResponse(true, { + user_id: "test-bot-id", + }) as AuthTestResponse; + const mockTest = mockWebClient.auth.test as vi.Mock; + mockTest.mockResolvedValue(mockResponse); + + const result = await provider.validateConnection(); + expect(result).toBe(true); + }); + + test("should handle failed validation", async () => { + const mockResponse = createMockSlackResponse(false) as AuthTestResponse; + const mockTest = mockWebClient.auth.test as vi.Mock; + mockTest.mockResolvedValue(mockResponse); + + const result = await provider.validateConnection(); + expect(result).toBe(false); + }); + + test("should handle connection errors", async () => { + const mockTest = mockWebClient.auth.test as vi.Mock; + mockTest.mockRejectedValue(new Error("Connection failed")); + + const result = await provider.validateConnection(); + expect(result).toBe(false); + }); + }); + + describe("Message Sending", () => { + const channelId = "test-channel"; + const text = "Hello, world!"; + + test("should successfully send a message", async () => { + const expectedResponse = createMockSlackResponse(true, { + ts: "1234567890.123456", + }) as ChatPostMessageResponse; + const mockPostMessage = mockWebClient.chat.postMessage as vi.Mock; + mockPostMessage.mockResolvedValue(expectedResponse); + + const result = await provider.sendMessage(channelId, text); + expect(result.ok).toBe(true); + expect(mockPostMessage).toHaveBeenCalledWith({ + channel: channelId, + text: text, + }); + }); + + test("should handle rate limiting", async () => { + const mockResponse = createMockSlackResponse(true) as ChatPostMessageResponse; + const mockPostMessage = mockWebClient.chat.postMessage as vi.Mock; + + mockPostMessage + .mockRejectedValueOnce(new Error("rate_limited")) + .mockResolvedValueOnce(mockResponse); + + const result = await provider.sendMessage(channelId, text); + expect(result.ok).toBe(true); + }); + + test("should handle network errors with retry", async () => { + const mockResponse = createMockSlackResponse(true) as ChatPostMessageResponse; + const mockPostMessage = mockWebClient.chat.postMessage as vi.Mock; + + mockPostMessage + .mockRejectedValueOnce(new Error("network_error")) + .mockResolvedValueOnce(mockResponse); + + const result = await provider.sendMessage(channelId, text); + expect(result.ok).toBe(true); + }); + }); +}); diff --git a/packages/client-slack/__tests__/slack-client.test.ts b/packages/client-slack/__tests__/slack-client.test.ts new file mode 100644 index 000000000000..24de649fd6fe --- /dev/null +++ b/packages/client-slack/__tests__/slack-client.test.ts @@ -0,0 +1,55 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { SlackClient } from '../src/index'; +import { WebClient } from '@slack/web-api'; +import { IAgentRuntime, Character } from '@elizaos/core'; + +// Mock dependencies +vi.mock('@slack/web-api'); +vi.mock('@elizaos/core'); + +describe('SlackClient', () => { + let mockRuntime: IAgentRuntime; + let slackClient: SlackClient; + + beforeEach(() => { + // Setup mock runtime + mockRuntime = { + getSetting: vi.fn((key: string) => { + const settings: { [key: string]: string } = { + 'SLACK_BOT_TOKEN': 'test-token', + 'SLACK_SIGNING_SECRET': 'test-secret' + }; + return settings[key]; + }), + character: {} as Character + } as unknown as IAgentRuntime; + }); + + it('should initialize with correct settings', () => { + slackClient = new SlackClient(mockRuntime); + expect(mockRuntime.getSetting).toHaveBeenCalledWith('SLACK_BOT_TOKEN'); + expect(mockRuntime.getSetting).toHaveBeenCalledWith('SLACK_SIGNING_SECRET'); + }); + + it('should throw error if SLACK_BOT_TOKEN is missing', () => { + mockRuntime.getSetting = vi.fn((key: string) => { + const settings: { [key: string]: string } = { + 'SLACK_SIGNING_SECRET': 'test-secret' + }; + return settings[key]; + }); + + expect(() => new SlackClient(mockRuntime)).toThrow('SLACK_BOT_TOKEN is required'); + }); + + it('should throw error if SLACK_SIGNING_SECRET is missing', () => { + mockRuntime.getSetting = vi.fn((key: string) => { + const settings: { [key: string]: string } = { + 'SLACK_BOT_TOKEN': 'test-token' + }; + return settings[key]; + }); + + expect(() => new SlackClient(mockRuntime)).toThrow('SLACK_SIGNING_SECRET is required'); + }); +}); diff --git a/packages/client-slack/package.json b/packages/client-slack/package.json index bdeccf37b5d7..95d58c0f7012 100644 --- a/packages/client-slack/package.json +++ b/packages/client-slack/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-slack", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "Slack client plugin for Eliza framework", "type": "module", "main": "dist/index.js", @@ -21,7 +21,8 @@ ], "scripts": { "build": "tsup src/index.ts --format esm --dts", - "test": "jest", + "test": "vitest run", + "test:watch": "vitest", "lint": "eslint --fix --cache .", "clean": "rimraf dist", "dev": "tsup src/index.ts --watch", @@ -44,14 +45,11 @@ "devDependencies": { "@types/express": "^4.17.21", "@types/fluent-ffmpeg": "^2.1.24", - "@types/jest": "^29.5.0", "@types/node": "^18.15.11", - "jest": "^29.5.0", "rimraf": "^5.0.0", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "tsup": "^8.3.5", - "typescript": "^5.0.0" + "tsup": "^6.7.0", + "typescript": "^5.0.3", + "vitest": "^1.2.1" }, "engines": { "node": ">=14.0.0" diff --git a/packages/client-slack/src/tests/setup.ts b/packages/client-slack/src/tests/setup.ts deleted file mode 100644 index fdb2f0ab9561..000000000000 --- a/packages/client-slack/src/tests/setup.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { jest } from "@jest/globals"; -import type { Mocked } from "jest-mock"; -import { config } from "dotenv"; -import { resolve } from "path"; -import { WebClient } from "@slack/web-api"; -import type { - AuthTestResponse, - ChatPostMessageResponse, - ConversationsInfoResponse, - FilesUploadResponse, -} from "@slack/web-api"; - -// Load test environment variables -const envPath = resolve(__dirname, "../../../../.env"); -console.log("Loading test environment from:", envPath); -config({ path: envPath }); - -// Set up test environment variables if not present -const testEnvVars = { - SLACK_APP_ID: "test-app-id", - SLACK_CLIENT_ID: "test-client-id", - SLACK_CLIENT_SECRET: "test-client-secret", - SLACK_SIGNING_SECRET: "test-signing-secret", - SLACK_VERIFICATION_TOKEN: "test-verification-token", - SLACK_BOT_TOKEN: "test-bot-token", - SLACK_CHANNEL_ID: "test-channel-id", - SLACK_BOT_ID: "test-bot-id", -}; - -Object.entries(testEnvVars).forEach(([key, value]) => { - if (!process.env[key]) { - process.env[key] = value; - } -}); - -// Create base mock functions with proper return types -const mockAuthTest = jest - .fn<() => Promise>() - .mockResolvedValue({ - ok: true, - url: "https://test.slack.com", - team: "test-team", - user: "test-user", - team_id: "T123456", - user_id: "U123456", - }); - -const mockPostMessage = jest - .fn<() => Promise>() - .mockResolvedValue({ - ok: true, - channel: "C123456", - ts: "1234567890.123456", - message: { - text: "test message", - ts: "1234567890.123456", - type: "message", - }, - }); - -const mockConversationsInfo = jest - .fn<() => Promise>() - .mockResolvedValue({ - ok: true, - channel: { - id: "C123456", - name: "test-channel", - is_channel: true, - created: 12345678, - }, - }); - -const mockFilesUpload = jest - .fn<() => Promise>() - .mockResolvedValue({ - ok: true, - file: { - id: "F123456", - name: "test-file", - title: "test-file", - mimetype: "text/plain", - filetype: "text", - pretty_type: "Plain Text", - user: "U123456", - size: 12345, - mode: "hosted", - is_external: false, - external_type: "", - is_public: true, - public_url_shared: false, - display_as_bot: false, - username: "", - url_private: "https://test.slack.com/files/test-file", - url_private_download: - "https://test.slack.com/files/test-file/download", - permalink: "https://test.slack.com/files/test-file/permalink", - permalink_public: "https://test.slack.com/files/test-file/public", - created: 12345678, - timestamp: 12345678, - channels: ["C123456"], - groups: [], - ims: [], - comments_count: 0, - }, - }); - -const mockFilesUploadV2 = jest - .fn<() => Promise>() - .mockResolvedValue({ - ok: true, - file: { - id: "F123456", - created: 12345678, - timestamp: 12345678, - name: "test-file", - title: "test-file", - mimetype: "text/plain", - filetype: "text", - pretty_type: "Plain Text", - user: "U123456", - size: 12345, - mode: "hosted", - is_external: false, - external_type: "", - is_public: true, - public_url_shared: false, - display_as_bot: false, - username: "", - url_private: "https://test.slack.com/files/test-file", - url_private_download: - "https://test.slack.com/files/test-file/download", - permalink: "https://test.slack.com/files/test-file/permalink", - permalink_public: "https://test.slack.com/files/test-file/public", - channels: ["C123456"], - groups: [], - ims: [], - comments_count: 0, - }, - }); - -// Create mock WebClient -const mockWebClient = { - slackApiUrl: "https://slack.com/api/", - token: "test-token", - apiCall: jest.fn(), - auth: { - test: mockAuthTest, - }, - chat: { - postMessage: mockPostMessage, - }, - conversations: { - info: mockConversationsInfo, - }, - files: { - upload: mockFilesUpload, - uploadV2: mockFilesUploadV2, - }, -} as unknown as Mocked; - -// Mock the WebClient constructor -jest.mock("@slack/web-api", () => ({ - WebClient: jest.fn().mockImplementation(() => mockWebClient), -})); - -// Helper function to get mock WebClient -export function getMockWebClient(): Mocked { - return mockWebClient; -} - -// Helper function to create mock Slack API responses -export function createMockSlackResponse(ok: boolean, data: any = {}) { - return { - ok, - ...data, - }; -} - -// Helper function to simulate rate limiting -export function simulateRateLimit(client: Mocked) { - const mockPostMessage = client.chat.postMessage as Mocked< - typeof client.chat.postMessage - >; - mockPostMessage.mockRejectedValueOnce(new Error("rate_limited")); -} - -// Helper function to simulate network errors -export function simulateNetworkError(client: Mocked) { - const mockPostMessage = client.chat.postMessage as Mocked< - typeof client.chat.postMessage - >; - mockPostMessage.mockRejectedValueOnce(new Error("network_error")); -} - -// Global test setup -beforeAll(() => { - jest.clearAllMocks(); -}); - -// Reset mocks after each test -afterEach(() => { - jest.clearAllMocks(); -}); diff --git a/packages/client-slack/src/tests/slack-client.provider.test.ts b/packages/client-slack/src/tests/slack-client.provider.test.ts deleted file mode 100644 index fbd7f2251198..000000000000 --- a/packages/client-slack/src/tests/slack-client.provider.test.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { describe, expect, test, jest, beforeEach } from "@jest/globals"; -import type { Mocked } from "jest-mock"; -import { SlackClientProvider } from "../providers/slack-client.provider"; -import { SlackConfig } from "../types/slack-types"; -import { getMockWebClient, createMockSlackResponse } from "./setup"; -import { WebClient } from "@slack/web-api"; -import type { - AuthTestResponse, - ChatPostMessageResponse, - ConversationsInfoResponse, -} from "@slack/web-api"; - -jest.mock("@slack/web-api"); - -describe("SlackClientProvider", () => { - let provider: SlackClientProvider; - let mockWebClient: Mocked; - let mockConfig: SlackConfig; - - beforeEach(() => { - jest.clearAllMocks(); - mockConfig = { - appId: "test-app-id", - clientId: "test-client-id", - clientSecret: "test-client-secret", - signingSecret: "test-signing-secret", - verificationToken: "test-verification-token", - botToken: "test-bot-token", - botId: "test-bot-id", - }; - mockWebClient = getMockWebClient(); - provider = new SlackClientProvider(mockConfig); - }); - - describe("Initialization", () => { - test("should create a provider instance with default retry options", () => { - expect(provider).toBeInstanceOf(SlackClientProvider); - const context = provider.getContext(); - expect(context).toHaveProperty("client"); - expect(context).toHaveProperty("config"); - expect(context.config).toEqual(mockConfig); - }); - - test("should create a provider instance with custom retry options", () => { - const retryOptions = { - maxRetries: 5, - initialDelay: 2000, - maxDelay: 10000, - }; - const providerWithOptions = new SlackClientProvider( - mockConfig, - retryOptions - ); - expect(providerWithOptions).toBeInstanceOf(SlackClientProvider); - }); - }); - - describe("Connection Validation", () => { - test("should successfully validate connection", async () => { - const mockResponse = createMockSlackResponse(true, { - user_id: "test-bot-id", - }) as AuthTestResponse; - const mockTest = mockWebClient.auth.test as Mocked< - typeof mockWebClient.auth.test - >; - mockTest.mockResolvedValue(mockResponse); - - const result = await provider.validateConnection(); - expect(result).toBe(true); - expect(mockTest).toHaveBeenCalled(); - }); - - test("should handle failed connection validation", async () => { - const mockResponse = createMockSlackResponse( - false - ) as AuthTestResponse; - const mockTest = mockWebClient.auth.test as Mocked< - typeof mockWebClient.auth.test - >; - mockTest.mockResolvedValue(mockResponse); - - const result = await provider.validateConnection(); - expect(result).toBe(false); - }); - - test("should handle connection errors", async () => { - const mockTest = mockWebClient.auth.test as Mocked< - typeof mockWebClient.auth.test - >; - mockTest.mockRejectedValue(new Error("Connection failed")); - - const result = await provider.validateConnection(); - expect(result).toBe(false); - }); - }); - - describe("Message Sending", () => { - const channelId = "test-channel"; - const text = "Hello, world!"; - - test("should successfully send a message", async () => { - const expectedResponse = createMockSlackResponse(true, { - ts: "1234567890.123456", - }) as ChatPostMessageResponse; - const mockPostMessage = mockWebClient.chat.postMessage as Mocked< - typeof mockWebClient.chat.postMessage - >; - mockPostMessage.mockResolvedValue(expectedResponse); - - const result = await provider.sendMessage(channelId, text); - expect(result).toEqual(expectedResponse); - expect(mockPostMessage).toHaveBeenCalledWith({ - channel: channelId, - text, - }); - }); - - test("should handle rate limiting", async () => { - const mockResponse = createMockSlackResponse( - true - ) as ChatPostMessageResponse; - const mockPostMessage = mockWebClient.chat.postMessage as Mocked< - typeof mockWebClient.chat.postMessage - >; - - mockPostMessage - .mockRejectedValueOnce(new Error("rate_limited")) - .mockResolvedValueOnce(mockResponse); - - const result = await provider.sendMessage(channelId, text); - expect(result.ok).toBe(true); - expect(mockPostMessage).toHaveBeenCalledTimes(2); - }); - - test("should handle network errors", async () => { - const mockResponse = createMockSlackResponse( - true - ) as ChatPostMessageResponse; - const mockPostMessage = mockWebClient.chat.postMessage as Mocked< - typeof mockWebClient.chat.postMessage - >; - - mockPostMessage - .mockRejectedValueOnce(new Error("network_error")) - .mockResolvedValueOnce(mockResponse); - - const result = await provider.sendMessage(channelId, text); - expect(result.ok).toBe(true); - expect(mockPostMessage).toHaveBeenCalledTimes(2); - }); - }); - - describe("Thread Replies", () => { - const channelId = "test-channel"; - const threadTs = "1234567890.123456"; - const text = "Thread reply"; - - test("should successfully reply in thread", async () => { - const expectedResponse = createMockSlackResponse(true, { - ts: "1234567890.123457", - }) as ChatPostMessageResponse; - const mockPostMessage = mockWebClient.chat.postMessage as Mocked< - typeof mockWebClient.chat.postMessage - >; - mockPostMessage.mockResolvedValue(expectedResponse); - - const result = await provider.replyInThread( - channelId, - threadTs, - text - ); - expect(result).toEqual(expectedResponse); - expect(mockPostMessage).toHaveBeenCalledWith({ - channel: channelId, - text, - thread_ts: threadTs, - }); - }); - }); - - describe("Channel Validation", () => { - const channelId = "test-channel"; - - test("should successfully validate channel", async () => { - const mockResponse = createMockSlackResponse( - true - ) as ConversationsInfoResponse; - const mockInfo = mockWebClient.conversations.info as Mocked< - typeof mockWebClient.conversations.info - >; - mockInfo.mockResolvedValue(mockResponse); - - const result = await provider.validateChannel(channelId); - expect(result).toBe(true); - }); - - test("should handle invalid channel", async () => { - const mockInfo = mockWebClient.conversations.info as Mocked< - typeof mockWebClient.conversations.info - >; - mockInfo.mockRejectedValue(new Error("Channel not found")); - - const result = await provider.validateChannel(channelId); - expect(result).toBe(false); - }); - }); -}); diff --git a/packages/client-slack/src/tests/test_image.png b/packages/client-slack/src/tests/test_image.png deleted file mode 100644 index b711feb1fa3a..000000000000 Binary files a/packages/client-slack/src/tests/test_image.png and /dev/null differ diff --git a/packages/client-slack/vitest.config.ts b/packages/client-slack/vitest.config.ts new file mode 100644 index 000000000000..467b936e8858 --- /dev/null +++ b/packages/client-slack/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['__tests__/**/*.test.ts'], + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html'], + }, + }, +}) diff --git a/packages/client-telegram/package.json b/packages/client-telegram/package.json index 622c2d2ba6aa..e75ae83c64f6 100644 --- a/packages/client-telegram/package.json +++ b/packages/client-telegram/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-telegram", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-twitter/package.json b/packages/client-twitter/package.json index 566cb86d7d02..8345c09a7c5e 100644 --- a/packages/client-twitter/package.json +++ b/packages/client-twitter/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/client-twitter", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/client-twitter/src/search.ts b/packages/client-twitter/src/search.ts index 029ebf70449f..9da1be9fe6c7 100644 --- a/packages/client-twitter/src/search.ts +++ b/packages/client-twitter/src/search.ts @@ -284,7 +284,7 @@ export class TwitterSearchClient { response, message.roomId, this.twitterUsername, - tweetId + selectedTweet.id ); return memories; }; diff --git a/packages/core/__tests__/database.test.ts b/packages/core/__tests__/database.test.ts index 7420d9960185..1c149d3cf444 100644 --- a/packages/core/__tests__/database.test.ts +++ b/packages/core/__tests__/database.test.ts @@ -15,6 +15,18 @@ class MockDatabaseAdapter extends DatabaseAdapter { getMemoryById(_id: UUID): Promise { throw new Error("Method not implemented."); } + async getMemoriesByIds( + memoryIds: UUID[], + _tableName?: string + ): Promise { + return memoryIds.map((id) => ({ + id: id, + content: { text: "Test Memory" }, + roomId: "room-id" as UUID, + userId: "user-id" as UUID, + agentId: "agent-id" as UUID, + })) as Memory[]; + } log(_params: { body: { [key: string]: unknown }; userId: UUID; diff --git a/packages/core/__tests__/models.test.ts b/packages/core/__tests__/models.test.ts index 4a883266b896..52c1649bee02 100644 --- a/packages/core/__tests__/models.test.ts +++ b/packages/core/__tests__/models.test.ts @@ -18,6 +18,8 @@ vi.mock("../settings", () => { LLAMACLOUD_MODEL_LARGE: "mock-llama-large", TOGETHER_MODEL_SMALL: "mock-together-small", TOGETHER_MODEL_LARGE: "mock-together-large", + LIVEPEER_GATEWAY_URL: "http://gateway.test-gateway", + IMAGE_LIVEPEER_MODEL: "ByteDance/SDXL-Lightning", }, loadEnv: vi.fn(), }; @@ -125,6 +127,26 @@ describe("Model Provider Configuration", () => { ); }); }); + describe("Livepeer Provider", () => { + test("should have correct endpoint configuration", () => { + expect(models[ModelProviderName.LIVEPEER].endpoint).toBe("http://gateway.test-gateway"); + }); + + test("should have correct model mappings", () => { + const livepeerModels = models[ModelProviderName.LIVEPEER].model; + expect(livepeerModels[ModelClass.SMALL]).toBe("meta-llama/Meta-Llama-3.1-8B-Instruct"); + expect(livepeerModels[ModelClass.MEDIUM]).toBe("meta-llama/Meta-Llama-3.1-8B-Instruct"); + expect(livepeerModels[ModelClass.LARGE]).toBe("meta-llama/Meta-Llama-3.1-8B-Instruct"); + expect(livepeerModels[ModelClass.IMAGE]).toBe("ByteDance/SDXL-Lightning"); + }); + + test("should have correct settings configuration", () => { + const settings = models[ModelProviderName.LIVEPEER].settings; + expect(settings.maxInputTokens).toBe(128000); + expect(settings.maxOutputTokens).toBe(8192); + expect(settings.temperature).toBe(0); + }); + }); }); describe("Model Retrieval Functions", () => { @@ -224,3 +246,16 @@ describe("Environment Variable Integration", () => { ); }); }); + +describe("Generation with Livepeer", () => { + test("should have correct image generation settings", () => { + const livepeerConfig = models[ModelProviderName.LIVEPEER]; + expect(livepeerConfig.model[ModelClass.IMAGE]).toBe("ByteDance/SDXL-Lightning"); + expect(livepeerConfig.settings.temperature).toBe(0); + }); + + test("should use default image model", () => { + delete process.env.IMAGE_LIVEPEER_MODEL; + expect(models[ModelProviderName.LIVEPEER].model[ModelClass.IMAGE]).toBe("ByteDance/SDXL-Lightning"); + }); +}); diff --git a/packages/core/package.json b/packages/core/package.json index 8aa76e07d7c0..7d5598a0f89e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/core", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "", "type": "module", "main": "dist/index.js", @@ -40,7 +40,6 @@ "@rollup/plugin-terser": "0.1.0", "@rollup/plugin-typescript": "11.1.6", "@solana/web3.js": "1.95.8", - "@tavily/core": "^0.0.2", "@types/fluent-ffmpeg": "2.1.27", "@types/jest": "29.5.14", "@types/mocha": "10.0.10", @@ -51,7 +50,6 @@ "@typescript-eslint/eslint-plugin": "8.16.0", "@typescript-eslint/parser": "8.16.0", "@vitest/coverage-v8": "2.1.5", - "dotenv": "16.4.5", "jest": "29.7.0", "lint-staged": "15.2.10", "nodemon": "3.1.7", @@ -76,6 +74,7 @@ "@types/uuid": "10.0.0", "ai": "3.4.33", "anthropic-vertex-ai": "1.0.2", + "dotenv": "16.4.5", "fastembed": "1.14.1", "fastestsmallesttextencoderdecoder": "1.0.22", "gaxios": "6.7.1", @@ -86,6 +85,7 @@ "langchain": "0.3.6", "ollama-ai-provider": "0.16.1", "openai": "4.73.0", + "@tavily/core": "^0.0.2", "tinyld": "1.3.4", "together-ai": "0.7.0", "unique-names-generator": "4.7.1", diff --git a/packages/core/src/database.ts b/packages/core/src/database.ts index 322341a8cfd8..4491d5cf2f1a 100644 --- a/packages/core/src/database.ts +++ b/packages/core/src/database.ts @@ -100,6 +100,17 @@ export abstract class DatabaseAdapter implements IDatabaseAdapter { abstract getMemoryById(id: UUID): Promise; + /** + * Retrieves multiple memories by their IDs + * @param memoryIds Array of UUIDs of the memories to retrieve + * @param tableName Optional table name to filter memories by type + * @returns Promise resolving to array of Memory objects + */ + abstract getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise; + /** * Retrieves cached embeddings based on the specified query parameters. * @param params An object containing parameters for the embedding retrieval. @@ -382,12 +393,12 @@ export abstract class DatabaseAdapter implements IDatabaseAdapter { userId: UUID; }): Promise; - /** + /** * Retrieves knowledge items based on specified parameters. * @param params Object containing search parameters * @returns Promise resolving to array of knowledge items */ - abstract getKnowledge(params: { + abstract getKnowledge(params: { id?: UUID; agentId: UUID; limit?: number; diff --git a/packages/core/src/environment.ts b/packages/core/src/environment.ts index 4bbe5fcb915e..9d51e0f4e68c 100644 --- a/packages/core/src/environment.ts +++ b/packages/core/src/environment.ts @@ -77,15 +77,23 @@ export const CharacterSchema = z.object({ postExamples: z.array(z.string()), topics: z.array(z.string()), adjectives: z.array(z.string()), - knowledge: z.array( - z.union([ - z.string(), - z.object({ - path: z.string(), - shared: z.boolean().optional() - }) - ]) - ).optional(), + knowledge: z + .array( + z.union([ + z.string(), // Direct knowledge strings + z.object({ + // Individual file config + path: z.string(), + shared: z.boolean().optional(), + }), + z.object({ + // Directory config + directory: z.string(), + shared: z.boolean().optional(), + }), + ]) + ) + .optional(), clients: z.array(z.nativeEnum(Clients)), plugins: z.union([z.array(z.string()), z.array(PluginSchema)]), settings: z diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 77fb3986a806..4c3d51fae704 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -41,7 +41,6 @@ import { ModelClass, ModelProviderName, ServiceType, - SearchResponse, ActionResponse, IVerifiableInferenceAdapter, VerifiableInferenceOptions, @@ -51,7 +50,9 @@ import { TokenizerType, } from "./types.ts"; import { fal } from "@fal-ai/client"; -import { tavily } from "@tavily/core"; + +import BigNumber from "bignumber.js"; +import { createPublicClient, http } from "viem"; type Tool = CoreTool; type StepResult = AIStepResult; @@ -164,14 +165,125 @@ async function truncateTiktoken( } } +/** + * Get OnChain EternalAI System Prompt + * @returns System Prompt + */ +async function getOnChainEternalAISystemPrompt( + runtime: IAgentRuntime +): Promise | undefined { + const agentId = runtime.getSetting("ETERNALAI_AGENT_ID"); + const providerUrl = runtime.getSetting("ETERNALAI_RPC_URL"); + const contractAddress = runtime.getSetting( + "ETERNALAI_AGENT_CONTRACT_ADDRESS" + ); + if (agentId && providerUrl && contractAddress) { + // get on-chain system-prompt + const contractABI = [ + { + inputs: [ + { + internalType: "uint256", + name: "_agentId", + type: "uint256", + }, + ], + name: "getAgentSystemPrompt", + outputs: [ + { internalType: "bytes[]", name: "", type: "bytes[]" }, + ], + stateMutability: "view", + type: "function", + }, + ]; + + const publicClient = createPublicClient({ + transport: http(providerUrl), + }); + + try { + const validAddress: `0x${string}` = + contractAddress as `0x${string}`; + const result = await publicClient.readContract({ + address: validAddress, + abi: contractABI, + functionName: "getAgentSystemPrompt", + args: [new BigNumber(agentId)], + }); + if (result) { + elizaLogger.info("on-chain system-prompt response", result[0]); + const value = result[0].toString().replace("0x", ""); + const content = Buffer.from(value, "hex").toString("utf-8"); + elizaLogger.info("on-chain system-prompt", content); + return await fetchEternalAISystemPrompt(runtime, content); + } else { + return undefined; + } + } catch (error) { + elizaLogger.error(error); + elizaLogger.error("err", error); + } + } + return undefined; +} + +/** + * Fetch EternalAI System Prompt + * @returns System Prompt + */ +async function fetchEternalAISystemPrompt( + runtime: IAgentRuntime, + content: string +): Promise | undefined { + const IPFS = "ipfs://"; + const containsSubstring: boolean = content.includes(IPFS); + if (containsSubstring) { + const lightHouse = content.replace( + IPFS, + "https://gateway.lighthouse.storage/ipfs/" + ); + elizaLogger.info("fetch lightHouse", lightHouse); + const responseLH = await fetch(lightHouse, { + method: "GET", + }); + elizaLogger.info("fetch lightHouse resp", responseLH); + if (responseLH.ok) { + const data = await responseLH.text(); + return data; + } else { + const gcs = content.replace( + IPFS, + "https://cdn.eternalai.org/upload/" + ); + elizaLogger.info("fetch gcs", gcs); + const responseGCS = await fetch(gcs, { + method: "GET", + }); + elizaLogger.info("fetch lightHouse gcs", responseGCS); + if (responseGCS.ok) { + const data = await responseGCS.text(); + return data; + } else { + throw new Error("invalid on-chain system prompt"); + } + } + } else { + return content; + } +} + /** * Gets the Cloudflare Gateway base URL for a specific provider if enabled * @param runtime The runtime environment * @param provider The model provider name * @returns The Cloudflare Gateway base URL if enabled, undefined otherwise */ -function getCloudflareGatewayBaseURL(runtime: IAgentRuntime, provider: string): string | undefined { - const isCloudflareEnabled = runtime.getSetting("CLOUDFLARE_GW_ENABLED") === "true"; +function getCloudflareGatewayBaseURL( + runtime: IAgentRuntime, + provider: string +): string | undefined { + const isCloudflareEnabled = + runtime.getSetting("CLOUDFLARE_GW_ENABLED") === "true"; const cloudflareAccountId = runtime.getSetting("CLOUDFLARE_AI_ACCOUNT_ID"); const cloudflareGatewayId = runtime.getSetting("CLOUDFLARE_AI_GATEWAY_ID"); @@ -179,7 +291,7 @@ function getCloudflareGatewayBaseURL(runtime: IAgentRuntime, provider: string): isEnabled: isCloudflareEnabled, hasAccountId: !!cloudflareAccountId, hasGatewayId: !!cloudflareGatewayId, - provider: provider + provider: provider, }); if (!isCloudflareEnabled) { @@ -188,12 +300,16 @@ function getCloudflareGatewayBaseURL(runtime: IAgentRuntime, provider: string): } if (!cloudflareAccountId) { - elizaLogger.warn("Cloudflare Gateway is enabled but CLOUDFLARE_AI_ACCOUNT_ID is not set"); + elizaLogger.warn( + "Cloudflare Gateway is enabled but CLOUDFLARE_AI_ACCOUNT_ID is not set" + ); return undefined; } if (!cloudflareGatewayId) { - elizaLogger.warn("Cloudflare Gateway is enabled but CLOUDFLARE_AI_GATEWAY_ID is not set"); + elizaLogger.warn( + "Cloudflare Gateway is enabled but CLOUDFLARE_AI_GATEWAY_ID is not set" + ); return undefined; } @@ -202,7 +318,7 @@ function getCloudflareGatewayBaseURL(runtime: IAgentRuntime, provider: string): provider, baseURL, accountId: cloudflareAccountId, - gatewayId: cloudflareGatewayId + gatewayId: cloudflareGatewayId, }); return baseURL; @@ -292,9 +408,13 @@ export async function generateText({ hasRuntime: !!runtime, runtimeSettings: { CLOUDFLARE_GW_ENABLED: runtime.getSetting("CLOUDFLARE_GW_ENABLED"), - CLOUDFLARE_AI_ACCOUNT_ID: runtime.getSetting("CLOUDFLARE_AI_ACCOUNT_ID"), - CLOUDFLARE_AI_GATEWAY_ID: runtime.getSetting("CLOUDFLARE_AI_GATEWAY_ID") - } + CLOUDFLARE_AI_ACCOUNT_ID: runtime.getSetting( + "CLOUDFLARE_AI_ACCOUNT_ID" + ), + CLOUDFLARE_AI_GATEWAY_ID: runtime.getSetting( + "CLOUDFLARE_AI_GATEWAY_ID" + ), + }, }); const endpoint = @@ -414,8 +534,11 @@ export async function generateText({ case ModelProviderName.TOGETHER: case ModelProviderName.NINETEEN_AI: case ModelProviderName.AKASH_CHAT_API: { - elizaLogger.debug("Initializing OpenAI model with Cloudflare check"); - const baseURL = getCloudflareGatewayBaseURL(runtime, 'openai') || endpoint; + elizaLogger.debug( + "Initializing OpenAI model with Cloudflare check" + ); + const baseURL = + getCloudflareGatewayBaseURL(runtime, "openai") || endpoint; //elizaLogger.debug("OpenAI baseURL result:", { baseURL }); const openai = createOpenAI({ @@ -451,20 +574,23 @@ export async function generateText({ const openai = createOpenAI({ apiKey, baseURL: endpoint, - fetch: async (url: string, options: any) => { + fetch: async (input: RequestInfo | URL, init?: RequestInit): Promise => { + const url = typeof input === 'string' ? input : input.toString(); const chain_id = runtime.getSetting("ETERNALAI_CHAIN_ID") || "45762"; + + const options: RequestInit = { ...init }; if (options?.body) { - const body = JSON.parse(options.body); + const body = JSON.parse(options.body as string); body.chain_id = chain_id; options.body = JSON.stringify(body); } + const fetching = await runtime.fetch(url, options); - if ( - parseBooleanFromText( - runtime.getSetting("ETERNALAI_LOG") - ) - ) { + + if (parseBooleanFromText( + runtime.getSetting("ETERNALAI_LOG") + )) { elizaLogger.info( "Request data: ", JSON.stringify(options, null, 2) @@ -485,10 +611,32 @@ export async function generateText({ }, }); + let system_prompt = + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined; + try { + const on_chain_system_prompt = + await getOnChainEternalAISystemPrompt(runtime); + if (!on_chain_system_prompt) { + elizaLogger.error( + new Error("invalid on_chain_system_prompt") + ); + } else { + system_prompt = on_chain_system_prompt; + elizaLogger.info( + "new on-chain system prompt", + system_prompt + ); + } + } catch (e) { + elizaLogger.error(e); + } + const { text: openaiResponse } = await aiGenerateText({ model: openai.languageModel(model), prompt: context, - system: runtime.character.system ?? settings.SYSTEM_PROMPT ?? undefined, + system: system_prompt, temperature: temperature, maxTokens: max_response_length, frequencyPenalty: frequency_penalty, @@ -550,11 +698,19 @@ export async function generateText({ } case ModelProviderName.ANTHROPIC: { - elizaLogger.debug("Initializing Anthropic model with Cloudflare check"); - const baseURL = getCloudflareGatewayBaseURL(runtime, 'anthropic') || "https://api.anthropic.com/v1"; + elizaLogger.debug( + "Initializing Anthropic model with Cloudflare check" + ); + const baseURL = + getCloudflareGatewayBaseURL(runtime, "anthropic") || + "https://api.anthropic.com/v1"; elizaLogger.debug("Anthropic baseURL result:", { baseURL }); - const anthropic = createAnthropic({ apiKey, baseURL, fetch: runtime.fetch }); + const anthropic = createAnthropic({ + apiKey, + baseURL, + fetch: runtime.fetch, + }); const { text: anthropicResponse } = await aiGenerateText({ model: anthropic.languageModel(model), prompt: context, @@ -642,10 +798,16 @@ export async function generateText({ } case ModelProviderName.GROQ: { - elizaLogger.debug("Initializing Groq model with Cloudflare check"); - const baseURL = getCloudflareGatewayBaseURL(runtime, 'groq'); + elizaLogger.debug( + "Initializing Groq model with Cloudflare check" + ); + const baseURL = getCloudflareGatewayBaseURL(runtime, "groq"); elizaLogger.debug("Groq baseURL result:", { baseURL }); - const groq = createGroq({ apiKey, fetch: runtime.fetch, baseURL }); + const groq = createGroq({ + apiKey, + fetch: runtime.fetch, + baseURL, + }); const { text: groqResponse } = await aiGenerateText({ model: groq.languageModel(model), @@ -870,6 +1032,36 @@ export async function generateText({ break; } + case ModelProviderName.ATOMA: { + elizaLogger.debug("Initializing Atoma model."); + const atoma = createOpenAI({ + apiKey, + baseURL: endpoint, + fetch: runtime.fetch, + }); + + const { text: atomaResponse } = await aiGenerateText({ + model: atoma.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = atomaResponse; + elizaLogger.debug("Received response from Atoma model."); + break; + } + case ModelProviderName.GALADRIEL: { elizaLogger.debug("Initializing Galadriel model."); const headers = {}; @@ -996,6 +1188,55 @@ export async function generateText({ break; } + case ModelProviderName.LIVEPEER: { + elizaLogger.debug("Initializing Livepeer model."); + + if (!endpoint) { + throw new Error("Livepeer Gateway URL is not defined"); + } + + const requestBody = { + model: model, + messages: [ + { + role: "system", + content: runtime.character.system ?? settings.SYSTEM_PROMPT ?? "You are a helpful assistant" + }, + { + role: "user", + content: context + } + ], + max_tokens: max_response_length, + stream: false + }; + + const fetchResponse = await runtime.fetch(endpoint+'/llm', { + method: "POST", + headers: { + "accept": "text/event-stream", + "Content-Type": "application/json", + "Authorization": "Bearer eliza-app-llm" + }, + body: JSON.stringify(requestBody) + }); + + if (!fetchResponse.ok) { + const errorText = await fetchResponse.text(); + throw new Error(`Livepeer request failed (${fetchResponse.status}): ${errorText}`); + } + + const json = await fetchResponse.json(); + + if (!json?.choices?.[0]?.message?.content) { + throw new Error("Invalid response format from Livepeer"); + } + + response = json.choices[0].message.content.replace(/<\|start_header_id\|>assistant<\|end_header_id\|>\n\n/, ''); + elizaLogger.debug("Successfully received response from Livepeer model"); + break; + } + default: { const errorMessage = `Unsupported provider: ${provider}`; elizaLogger.error(errorMessage); @@ -1084,12 +1325,22 @@ export async function splitChunks( chunkSize: number = 512, bleed: number = 20 ): Promise { + elizaLogger.debug(`[splitChunks] Starting text split`); + const textSplitter = new RecursiveCharacterTextSplitter({ chunkSize: Number(chunkSize), chunkOverlap: Number(bleed), }); - return textSplitter.splitText(content); + const chunks = await textSplitter.splitText(content); + elizaLogger.debug(`[splitChunks] Split complete:`, { + numberOfChunks: chunks.length, + averageChunkSize: + chunks.reduce((acc, chunk) => acc + chunk.length, 0) / + chunks.length, + }); + + return chunks; } /** @@ -1102,7 +1353,6 @@ export async function splitChunks( * @param opts.presence_penalty The presence penalty to apply (0.0 to 2.0) * @param opts.temperature The temperature to control randomness (0.0 to 2.0) * @param opts.serverUrl The URL of the API server - * @param opts.token The API token for authentication * @param opts.max_context_length Maximum allowed context length in tokens * @param opts.max_response_length Maximum allowed response length in tokens * @returns Promise resolving to a boolean value parsed from the model's response @@ -1336,6 +1586,8 @@ export const generateImage = async ( jobId?: string; stylePreset?: string; hideWatermark?: boolean; + safeMode?: boolean; + cfgScale?: number; }, runtime: IAgentRuntime ): Promise<{ @@ -1518,7 +1770,6 @@ export const generateImage = async ( } }, }); - // Convert the returned image URLs to base64 to match existing functionality const base64Promises = result.data.images.map(async (image) => { const response = await fetch(image.url); @@ -1542,10 +1793,12 @@ export const generateImage = async ( body: JSON.stringify({ model: model, prompt: data.prompt, + cfg_scale: data.guidanceScale, negative_prompt: data.negativePrompt, width: data.width, height: data.height, steps: data.numIterations, + safe_mode: data.safeMode, seed: data.seed, style_preset: data.stylePreset, hide_watermark: data.hideWatermark, @@ -1617,15 +1870,18 @@ export const generateImage = async ( if (!baseUrl.protocol.startsWith("http")) { throw new Error("Invalid Livepeer Gateway URL protocol"); } + const response = await fetch( `${baseUrl.toString()}text-to-image`, { method: "POST", headers: { "Content-Type": "application/json", + Authorization: "Bearer eliza-app-img", }, body: JSON.stringify({ - model_id: model, + model_id: + data.modelId || "ByteDance/SDXL-Lightning", prompt: data.prompt, width: data.width || 1024, height: data.height || 1024, @@ -1724,28 +1980,6 @@ export const generateCaption = async ( }; }; -export const generateWebSearch = async ( - query: string, - runtime: IAgentRuntime -): Promise => { - try { - const apiKey = runtime.getSetting("TAVILY_API_KEY") as string; - if (!apiKey) { - throw new Error("TAVILY_API_KEY is not set"); - } - const tvly = tavily({ apiKey }); - const response = await tvly.search(query, { - includeAnswer: true, - maxResults: 3, // 5 (default) - topic: "general", // "general"(default) "news" - searchDepth: "basic", // "basic"(default) "advanced" - includeImages: false, // false (default) true - }); - return response; - } catch (error) { - elizaLogger.error("Error:", error); - } -}; /** * Configuration options for generating objects with a model. */ @@ -1925,6 +2159,8 @@ export async function handleProvider( return await handleOllama(options); case ModelProviderName.DEEPSEEK: return await handleDeepSeek(options); + case ModelProviderName.LIVEPEER: + return await handleLivepeer(options); default: { const errorMessage = `Unsupported provider: ${provider}`; elizaLogger.error(errorMessage); @@ -1949,7 +2185,9 @@ async function handleOpenAI({ provider: _provider, runtime, }: ProviderOptions): Promise> { - const baseURL = getCloudflareGatewayBaseURL(runtime, 'openai') || models.openai.endpoint; + const baseURL = + getCloudflareGatewayBaseURL(runtime, "openai") || + models.openai.endpoint; const openai = createOpenAI({ apiKey, baseURL }); return await aiGenerateObject({ model: openai.languageModel(model), @@ -1978,7 +2216,7 @@ async function handleAnthropic({ runtime, }: ProviderOptions): Promise> { elizaLogger.debug("Handling Anthropic request with Cloudflare check"); - const baseURL = getCloudflareGatewayBaseURL(runtime, 'anthropic'); + const baseURL = getCloudflareGatewayBaseURL(runtime, "anthropic"); elizaLogger.debug("Anthropic handleAnthropic baseURL:", { baseURL }); const anthropic = createAnthropic({ apiKey, baseURL }); @@ -2035,7 +2273,7 @@ async function handleGroq({ runtime, }: ProviderOptions): Promise> { elizaLogger.debug("Handling Groq request with Cloudflare check"); - const baseURL = getCloudflareGatewayBaseURL(runtime, 'groq'); + const baseURL = getCloudflareGatewayBaseURL(runtime, "groq"); elizaLogger.debug("Groq handleGroq baseURL:", { baseURL }); const groq = createGroq({ apiKey, baseURL }); @@ -2210,6 +2448,36 @@ async function handleDeepSeek({ }); } +async function handleLivepeer({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode, + modelOptions, +}: ProviderOptions): Promise> { + console.log("Livepeer provider api key:", apiKey); + if (!apiKey) { + throw new Error("Livepeer provider requires LIVEPEER_GATEWAY_URL to be configured"); + } + + const livepeerClient = createOpenAI({ + apiKey, + baseURL: apiKey // Use the apiKey as the baseURL since it contains the gateway URL + }); + + return await aiGenerateObject({ + model: livepeerClient.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + + // Add type definition for Together AI response interface TogetherAIImageResponse { data: Array<{ @@ -2262,4 +2530,4 @@ export async function generateTweetActions({ await new Promise((resolve) => setTimeout(resolve, retryDelay)); retryDelay *= 2; } -} +} \ No newline at end of file diff --git a/packages/core/src/localembeddingManager.ts b/packages/core/src/localembeddingManager.ts index e6f853a934d8..e8741041f63e 100644 --- a/packages/core/src/localembeddingManager.ts +++ b/packages/core/src/localembeddingManager.ts @@ -104,17 +104,17 @@ class LocalEmbeddingModelManager { try { // Let fastembed handle tokenization internally const embedding = await this.model.queryEmbed(input); - // Debug the raw embedding - elizaLogger.debug("Raw embedding from BGE:", { - type: typeof embedding, - isArray: Array.isArray(embedding), - dimensions: Array.isArray(embedding) - ? embedding.length - : "not an array", - sample: Array.isArray(embedding) - ? embedding.slice(0, 5) - : embedding, - }); + // Debug the raw embedding - uncomment if debugging embeddings + // elizaLogger.debug("Raw embedding from BGE:", { + // type: typeof embedding, + // isArray: Array.isArray(embedding), + // dimensions: Array.isArray(embedding) + // ? embedding.length + // : "not an array", + // sample: Array.isArray(embedding) + // ? embedding.slice(0, 5) + // : embedding, + // }); return this.processEmbedding(embedding); } catch (error) { elizaLogger.error("Embedding generation failed:", error); diff --git a/packages/core/src/models.ts b/packages/core/src/models.ts index 903f865724f1..af6faf44fa26 100644 --- a/packages/core/src/models.ts +++ b/packages/core/src/models.ts @@ -932,11 +932,38 @@ export const models: Models = { }, }, [ModelProviderName.LIVEPEER]: { - // livepeer endpoint is handled from the sdk + endpoint: settings.LIVEPEER_GATEWAY_URL, model: { + [ModelClass.SMALL]: { + name: + settings.SMALL_LIVEPEER_MODEL || + "meta-llama/Meta-Llama-3.1-8B-Instruct", + stop: [], + maxInputTokens: 8000, + maxOutputTokens: 8192, + temperature: 0, + }, + [ModelClass.MEDIUM]: { + name: + settings.MEDIUM_LIVEPEER_MODEL || + "meta-llama/Meta-Llama-3.1-8B-Instruct", + stop: [], + maxInputTokens: 8000, + maxOutputTokens: 8192, + temperature: 0, + }, + [ModelClass.LARGE]: { + name: + settings.LARGE_LIVEPEER_MODEL || + "meta-llama/Meta-Llama-3.1-8B-Instruct", + stop: [], + maxInputTokens: 8000, + maxOutputTokens: 8192, + temperature: 0, + }, [ModelClass.IMAGE]: { name: - settings.LIVEPEER_IMAGE_MODEL || "ByteDance/SDXL-Lightning", + settings.IMAGE_LIVEPEER_MODEL || "ByteDance/SDXL-Lightning", }, }, }, @@ -948,21 +975,21 @@ export const models: Models = { stop: [], maxInputTokens: 128000, maxOutputTokens: 8192, - temperature: 0.6, + temperature: 0, }, [ModelClass.MEDIUM]: { name: settings.MEDIUM_INFERA_MODEL || "mistral-nemo:latest", stop: [], maxInputTokens: 128000, maxOutputTokens: 8192, - temperature: 0.6, + temperature: 0, }, [ModelClass.LARGE]: { name: settings.LARGE_INFERA_MODEL || "mistral-small:latest", stop: [], maxInputTokens: 128000, maxOutputTokens: 8192, - temperature: 0.6, + temperature: 0, }, }, }, @@ -998,6 +1025,38 @@ export const models: Models = { }, }, }, + [ModelProviderName.ATOMA]: { + endpoint: settings.ATOMA_API_URL || "https://api.atoma.network/v1", + model: { + [ModelClass.SMALL]: { + name: + settings.SMALL_ATOMA_MODEL || + "meta-llama/Llama-3.3-70B-Instruct", + stop: [], + maxInputTokens: 128000, + maxOutputTokens: 8192, + temperature: 0.7, + }, + [ModelClass.MEDIUM]: { + name: + settings.MEDIUM_ATOMA_MODEL || + "meta-llama/Llama-3.3-70B-Instruct", + stop: [], + maxInputTokens: 128000, + maxOutputTokens: 8192, + temperature: 0.7, + }, + [ModelClass.LARGE]: { + name: + settings.LARGE_ATOMA_MODEL || + "meta-llama/Llama-3.3-70B-Instruct", + stop: [], + maxInputTokens: 128000, + maxOutputTokens: 8192, + temperature: 0.7, + }, + }, + }, }; export function getModelSettings( diff --git a/packages/core/src/ragknowledge.ts b/packages/core/src/ragknowledge.ts index 4ccc56c8e131..5c7cdb5cd84e 100644 --- a/packages/core/src/ragknowledge.ts +++ b/packages/core/src/ragknowledge.ts @@ -6,8 +6,11 @@ import { IRAGKnowledgeManager, RAGKnowledgeItem, UUID, + KnowledgeScope, } from "./types.ts"; import { stringToUuid } from "./uuid.ts"; +import { existsSync } from "fs"; +import { join } from "path"; /** * Manage knowledge in the database. @@ -23,15 +26,25 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { */ tableName: string; + /** + * The root directory where RAG knowledge files are located (internal) + */ + knowledgeRoot: string; + /** * Constructs a new KnowledgeManager instance. * @param opts Options for the manager. * @param opts.tableName The name of the table this manager will operate on. * @param opts.runtime The AgentRuntime instance associated with this manager. */ - constructor(opts: { tableName: string; runtime: IAgentRuntime }) { + constructor(opts: { + tableName: string; + runtime: IAgentRuntime; + knowledgeRoot: string; + }) { this.runtime = opts.runtime; this.tableName = opts.tableName; + this.knowledgeRoot = opts.knowledgeRoot; } private readonly defaultRAGMatchThreshold = 0.85; @@ -111,23 +124,25 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { return ""; } - return content - .replace(/```[\s\S]*?```/g, "") - .replace(/`.*?`/g, "") - .replace(/#{1,6}\s*(.*)/g, "$1") - .replace(/!\[(.*?)\]\(.*?\)/g, "$1") - .replace(/\[(.*?)\]\(.*?\)/g, "$1") - .replace(/(https?:\/\/)?(www\.)?([^\s]+\.[^\s]+)/g, "$3") - .replace(/<@[!&]?\d+>/g, "") - .replace(/<[^>]*>/g, "") - .replace(/^\s*[-*_]{3,}\s*$/gm, "") - .replace(/\/\*[\s\S]*?\*\//g, "") - .replace(/\/\/.*/g, "") - .replace(/\s+/g, " ") - .replace(/\n{3,}/g, "\n\n") - .replace(/[^a-zA-Z0-9\s\-_./:?=&]/g, "") - .trim() - .toLowerCase(); + return ( + content + .replace(/```[\s\S]*?```/g, "") + .replace(/`.*?`/g, "") + .replace(/#{1,6}\s*(.*)/g, "$1") + .replace(/!\[(.*?)\]\(.*?\)/g, "$1") + .replace(/\[(.*?)\]\(.*?\)/g, "$1") + .replace(/(https?:\/\/)?(www\.)?([^\s]+\.[^\s]+)/g, "$3") + .replace(/<@[!&]?\d+>/g, "") + .replace(/<[^>]*>/g, "") + .replace(/^\s*[-*_]{3,}\s*$/gm, "") + .replace(/\/\*[\s\S]*?\*\//g, "") + .replace(/\/\/.*/g, "") + .replace(/\s+/g, " ") + .replace(/\n{3,}/g, "\n\n") + // .replace(/[^a-zA-Z0-9\s\-_./:?=&]/g, "") --this strips out CJK characters + .trim() + .toLowerCase() + ); } private hasProximityMatch(text: string, terms: string[]): boolean { @@ -355,6 +370,126 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { ); } + /** + * Lists all knowledge entries for an agent without semantic search or reranking. + * Used primarily for administrative tasks like cleanup. + * + * @param agentId The agent ID to fetch knowledge entries for + * @returns Array of RAGKnowledgeItem entries + */ + async listAllKnowledge(agentId: UUID): Promise { + elizaLogger.debug( + `[Knowledge List] Fetching all entries for agent: ${agentId}` + ); + + try { + // Only pass the required agentId parameter + const results = await this.runtime.databaseAdapter.getKnowledge({ + agentId: agentId, + }); + + elizaLogger.debug( + `[Knowledge List] Found ${results.length} entries` + ); + return results; + } catch (error) { + elizaLogger.error( + "[Knowledge List] Error fetching knowledge entries:", + error + ); + throw error; + } + } + + async cleanupDeletedKnowledgeFiles() { + try { + elizaLogger.debug( + "[Cleanup] Starting knowledge cleanup process, agent: ", + this.runtime.agentId + ); + + elizaLogger.debug( + `[Cleanup] Knowledge root path: ${this.knowledgeRoot}` + ); + + const existingKnowledge = await this.listAllKnowledge( + this.runtime.agentId + ); + // Only process parent documents, ignore chunks + const parentDocuments = existingKnowledge.filter( + (item) => + !item.id.includes("chunk") && item.content.metadata?.source // Must have a source path + ); + + elizaLogger.debug( + `[Cleanup] Found ${parentDocuments.length} parent documents to check` + ); + + for (const item of parentDocuments) { + const relativePath = item.content.metadata?.source; + const filePath = join(this.knowledgeRoot, relativePath); + + elizaLogger.debug( + `[Cleanup] Checking joined file path: ${filePath}` + ); + + if (!existsSync(filePath)) { + elizaLogger.warn( + `[Cleanup] File not found, starting removal process: ${filePath}` + ); + + const idToRemove = item.id; + elizaLogger.debug( + `[Cleanup] Using ID for removal: ${idToRemove}` + ); + + try { + // Just remove the parent document - this will cascade to chunks + await this.removeKnowledge(idToRemove); + + // // Clean up the cache + // const baseCacheKeyWithWildcard = `${this.generateKnowledgeCacheKeyBase( + // idToRemove, + // item.content.metadata?.isShared || false + // )}*`; + // await this.cacheManager.deleteByPattern({ + // keyPattern: baseCacheKeyWithWildcard, + // }); + + elizaLogger.success( + `[Cleanup] Successfully removed knowledge for file: ${filePath}` + ); + } catch (deleteError) { + elizaLogger.error( + `[Cleanup] Error during deletion process for ${filePath}:`, + deleteError instanceof Error + ? { + message: deleteError.message, + stack: deleteError.stack, + name: deleteError.name, + } + : deleteError + ); + } + } + } + + elizaLogger.debug("[Cleanup] Finished knowledge cleanup process"); + } catch (error) { + elizaLogger.error( + "[Cleanup] Error cleaning up deleted knowledge files:", + error + ); + } + } + + public generateScopedId(path: string, isShared: boolean): UUID { + // Prefix the path with scope before generating UUID to ensure different IDs for shared vs private + const scope = isShared ? KnowledgeScope.SHARED : KnowledgeScope.PRIVATE; + const scopedPath = `${scope}-${path}`; + return stringToUuid(scopedPath); + } + async processFile(file: { path: string; content: string; @@ -375,6 +510,12 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { `[File Progress] Starting ${file.path} (${fileSizeKB.toFixed(2)} KB)` ); + // Generate scoped ID for the file + const scopedId = this.generateScopedId( + file.path, + file.isShared || false + ); + // Step 1: Preprocessing //const preprocessStart = Date.now(); const processedContent = this.preprocess(content); @@ -390,7 +531,7 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { // Step 3: Create main document await this.runtime.databaseAdapter.createKnowledge({ - id: stringToUuid(file.path), + id: scopedId, agentId: this.runtime.agentId, content: { text: content, @@ -431,7 +572,7 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { await Promise.all( embeddings.map(async (embeddingArray, index) => { const chunkId = - `${stringToUuid(file.path)}-chunk-${i + index}` as UUID; + `${scopedId}-chunk-${i + index}` as UUID; const chunkEmbedding = new Float32Array(embeddingArray); await this.runtime.databaseAdapter.createKnowledge({ @@ -444,8 +585,9 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { type: file.type, isShared: file.isShared || false, isChunk: true, - originalId: stringToUuid(file.path), + originalId: scopedId, chunkIndex: i + index, + originalPath: file.path, }, }, embedding: chunkEmbedding, @@ -457,7 +599,7 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { processedChunks += batch.length; const batchTime = (Date.now() - batchStart) / 1000; elizaLogger.info( - `[Batch Progress] Processed ${processedChunks}/${totalChunks} chunks (${batchTime.toFixed(2)}s for batch)` + `[Batch Progress] ${file.path}: Processed ${processedChunks}/${totalChunks} chunks (${batchTime.toFixed(2)}s for batch)` ); } diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 646dc2b0ed32..80f7987747bd 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -37,7 +37,7 @@ import { IRAGKnowledgeManager, IVerifiableInferenceAdapter, KnowledgeItem, - //RAGKnowledgeItem, + // RAGKnowledgeItem, //Media, ModelClass, ModelProviderName, @@ -51,13 +51,25 @@ import { type Actor, type Evaluator, type Memory, + DirectoryItem, } from "./types.ts"; import { stringToUuid } from "./uuid.ts"; - +import { glob } from "glob"; +import { existsSync } from "fs"; /** * Represents the runtime environment for an agent, handling message processing, * action registration, and interaction with external services like OpenAI and Supabase. */ + +function isDirectoryItem(item: any): item is DirectoryItem { + return ( + typeof item === "object" && + item !== null && + "directory" in item && + typeof item.directory === "string" + ); +} + export class AgentRuntime implements IAgentRuntime { /** * Default count for recent messages to be kept in memory. @@ -153,6 +165,8 @@ export class AgentRuntime implements IAgentRuntime { ragKnowledgeManager: IRAGKnowledgeManager; + private readonly knowledgeRoot: string; + services: Map = new Map(); memoryManagers: Map = new Map(); cacheManager: ICacheManager; @@ -249,6 +263,22 @@ export class AgentRuntime implements IAgentRuntime { characterModelProvider: opts.character?.modelProvider, }); + elizaLogger.debug( + `[AgentRuntime] Process working directory: ${process.cwd()}` + ); + + // Define the root path once + this.knowledgeRoot = join( + process.cwd(), + "..", + "characters", + "knowledge" + ); + + elizaLogger.debug( + `[AgentRuntime] Process knowledgeRoot: ${this.knowledgeRoot}` + ); + this.#conversationLength = opts.conversationLength ?? this.#conversationLength; @@ -309,6 +339,7 @@ export class AgentRuntime implements IAgentRuntime { this.ragKnowledgeManager = new RAGKnowledgeManager({ runtime: this, tableName: "knowledge", + knowledgeRoot: this.knowledgeRoot, }); (opts.managers ?? []).forEach((manager: IMemoryManager) => { @@ -349,9 +380,9 @@ export class AgentRuntime implements IAgentRuntime { this.imageVisionModelProvider = this.character.imageVisionModelProvider ?? this.modelProvider; - elizaLogger.info("Selected model provider:", this.modelProvider); + // elizaLogger.info("Selected model provider:", this.modelProvider); duplicated log ln: 343 elizaLogger.info( - "Selected image model provider:", + "Selected image vision model provider:", this.imageVisionModelProvider ); @@ -438,17 +469,90 @@ export class AgentRuntime implements IAgentRuntime { this.character.knowledge && this.character.knowledge.length > 0 ) { + elizaLogger.info( + `[RAG Check] RAG Knowledge enabled: ${this.character.settings.ragKnowledge}` + ); + elizaLogger.info( + `[RAG Check] Knowledge items:`, + this.character.knowledge + ); + if (this.character.settings.ragKnowledge) { - await this.processCharacterRAGKnowledge( - this.character.knowledge + // Type guards with logging for each knowledge type + const [directoryKnowledge, pathKnowledge, stringKnowledge] = + this.character.knowledge.reduce( + (acc, item) => { + if (typeof item === "object") { + if (isDirectoryItem(item)) { + elizaLogger.debug( + `[RAG Filter] Found directory item: ${JSON.stringify(item)}` + ); + acc[0].push(item); + } else if ("path" in item) { + elizaLogger.debug( + `[RAG Filter] Found path item: ${JSON.stringify(item)}` + ); + acc[1].push(item); + } + } else if (typeof item === "string") { + elizaLogger.debug( + `[RAG Filter] Found string item: ${item.slice(0, 100)}...` + ); + acc[2].push(item); + } + return acc; + }, + [[], [], []] as [ + Array<{ directory: string; shared?: boolean }>, + Array<{ path: string; shared?: boolean }>, + Array, + ] + ); + + elizaLogger.info( + `[RAG Summary] Found ${directoryKnowledge.length} directories, ${pathKnowledge.length} paths, and ${stringKnowledge.length} strings` ); + + // Process each type of knowledge + if (directoryKnowledge.length > 0) { + elizaLogger.info( + `[RAG Process] Processing directory knowledge sources:` + ); + for (const dir of directoryKnowledge) { + elizaLogger.info( + ` - Directory: ${dir.directory} (shared: ${!!dir.shared})` + ); + await this.processCharacterRAGDirectory(dir); + } + } + + if (pathKnowledge.length > 0) { + elizaLogger.info( + `[RAG Process] Processing individual file knowledge sources` + ); + await this.processCharacterRAGKnowledge(pathKnowledge); + } + + if (stringKnowledge.length > 0) { + elizaLogger.info( + `[RAG Process] Processing direct string knowledge` + ); + await this.processCharacterKnowledge(stringKnowledge); + } } else { + // Non-RAG mode: only process string knowledge const stringKnowledge = this.character.knowledge.filter( (item): item is string => typeof item === "string" ); - await this.processCharacterKnowledge(stringKnowledge); } + + // After all new knowledge is processed, clean up any deleted files + elizaLogger.info( + `[RAG Cleanup] Starting cleanup of deleted knowledge files` + ); + await this.ragKnowledgeManager.cleanupDeletedKnowledgeFiles(); + elizaLogger.info(`[RAG Cleanup] Cleanup complete`); } } @@ -546,13 +650,7 @@ export class AgentRuntime implements IAgentRuntime { ["md", "txt", "pdf"].includes(fileExtension) ) { try { - const rootPath = join(process.cwd(), ".."); - const filePath = join( - rootPath, - "characters", - "knowledge", - contentItem - ); + const filePath = join(this.knowledgeRoot, contentItem); elizaLogger.info( "Attempting to read file from:", filePath @@ -667,6 +765,115 @@ export class AgentRuntime implements IAgentRuntime { } } + /** + * Processes directory-based RAG knowledge by recursively loading and processing files. + * @param dirConfig The directory configuration containing path and shared flag + */ + private async processCharacterRAGDirectory(dirConfig: { + directory: string; + shared?: boolean; + }) { + if (!dirConfig.directory) { + elizaLogger.error("[RAG Directory] No directory specified"); + return; + } + + // Sanitize directory path to prevent traversal attacks + const sanitizedDir = dirConfig.directory.replace(/\.\./g, ""); + const dirPath = join(this.knowledgeRoot, sanitizedDir); + + try { + // Check if directory exists + const dirExists = existsSync(dirPath); + if (!dirExists) { + elizaLogger.error( + `[RAG Directory] Directory does not exist: ${sanitizedDir}` + ); + return; + } + + elizaLogger.debug(`[RAG Directory] Searching in: ${dirPath}`); + // Use glob to find all matching files in directory + const files = await glob("**/*.{md,txt,pdf}", { + cwd: dirPath, + nodir: true, + absolute: false, + }); + + if (files.length === 0) { + elizaLogger.warn( + `No matching files found in directory: ${dirConfig.directory}` + ); + return; + } + + elizaLogger.info( + `[RAG Directory] Found ${files.length} files in ${dirConfig.directory}` + ); + + // Process files in batches to avoid memory issues + const BATCH_SIZE = 5; + for (let i = 0; i < files.length; i += BATCH_SIZE) { + const batch = files.slice(i, i + BATCH_SIZE); + + await Promise.all( + batch.map(async (file) => { + try { + const relativePath = join(sanitizedDir, file); + + elizaLogger.debug( + `[RAG Directory] Processing file ${i + 1}/${files.length}:`, + { + file, + relativePath, + shared: dirConfig.shared, + } + ); + + await this.processCharacterRAGKnowledge([ + { + path: relativePath, + shared: dirConfig.shared, + }, + ]); + } catch (error) { + elizaLogger.error( + `[RAG Directory] Failed to process file: ${file}`, + error instanceof Error + ? { + name: error.name, + message: error.message, + stack: error.stack, + } + : error + ); + } + }) + ); + + elizaLogger.debug( + `[RAG Directory] Completed batch ${Math.min(i + BATCH_SIZE, files.length)}/${files.length} files` + ); + } + + elizaLogger.success( + `[RAG Directory] Successfully processed directory: ${sanitizedDir}` + ); + } catch (error) { + elizaLogger.error( + `[RAG Directory] Failed to process directory: ${sanitizedDir}`, + error instanceof Error + ? { + name: error.name, + message: error.message, + stack: error.stack, + } + : error + ); + throw error; // Re-throw to let caller handle it + } + } + getSetting(key: string) { // check if the key is in the character.settings.secrets object if (this.character.settings?.secrets?.[key]) { diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 3184f53f6605..e34da93d06b9 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -229,6 +229,7 @@ export type Models = { [ModelProviderName.LIVEPEER]: Model; [ModelProviderName.DEEPSEEK]: Model; [ModelProviderName.INFERA]: Model; + [ModelProviderName.ATOMA]: Model; }; /** @@ -262,8 +263,9 @@ export enum ModelProviderName { AKASH_CHAT_API = "akash_chat_api", LIVEPEER = "livepeer", LETZAI = "letzai", - DEEPSEEK="deepseek", - INFERA="infera" + DEEPSEEK = "deepseek", + INFERA = "infera", + ATOMA = "atoma", } /** @@ -649,6 +651,7 @@ export enum Clients { AUTO = "auto", SLACK = "slack", GITHUB = "github", + INSTAGRAM = "instagram", } export interface IAgentConfig { @@ -732,6 +735,9 @@ export type Character = { twitterPostTemplate?: TemplateType; twitterMessageHandlerTemplate?: TemplateType; twitterShouldRespondTemplate?: TemplateType; + instagramPostTemplate?: TemplateType; + instagramMessageHandlerTemplate?: TemplateType; + instagramShouldRespondTemplate?: TemplateType; farcasterPostTemplate?: TemplateType; lensPostTemplate?: TemplateType; farcasterMessageHandlerTemplate?: TemplateType; @@ -782,6 +788,7 @@ export type Character = { steps?: number; width?: number; height?: number; + cfgScale?: number; negativePrompt?: string; numIterations?: number; guidanceScale?: number; @@ -791,6 +798,7 @@ export type Character = { count?: number; stylePreset?: string; hideWatermark?: boolean; + safeMode?: boolean; }; voice?: { model?: string; // For VITS @@ -869,10 +877,20 @@ export type Character = { bio: string; nicknames?: string[]; }; + + /** Optional Instagram profile */ + instagramProfile?: { + id: string; + username: string; + bio: string; + nicknames?: string[]; + }; + /** Optional NFT prompt */ nft?: { prompt: string; }; + /**Optinal Parent characters to inherit information from */ extends?: string[]; }; @@ -909,6 +927,8 @@ export interface IDatabaseAdapter { getMemoryById(id: UUID): Promise; + getMemoriesByIds(ids: UUID[], tableName?: string): Promise; + getMemoriesByRoomIds(params: { tableName: string; agentId: UUID; @@ -1087,7 +1107,10 @@ export interface IMemoryManager { ): Promise<{ embedding: number[]; levenshtein_score: number }[]>; getMemoryById(id: UUID): Promise; - getMemoriesByRoomIds(params: { roomIds: UUID[], limit?: number }): Promise; + getMemoriesByRoomIds(params: { + roomIds: UUID[]; + limit?: number; + }): Promise; searchMemoriesByEmbedding( embedding: number[], opts: { @@ -1134,6 +1157,7 @@ export interface IRAGKnowledgeManager { type: "pdf" | "md" | "txt"; isShared: boolean; }): Promise; + cleanupDeletedKnowledgeFiles(): Promise; } export type CacheOptions = { @@ -1378,9 +1402,28 @@ export interface IrysTimestamp { } export interface IIrysService extends Service { - getDataFromAnAgent(agentsWalletPublicKeys: string[], tags: GraphQLTag[], timestamp: IrysTimestamp): Promise; - workerUploadDataOnIrys(data: any, dataType: IrysDataType, messageType: IrysMessageType, serviceCategory: string[], protocol: string[], validationThreshold: number[], minimumProviders: number[], testProvider: boolean[], reputation: number[]): Promise; - providerUploadDataOnIrys(data: any, dataType: IrysDataType, serviceCategory: string[], protocol: string[]): Promise; + getDataFromAnAgent( + agentsWalletPublicKeys: string[], + tags: GraphQLTag[], + timestamp: IrysTimestamp + ): Promise; + workerUploadDataOnIrys( + data: any, + dataType: IrysDataType, + messageType: IrysMessageType, + serviceCategory: string[], + protocol: string[], + validationThreshold: number[], + minimumProviders: number[], + testProvider: boolean[], + reputation: number[] + ): Promise; + providerUploadDataOnIrys( + data: any, + dataType: IrysDataType, + serviceCategory: string[], + protocol: string[] + ): Promise; } export interface ITeeLogService extends Service { @@ -1394,28 +1437,6 @@ export interface ITeeLogService extends Service { ): Promise; } -export type SearchImage = { - url: string; - description?: string; -}; - -export type SearchResult = { - title: string; - url: string; - content: string; - rawContent?: string; - score: number; - publishedDate?: string; -}; - -export type SearchResponse = { - answer?: string; - query: string; - responseTime: number; - images: SearchImage[]; - results: SearchResult[]; -}; - export enum ServiceType { IMAGE_DESCRIPTION = "image_description", TRANSCRIPTION = "transcription", @@ -1428,9 +1449,11 @@ export enum ServiceType { AWS_S3 = "aws_s3", BUTTPLUG = "buttplug", SLACK = "slack", + VERIFIABLE_LOGGING = "verifiable_logging", IRYS = "irys", TEE_LOG = "tee_log", GOPLUS_SECURITY = "goplus_security", + WEB_SEARCH = "web_search", } export enum LoggingLevel { @@ -1555,3 +1578,22 @@ export enum ActionTimelineType { ForYou = "foryou", Following = "following", } + +export enum KnowledgeScope { + SHARED = "shared", + PRIVATE = "private", +} + +export enum CacheKeyPrefix { + KNOWLEDGE = "knowledge", +} + +export interface DirectoryItem { + directory: string; + shared?: boolean; +} + +export interface ChunkRow { + id: string; + // Add other properties if needed +} diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts index 234178fcd5aa..1b939af9a8b4 100644 --- a/packages/core/tsup.config.ts +++ b/packages/core/tsup.config.ts @@ -18,7 +18,6 @@ export default defineConfig({ "http", "https", // Add other modules you want to externalize - "@tavily/core", "onnxruntime-node", "sharp", ], diff --git a/packages/create-eliza-app/package.json b/packages/create-eliza-app/package.json index 5b4bf39fbf6e..368af499df27 100644 --- a/packages/create-eliza-app/package.json +++ b/packages/create-eliza-app/package.json @@ -1,6 +1,6 @@ { "name": "create-eliza-app", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "", "sideEffects": false, "files": [ diff --git a/packages/plugin-0g/package.json b/packages/plugin-0g/package.json index 13d3579cd50a..c733f78aeb3b 100644 --- a/packages/plugin-0g/package.json +++ b/packages/plugin-0g/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-0g", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-3d-generation/package.json b/packages/plugin-3d-generation/package.json index 17bced909260..5ff3b0941f51 100644 --- a/packages/plugin-3d-generation/package.json +++ b/packages/plugin-3d-generation/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-3d-generation", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-abstract/package.json b/packages/plugin-abstract/package.json index 6ba15a41d87d..22b3dd61f080 100644 --- a/packages/plugin-abstract/package.json +++ b/packages/plugin-abstract/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-abstract", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", @@ -19,6 +19,7 @@ "dist" ], "dependencies": { + "@abstract-foundation/agw-client": "^0.1.7", "@elizaos/core": "workspace:*", "tsup": "^8.3.5", "viem": "2.22.2" diff --git a/packages/plugin-abstract/src/actions/transferAction.ts b/packages/plugin-abstract/src/actions/transferAction.ts index d5f81bb08614..3ea3141f2a07 100644 --- a/packages/plugin-abstract/src/actions/transferAction.ts +++ b/packages/plugin-abstract/src/actions/transferAction.ts @@ -15,7 +15,6 @@ import { validateAbstractConfig } from "../environment"; import { Address, - createWalletClient, erc20Abi, http, parseEther, @@ -25,6 +24,7 @@ import { } from "viem"; import { abstractTestnet, mainnet } from "viem/chains"; import { normalize } from "viem/ens"; +import { createAbstractClient } from "@abstract-foundation/agw-client"; import { z } from "zod"; import { ValidateContext } from "../utils"; import { ETH_ADDRESS, ERC20_OVERRIDE_INFO } from "../constants"; @@ -39,12 +39,14 @@ const TransferSchema = z.object({ tokenAddress: z.string(), recipient: z.string(), amount: z.string(), + useAGW: z.boolean(), }); export interface TransferContent extends Content { tokenAddress: string; recipient: string; amount: string | number; + useAGW: boolean; } const transferTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. @@ -58,16 +60,21 @@ Example response: { "tokenAddress": "0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E", "recipient": "0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62", - "amount": "1000" + "amount": "1000", + "useAGW": true } \`\`\` -{{recentMessages}} +User message: +"{{currentMessage}}" -Given the recent messages, extract the following information about the requested token transfer: +Given the message, extract the following information about the requested token transfer: - Token contract address - Recipient wallet address - Amount to transfer +- Whether to use Abstract Global Wallet aka AGW + +If the user did not specify "global wallet", "AGW", "agw", or "abstract global wallet" in their message, set useAGW to false, otherwise set it to true. Respond with a JSON markdown block containing only the extracted values.`; @@ -104,6 +111,7 @@ export const transferAction: Action = { } // Compose transfer context + state.currentMessage = `${state.recentMessagesData[1].content.text}`; const transferContext = composeContext({ state, template: transferTemplate, @@ -138,7 +146,7 @@ export const transferAction: Action = { // Validate transfer content if (!ValidateContext.transferAction(content)) { - console.error("Invalid content for TRANSFER_TOKEN action."); + elizaLogger.error("Invalid content for TRANSFER_TOKEN action."); if (callback) { callback({ text: "Unable to process transfer request. Invalid content provided.", @@ -150,40 +158,76 @@ export const transferAction: Action = { try { const account = useGetAccount(runtime); - const walletClient = useGetWalletClient(); - let hash; - - // Check if the token is native - if ( - content.tokenAddress.toLowerCase() !== ETH_ADDRESS.toLowerCase() - ) { - // Convert amount to proper token decimals - const tokenInfo = - ERC20_OVERRIDE_INFO[content.tokenAddress.toLowerCase()]; - const decimals = tokenInfo?.decimals ?? 18; // Default to 18 decimals if not specified - const tokenAmount = parseUnits( - content.amount.toString(), - decimals - ); - - // Execute ERC20 transfer - hash = await walletClient.writeContract({ - account, + if (content.useAGW) { + const abstractClient = await createAbstractClient({ chain: abstractTestnet, - address: content.tokenAddress as Address, - abi: erc20Abi, - functionName: "transfer", - args: [content.recipient as Address, tokenAmount], + signer: account, }); + + // Handle AGW transfer based on token type + if ( + content.tokenAddress.toLowerCase() !== + ETH_ADDRESS.toLowerCase() + ) { + const tokenInfo = + ERC20_OVERRIDE_INFO[content.tokenAddress.toLowerCase()]; + const decimals = tokenInfo?.decimals ?? 18; + const tokenAmount = parseUnits( + content.amount.toString(), + decimals + ); + + // @ts-ignore - will fix later + hash = await abstractClient.writeContract({ + chain: abstractTestnet, + address: content.tokenAddress as Address, + abi: erc20Abi, + functionName: "transfer", + args: [content.recipient as Address, tokenAmount], + }); + } else { + // @ts-ignore + hash = await abstractClient.sendTransaction({ + chain: abstractTestnet, + to: content.recipient as Address, + value: parseEther(content.amount.toString()), + kzg: undefined, + }); + } } else { - hash = await walletClient.sendTransaction({ - account: account, - chain: abstractTestnet, - to: content.recipient as Address, - value: parseEther(content.amount.toString()), - kzg: undefined, - }); + const walletClient = useGetWalletClient(); + + // Handle regular wallet transfer based on token type + if ( + content.tokenAddress.toLowerCase() !== + ETH_ADDRESS.toLowerCase() + ) { + const tokenInfo = + ERC20_OVERRIDE_INFO[content.tokenAddress.toLowerCase()]; + const decimals = tokenInfo?.decimals ?? 18; + const tokenAmount = parseUnits( + content.amount.toString(), + decimals + ); + + hash = await walletClient.writeContract({ + account, + chain: abstractTestnet, + address: content.tokenAddress as Address, + abi: erc20Abi, + functionName: "transfer", + args: [content.recipient as Address, tokenAmount], + }); + } else { + hash = await walletClient.sendTransaction({ + account, + chain: abstractTestnet, + to: content.recipient as Address, + value: parseEther(content.amount.toString()), + kzg: undefined, + }); + } } elizaLogger.success( @@ -233,6 +277,27 @@ export const transferAction: Action = { }, }, ], + [ + { + user: "{{user1}}", + content: { + text: "Send 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4 using your abstract global wallet", + }, + }, + { + user: "{{agent}}", + content: { + text: "Sure, I'll send 0.01 ETH to that address now using my AGW.", + action: "SEND_TOKEN", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully sent 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4\nTransaction: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b using my AGW", + }, + }, + ], [ { user: "{{user1}}", diff --git a/packages/plugin-agentkit/README.md b/packages/plugin-agentkit/README.md new file mode 100644 index 000000000000..dfd2499a9dce --- /dev/null +++ b/packages/plugin-agentkit/README.md @@ -0,0 +1,123 @@ +# @elizaos/plugin-agentkit + +AgentKit plugin for Eliza that enables interaction with CDP AgentKit tools for NFT and token management. + +## Setup + +1. Install dependencies: + +```bash +pnpm install +``` + +2. Configure environment variables: + +```env +CDP_API_KEY_NAME=your_key_name +CDP_API_KEY_PRIVATE_KEY=your_private_key +``` + +3. Add the plugin to your character configuration: + +```json +{ + "plugins": ["@ai16z/plugin-agentkit"], + "settings": { + "secrets": { + "CDP_API_KEY_NAME": "your_key_name", + "CDP_API_KEY_PRIVATE_KEY": "your_private_key", + "networkId": "base-sepolia" + } + } +} +``` + +## Available Tools + +The plugin provides access to the following CDP AgentKit tools: + +- `GET_WALLET_DETAILS`: Get wallet information +- `DEPLOY_NFT`: Deploy a new NFT collection +- `DEPLOY_TOKEN`: Deploy a new token +- `GET_BALANCE`: Check token or NFT balance +- `MINT_NFT`: Mint NFTs from a collection +- `REGISTER_BASENAME`: Register a basename for NFTs +- `REQUEST_FAUCET_FUNDS`: Request testnet funds +- `TRADE`: Execute trades +- `TRANSFER`: Transfer tokens or NFTs +- `WOW_BUY_TOKEN`: Buy WOW tokens +- `WOW_SELL_TOKEN`: Sell WOW tokens +- `WOW_CREATE_TOKEN`: Create new WOW tokens + +## Usage Examples + +1. Get wallet details: + +``` +Can you show me my wallet details? +``` + +2. Deploy an NFT collection: + +``` +Deploy a new NFT collection called "Music NFTs" with symbol "MUSIC" +``` + +3. Create a token: + +``` +Create a new WOW token called "Artist Token" with symbol "ART" +``` + +4. Check balance: + +``` +What's my current balance? +``` + +## Development + +1. Build the plugin: + +```bash +pnpm build +``` + +2. Run in development mode: + +```bash +pnpm dev +``` + +## Dependencies + +- @elizaos/core +- @coinbase/cdp-agentkit-core +- @coinbase/cdp-langchain +- @langchain/core + +## Network Support + +The plugin currently supports the following networks: + +- Base Sepolia (default) +- Base Mainnet + +Configure the network using the `networkId` setting in your character configuration. + +## Troubleshooting + +1. If tools are not being triggered: + + - Verify CDP API key configuration + - Check network settings + - Ensure character configuration includes the plugin + +2. Common errors: + - "Cannot find package": Make sure dependencies are installed + - "API key not found": Check environment variables + - "Network error": Verify network configuration + +## License + +MIT diff --git a/packages/plugin-agentkit/package.json b/packages/plugin-agentkit/package.json new file mode 100644 index 000000000000..212617b58a1a --- /dev/null +++ b/packages/plugin-agentkit/package.json @@ -0,0 +1,18 @@ +{ + "name": "@elizaos/plugin-agentkit", + "version": "0.0.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@coinbase/cdp-agentkit-core": "^0.0.10", + "@coinbase/cdp-langchain": "^0.0.11", + "@langchain/core": "^0.3.27", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } +} diff --git a/packages/plugin-agentkit/src/actions.ts b/packages/plugin-agentkit/src/actions.ts new file mode 100644 index 000000000000..5d1c721c93aa --- /dev/null +++ b/packages/plugin-agentkit/src/actions.ts @@ -0,0 +1,178 @@ +import { + type Action, + generateText, + type HandlerCallback, + type IAgentRuntime, + type Memory, + ModelClass, + type State, + composeContext, + generateObject, +} from "@elizaos/core"; +import { CdpAgentkit } from "@coinbase/cdp-agentkit-core"; +import { CdpToolkit, type Tool } from "@coinbase/cdp-langchain"; + +type GetAgentKitActionsParams = { + getClient: () => Promise; + config?: { + networkId?: string; + }; +}; + +/** + * Get all AgentKit actions + */ +export async function getAgentKitActions({ + getClient, +}: GetAgentKitActionsParams): Promise { + const agentkit = await getClient(); + const cdpToolkit = new CdpToolkit(agentkit); + const tools = cdpToolkit.getTools(); + const actions = tools.map((tool: Tool) => ({ + name: tool.name.toUpperCase(), + description: tool.description, + similes: [], + validate: async () => true, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State | undefined, + options?: Record, + callback?: HandlerCallback + ): Promise => { + try { + const client = await getClient(); + let currentState = + state ?? (await runtime.composeState(message)); + currentState = + await runtime.updateRecentMessageState(currentState); + + const parameterContext = composeParameterContext( + tool, + currentState + ); + const parameters = await generateParameters( + runtime, + parameterContext, + tool + ); + + const result = await executeToolAction( + tool, + parameters, + client + ); + + const responseContext = composeResponseContext( + tool, + result, + currentState + ); + const response = await generateResponse( + runtime, + responseContext + ); + + callback?.({ text: response, content: result }); + return true; + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error); + callback?.({ + text: `Error executing action ${tool.name}: ${errorMessage}`, + content: { error: errorMessage }, + }); + return false; + } + }, + examples: [], + })); + return actions; +} + +async function executeToolAction( + tool: Tool, + parameters: any, + client: CdpAgentkit +): Promise { + const toolkit = new CdpToolkit(client); + const tools = toolkit.getTools(); + const selectedTool = tools.find((t) => t.name === tool.name); + + if (!selectedTool) { + throw new Error(`Tool ${tool.name} not found`); + } + + return await selectedTool.call(parameters); +} + +function composeParameterContext(tool: any, state: State): string { + const contextTemplate = `{{recentMessages}} + +Given the recent messages, extract the following information for the action "${tool.name}": +${tool.description} +`; + return composeContext({ state, template: contextTemplate }); +} + +async function generateParameters( + runtime: IAgentRuntime, + context: string, + tool: Tool +): Promise { + const { object } = await generateObject({ + runtime, + context, + modelClass: ModelClass.LARGE, + schema: tool.schema, + }); + + return object; +} + +function composeResponseContext( + tool: Tool, + result: unknown, + state: State +): string { + const responseTemplate = ` +# Action Examples +{{actionExamples}} + +# Knowledge +{{knowledge}} + +# Task: Generate dialog and actions for the character {{agentName}}. +About {{agentName}}: +{{bio}} +{{lore}} + +{{providers}} + +{{attachments}} + +# Capabilities +Note that {{agentName}} is capable of reading/seeing/hearing various forms of media, including images, videos, audio, plaintext and PDFs. Recent attachments have been included above under the "Attachments" section. + +The action "${tool.name}" was executed successfully. +Here is the result: +${JSON.stringify(result)} + +{{actions}} + +Respond to the message knowing that the action was successful and these were the previous messages: +{{recentMessages}} +`; + return composeContext({ state, template: responseTemplate }); +} + +async function generateResponse( + runtime: IAgentRuntime, + context: string +): Promise { + return generateText({ + runtime, + context, + modelClass: ModelClass.LARGE, + }); +} diff --git a/packages/plugin-agentkit/src/index.ts b/packages/plugin-agentkit/src/index.ts new file mode 100644 index 000000000000..3901617b32b6 --- /dev/null +++ b/packages/plugin-agentkit/src/index.ts @@ -0,0 +1,16 @@ +import type { Plugin } from "@elizaos/core"; +import { walletProvider, getClient } from "./provider"; +import { getAgentKitActions } from "./actions"; + +export const agentKitPlugin: Plugin = { + name: "[AgentKit] Integration", + description: "AgentKit integration plugin", + providers: [walletProvider], + evaluators: [], + services: [], + actions: await getAgentKitActions({ + getClient, + }), +}; + +export default agentKitPlugin; diff --git a/packages/plugin-agentkit/src/provider.ts b/packages/plugin-agentkit/src/provider.ts new file mode 100644 index 000000000000..685469b09edd --- /dev/null +++ b/packages/plugin-agentkit/src/provider.ts @@ -0,0 +1,49 @@ +import { type Provider, type IAgentRuntime } from "@elizaos/core"; +import { CdpAgentkit } from "@coinbase/cdp-agentkit-core"; +import * as fs from "fs"; + +const WALLET_DATA_FILE = "wallet_data.txt"; + +export async function getClient( + networkId: string = "base-sepolia" +): Promise { + let walletDataStr: string | null = null; + + // Read existing wallet data if available + if (fs.existsSync(WALLET_DATA_FILE)) { + try { + walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); + } catch (error) { + console.error("Error reading wallet data:", error); + // Continue without wallet data + } + } + + // Configure CDP AgentKit + const config = { + cdpWalletData: walletDataStr || undefined, + networkId, + }; + + const agentkit = await CdpAgentkit.configureWithWallet(config); + // Save wallet data + const exportedWallet = await agentkit.exportWallet(); + fs.writeFileSync(WALLET_DATA_FILE, exportedWallet); + + return agentkit; +} + +export const walletProvider: Provider = { + async get(runtime: IAgentRuntime): Promise { + try { + const client = await getClient( + runtime.getSetting("COINBASE_AGENT_KIT_NETWORK") + ); + const address = (await (client as any).wallet.addresses)[0].id; + return `AgentKit Wallet Address: ${address}`; + } catch (error) { + console.error("Error in AgentKit provider:", error); + return null; + } + }, +}; diff --git a/packages/plugin-agentkit/tsconfig.json b/packages/plugin-agentkit/tsconfig.json new file mode 100644 index 000000000000..f642a90aee14 --- /dev/null +++ b/packages/plugin-agentkit/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "./src", + "declaration": true + }, + "include": ["src"] +} diff --git a/packages/plugin-agentkit/tsup.config.ts b/packages/plugin-agentkit/tsup.config.ts new file mode 100644 index 000000000000..a68ccd636adf --- /dev/null +++ b/packages/plugin-agentkit/tsup.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "viem", + "@lifi/sdk", + ], +}); diff --git a/packages/plugin-akash/package.json b/packages/plugin-akash/package.json index 88a1244876fd..e47a12b7538e 100644 --- a/packages/plugin-akash/package.json +++ b/packages/plugin-akash/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-akash", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "Akash Network Plugin for Eliza", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/plugin-allora/package.json b/packages/plugin-allora/package.json index 969d14668e87..287794d035a5 100644 --- a/packages/plugin-allora/package.json +++ b/packages/plugin-allora/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-allora", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-anyone/package.json b/packages/plugin-anyone/package.json index a829629324bb..132ba2b94cda 100644 --- a/packages/plugin-anyone/package.json +++ b/packages/plugin-anyone/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-anyone", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-aptos/package.json b/packages/plugin-aptos/package.json index abd65d16eb0b..f0c0115a1652 100644 --- a/packages/plugin-aptos/package.json +++ b/packages/plugin-aptos/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-aptos", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-arthera/package.json b/packages/plugin-arthera/package.json index 95fe3f5557ed..bd0abe44c79a 100644 --- a/packages/plugin-arthera/package.json +++ b/packages/plugin-arthera/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-arthera", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-asterai/package.json b/packages/plugin-asterai/package.json index 9ddcc805eabf..27425ae808c0 100644 --- a/packages/plugin-asterai/package.json +++ b/packages/plugin-asterai/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-asterai", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-autonome/package.json b/packages/plugin-autonome/package.json index 97e01cf663ca..c0af90d4d771 100644 --- a/packages/plugin-autonome/package.json +++ b/packages/plugin-autonome/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-autonome", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-avalanche/package.json b/packages/plugin-avalanche/package.json index 8d06db570374..f614a99e79ba 100644 --- a/packages/plugin-avalanche/package.json +++ b/packages/plugin-avalanche/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-avalanche", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-b2/.npmignore b/packages/plugin-b2/.npmignore new file mode 100644 index 000000000000..078562eceabb --- /dev/null +++ b/packages/plugin-b2/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-b2/README.md b/packages/plugin-b2/README.md new file mode 100644 index 000000000000..1e5ba623cabf --- /dev/null +++ b/packages/plugin-b2/README.md @@ -0,0 +1,169 @@ +# @elizaos/plugin-b2 + +A plugin for interacting with the B2-Network within the ElizaOS ecosystem. + +## Description + +The B2 Network Plugin offers a set of features that can be integrated into the Eliza platform to enhance its capabilities. This plugin enables seamless token transfers on the B2-Network. It provides functionality to transfer both native B2-BTC and ERC20 tokens using secure wallet operations. + +## Installation + +```bash +pnpm install @elizaos/plugin-b2 +``` + +## Configuration + +The plugin requires the following environment variable: + +```typescript +B2_PRIVATE_KEY= +``` + +## Features + +### 1. Token Transfers + +- Send native B2-BTC and ERC20 tokens +- Support for multiple token standards +- Built-in address validation + +## Supported Tokens + +```typescript +const TOKENS = { + "B2-BTC": "0x0000000000000000000000000000000000000000", + uBTC: "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2", + USDC: "0xE544e8a38aDD9B1ABF21922090445Ba93f74B9E5", + USDT: "0x681202351a488040Fa4FdCc24188AfB582c9DD62", + // ... and more +}; +``` + +## Usage Examples + +### Token Transfer + +```typescript +// Send B2-BTC +"Send 1 B2-BTC to 0x4f9e2dc50B4Cd632CC2D24edaBa3Da2a9338832a"; + +// Send ERC20 +"Transfer 100 USDC to [address]"; +``` + +## Providers + +### 1. Wallet Provider + +- Displays wallet balances +- Real-time balance updates + +### 2. Tokens Provider + +- Lists supported tokens +- Shows token addresses + +## Development + +1. Clone the repository +2. Install dependencies: +3. Build the plugin: + +```bash +pnpm run build +``` + +4. Run linting: + +```bash +pnpm run lint +``` + +## Dependencies + +- viem: ^2.21.49 +- @elizaos/core: workspace:\* + +## Future Enhancements + +1. **Advanced DeFi Operations** + + - Multi-hop yield strategies + - Auto-compounding features + - Yield optimization algorithms + - Risk assessment tools + - Portfolio rebalancing automation + - Cross-chain yield farming + +2. **Enhanced Token Management** + + - Batch token operations + - Advanced token creation templates + - Token migration tools + - Automated token listing + - Token analytics dashboard + - Custom tokenomics implementation + +3. **YAK Protocol Integration** + + - Advanced routing algorithms + - MEV protection features + - Gas optimization strategies + - Liquidity analysis tools + - Price impact predictions + - Custom trading strategies + +4. **Benqi Protocol Features** + + - Collateral optimization + - Liquidation protection + - Interest rate monitoring + - Position management tools + - Risk assessment dashboard + - Auto-repayment features + +5. **Token Mill Improvements** + + - Advanced token customization + - Automated market making + - Token distribution tools + - Vesting schedule management + - Governance token features + - Token upgrade mechanisms + +6. **Security Enhancements** + + - Transaction simulation + - Smart contract auditing tools + - Real-time monitoring + - Automated safety checks + - Emergency shutdown features + - Multi-signature support + +7. **Developer Tools** + + - Enhanced debugging capabilities + - Testing framework improvements + - Documentation generator + - CLI tools for common operations + - Integration templates + - Performance monitoring + +8. **Analytics and Reporting** + - Portfolio tracking + - Performance metrics + - Gas usage optimization + - Transaction history analysis + - Yield comparison tools + - Risk assessment reports + +We welcome community feedback and contributions to help prioritize these enhancements. + +## Contributing + +Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information. + +## License + +This plugin is part of the Eliza project. See the main project repository for license information. diff --git a/packages/plugin-b2/eslint.config.mjs b/packages/plugin-b2/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-b2/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-b2/package.json b/packages/plugin-b2/package.json new file mode 100644 index 000000000000..915c4034ddaa --- /dev/null +++ b/packages/plugin-b2/package.json @@ -0,0 +1,37 @@ +{ + "name": "@elizaos/plugin-b2", + "version": "0.1.9-alpha.1", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "@elizaos/source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "files": [ + "dist" + ], + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup src/index.ts --format esm --no-dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "vitest run" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-b2/src/actions/stake.ts b/packages/plugin-b2/src/actions/stake.ts new file mode 100644 index 000000000000..7fc543fa8cab --- /dev/null +++ b/packages/plugin-b2/src/actions/stake.ts @@ -0,0 +1,147 @@ +import { + Action, + ActionExample, + IAgentRuntime, + generateObjectDeprecated, + Memory, + State, + HandlerCallback, + elizaLogger, + composeContext, + ModelClass, +} from "@elizaos/core"; +import { getTxReceipt, depositBTC } from "../utils"; +import { Hash } from "viem"; +import { validateB2NetworkConfig } from "../environment"; +import { stakeTemplate } from "../templates"; +import { WalletProvider } from "../providers"; +import { StakeParams } from "../types"; +import { initWalletProvider } from "../providers"; +import { FARM_ADDRESS } from "../utils/constants"; + +// Exported for tests +export class StakeAction { + + constructor(private walletProvider: WalletProvider) {} + + async stake(params: StakeParams): Promise { + try { + const balance = await this.walletProvider.getNativeBalance(this.walletProvider.getAddress()); + if ( balance == BigInt(0) ) { + throw new Error(`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`); + } + const txHash = await depositBTC( + this.walletProvider, + FARM_ADDRESS, + params.amount, + ); + return txHash; + } catch(error) { + elizaLogger.error(`Stake failed: ${error.message}`); + throw new Error(`Stake failed: ${error.message}`); + } + } + + async txReceipt(tx: Hash) { + const receipt = await getTxReceipt(this.walletProvider, tx); + if (receipt.status === "success") { + return true; + } else { + return false; + } + } + + async buildStakeDetails( + state: State, + runtime: IAgentRuntime, + ): Promise { + const context = composeContext({ + state, + template: stakeTemplate, + }); + + const stakeDetails = (await generateObjectDeprecated({ + runtime, + context, + modelClass: ModelClass.SMALL, + })) as StakeParams; + + return stakeDetails; + } +} + +export const stakeAction: Action = { + name: "STAKE", + similes: [ + "STAKE_BTC_ON_B2", + "STAKE_NATIVE_BTC_ON_B2", + "DEPOSIT_BTC_ON_B2", + "DEPOSIT_NATIVE_BTC_ON_B2", + ], + validate: async (runtime: IAgentRuntime, _message: Memory) => { + await validateB2NetworkConfig(runtime); + return true; + }, + description: + "stake B2-BTC.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.debug("Starting STAKE handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + elizaLogger.debug("stake action handler called"); + const walletProvider = await initWalletProvider(runtime); + const action = new StakeAction(walletProvider); + + // Compose stake context + const paramOptions = await action.buildStakeDetails( + state, + runtime, + ); + + elizaLogger.debug("Stake paramOptions:", paramOptions); + + const txHash = await action.stake(paramOptions); + if (txHash) { + const result = await action.txReceipt(txHash); + if (result) { + callback?.({ + text: "stake successful", + content: { success: true, txHash: txHash }, + }); + } else { + callback?.({ + text: "stake failed", + content: { error: "Stake failed" }, + }); + } + } else { + callback?.({ + text: "stake failed", + content: { error: "Stake failed" }, + }); + } + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Stake 1 B2-BTC", + }, + }, + ], + ] as ActionExample[][], +}; diff --git a/packages/plugin-b2/src/actions/transfer.ts b/packages/plugin-b2/src/actions/transfer.ts new file mode 100644 index 000000000000..52106bc8cc9d --- /dev/null +++ b/packages/plugin-b2/src/actions/transfer.ts @@ -0,0 +1,159 @@ +import { + Action, + ActionExample, + IAgentRuntime, + generateObjectDeprecated, + Memory, + State, + HandlerCallback, + elizaLogger, + composeContext, + ModelClass, +} from "@elizaos/core"; +import { getTxReceipt, sendNativeAsset, sendToken } from "../utils"; +import { Address, Hash } from "viem"; +import { validateB2NetworkConfig } from "../environment"; +import { transferTemplate } from "../templates"; +import { WalletProvider } from "../providers"; +import { Transaction, TransferParams } from "../types"; +import { initWalletProvider } from "../providers"; +import { TOKEN_ADDRESSES } from "../utils/constants" +// Exported for tests +export class TransferAction { + + constructor(private walletProvider: WalletProvider) {} + + async transfer(params: TransferParams): Promise { + try { + let txHash: Hash; + if (params.tokenAddress === TOKEN_ADDRESSES["B2-BTC"]) { + txHash = await sendNativeAsset( + this.walletProvider, + params.recipient as Address, + params.amount as number + ); + } else { + txHash = await sendToken( + this.walletProvider, + params.tokenAddress as Address, + params.recipient as Address, + params.amount as number + ); + } + return { + hash: txHash, + from: this.walletProvider.getAddress(), + tokenAddress: params.tokenAddress, + recipient: params.recipient, + amount: params.amount, + }; + } catch(error) { + elizaLogger.error(`Transfer failed: ${error.message}`); + throw new Error(`Transfer failed: ${error.message}`); + } + } + + async txReceipt(tx: Hash) { + const receipt = await getTxReceipt(this.walletProvider, tx); + if (receipt.status === "success") { + return true; + } else { + return false; + } + } + + async buildTransferDetails( + state: State, + runtime: IAgentRuntime, + ): Promise { + const context = composeContext({ + state, + template: transferTemplate, + }); + + const transferDetails = (await generateObjectDeprecated({ + runtime, + context, + modelClass: ModelClass.SMALL, + })) as TransferParams; + + return transferDetails; + } +} + +export const transferAction: Action = { + name: "SEND_TOKEN", + similes: [ + "TRANSFER_TOKEN_ON_B2", + "TRANSFER_TOKENS_ON_B2", + "SEND_TOKENS_ON_B2", + "SEND_B2BTC_ON_B2", + "PAY_ON_B2", + ], + validate: async (runtime: IAgentRuntime, _message: Memory) => { + await validateB2NetworkConfig(runtime); + return true; + }, + description: + "MUST use this action if the user requests send a token or transfer a token, the request might be varied, but it will always be a token transfer.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.debug("Starting SEND_TOKEN handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + elizaLogger.debug("Transfer action handler called"); + const walletProvider = await initWalletProvider(runtime); + const action = new TransferAction(walletProvider); + + // Compose transfer context + const paramOptions = await action.buildTransferDetails( + state, + runtime, + ); + + elizaLogger.debug("Transfer paramOptions:", paramOptions); + + const tx = await action.transfer(paramOptions); + if (tx) { + const result = await action.txReceipt(tx.hash); + if (result) { + callback?.({ + text: "transfer successful", + content: { success: true, txHash: tx.hash }, + }); + } else { + callback?.({ + text: "transfer failed", + content: { error: "Transfer failed" }, + }); + } + } else { + callback?.({ + text: "transfer failed", + content: { error: "Transfer failed" }, + }); + } + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Send 1 B2-BTC to 0x4f9e2dc50B4Cd632CC2D24edaBa3Da2a9338832a", + }, + }, + ], + ] as ActionExample[][], +}; diff --git a/packages/plugin-b2/src/actions/unstake.ts b/packages/plugin-b2/src/actions/unstake.ts new file mode 100644 index 000000000000..7e6f6fd58a00 --- /dev/null +++ b/packages/plugin-b2/src/actions/unstake.ts @@ -0,0 +1,147 @@ +import { + Action, + ActionExample, + IAgentRuntime, + generateObjectDeprecated, + Memory, + State, + HandlerCallback, + elizaLogger, + composeContext, + ModelClass, +} from "@elizaos/core"; +import { getTxReceipt, unstake } from "../utils"; +import { Hash } from "viem"; +import { validateB2NetworkConfig } from "../environment"; +import { unstakeTemplate } from "../templates"; +import { WalletProvider } from "../providers"; +import { UnstakeParams } from "../types"; +import { initWalletProvider } from "../providers"; +import { FARM_ADDRESS } from "../utils/constants"; + +// Exported for tests +export class UnstakeAction { + + constructor(private walletProvider: WalletProvider) {} + + async unstake(params: UnstakeParams): Promise { + try { + const balance = await this.walletProvider.getNativeBalance(this.walletProvider.getAddress()); + if ( balance == BigInt(0) ) { + throw new Error(`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`); + } + const txHash = await unstake( + this.walletProvider, + FARM_ADDRESS, + params.amount, + ); + return txHash; + } catch(error) { + elizaLogger.error(`Unstake failed: ${error.message}`); + throw new Error(`Unstake failed: ${error.message}`); + } + } + + async txReceipt(tx: Hash) { + const receipt = await getTxReceipt(this.walletProvider, tx); + if (receipt.status === "success") { + return true; + } else { + return false; + } + } + + async buildUnstakeDetails( + state: State, + runtime: IAgentRuntime, + ): Promise { + const context = composeContext({ + state, + template: unstakeTemplate, + }); + + const unstakeDetails = (await generateObjectDeprecated({ + runtime, + context, + modelClass: ModelClass.SMALL, + })) as UnstakeParams; + + return unstakeDetails; + } +} + +export const unstakeAction: Action = { + name: "UNSTAKE", + similes: [ + "UNSTAKE_BTC_ON_B2", + "UNSTAKE_NATIVE_BTC_ON_B2", + "UNSTAKE_BTC_ON_B2", + "UNSTAKE_NATIVE_BTC_ON_B2", + ], + validate: async (runtime: IAgentRuntime, _message: Memory) => { + await validateB2NetworkConfig(runtime); + return true; + }, + description: + "unstake B2-BTC.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.debug("Starting UNSTAKE handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + elizaLogger.debug("unstake action handler called"); + const walletProvider = await initWalletProvider(runtime); + const action = new UnstakeAction(walletProvider); + + // Compose unstake context + const paramOptions = await action.buildUnstakeDetails( + state, + runtime, + ); + + elizaLogger.debug("Unstake paramOptions:", paramOptions); + + const txHash = await action.unstake(paramOptions); + if (txHash) { + const result = await action.txReceipt(txHash); + if (result) { + callback?.({ + text: "unstake successful", + content: { success: true, txHash: txHash }, + }); + } else { + callback?.({ + text: "unstake failed", + content: { error: "Unstake failed" }, + }); + } + } else { + callback?.({ + text: "unstake failed", + content: { error: "Unstake failed" }, + }); + } + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Unstake 1 B2-BTC", + }, + }, + ], + ] as ActionExample[][], +}; diff --git a/packages/plugin-b2/src/actions/withdraw.ts b/packages/plugin-b2/src/actions/withdraw.ts new file mode 100644 index 000000000000..d1e2ecb91932 --- /dev/null +++ b/packages/plugin-b2/src/actions/withdraw.ts @@ -0,0 +1,145 @@ +import { + Action, + ActionExample, + IAgentRuntime, + generateObjectDeprecated, + Memory, + State, + HandlerCallback, + elizaLogger, + composeContext, + ModelClass, +} from "@elizaos/core"; +import { getTxReceipt, withdraw } from "../utils"; +import { Hash } from "viem"; +import { validateB2NetworkConfig } from "../environment"; +import { withdrawTemplate } from "../templates"; +import { WalletProvider } from "../providers"; +import { WithdrawParams } from "../types"; +import { initWalletProvider } from "../providers"; +import { FARM_ADDRESS } from "../utils/constants"; + +// Exported for tests +export class WithdrawAction { + + constructor(private walletProvider: WalletProvider) {} + + async withdraw(_params: WithdrawParams): Promise { + try { + const balance = await this.walletProvider.getNativeBalance(this.walletProvider.getAddress()); + if ( balance == BigInt(0) ) { + throw new Error(`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`); + } + const txHash = await withdraw( + this.walletProvider, + FARM_ADDRESS, + ); + return txHash; + } catch(error) { + elizaLogger.log(`Withdraw failed: ${error.message}`); + throw new Error(`Withdraw failed: ${error.message}`); + } + } + + async txReceipt(tx: Hash) { + const receipt = await getTxReceipt(this.walletProvider, tx); + if (receipt.status === "success") { + return true; + } else { + return false; + } + } + + async buildWithdrawDetails( + state: State, + runtime: IAgentRuntime, + ): Promise { + const context = composeContext({ + state, + template: withdrawTemplate, + }); + + const withdrawDetails = (await generateObjectDeprecated({ + runtime, + context, + modelClass: ModelClass.SMALL, + })) as WithdrawParams; + + return withdrawDetails; + } +} + +export const withdrawAction: Action = { + name: "WITHDRAW", + similes: [ + "WITHDRAW_BTC_ON_B2", + "WITHDRAW_NATIVE_BTC_ON_B2", + "WITHDRAW_BTC_ON_B2", + "WITHDRAW_NATIVE_BTC_ON_B2", + ], + validate: async (runtime: IAgentRuntime, _message: Memory) => { + await validateB2NetworkConfig(runtime); + return true; + }, + description: + "withdraw B2-BTC.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.debug("Starting WITHDRAW handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + elizaLogger.debug("withdraw action handler called"); + const walletProvider = await initWalletProvider(runtime); + const action = new WithdrawAction(walletProvider); + + // Compose unstake context + const paramOptions = await action.buildWithdrawDetails( + state, + runtime, + ); + elizaLogger.debug("Unstake paramOptions:", paramOptions); + + const txHash = await action.withdraw(paramOptions); + if (txHash) { + const result = await action.txReceipt(txHash); + if (result) { + callback?.({ + text: "withdraw successful", + content: { success: true, txHash: txHash }, + }); + } else { + callback?.({ + text: "withdraw failed", + content: { error: "Withdraw failed" }, + }); + } + } else { + callback?.({ + text: "withdraw failed", + content: { error: "Withdraw failed" }, + }); + } + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Withdraw B2-BTC", + }, + }, + ], + ] as ActionExample[][], +}; diff --git a/packages/plugin-b2/src/environment.ts b/packages/plugin-b2/src/environment.ts new file mode 100644 index 000000000000..637f5dacde94 --- /dev/null +++ b/packages/plugin-b2/src/environment.ts @@ -0,0 +1,31 @@ +import { IAgentRuntime } from "@elizaos/core"; +import { z } from "zod"; + +export const b2NetworkEnvSchema = z.object({ + B2_PRIVATE_KEY: z + .string() + .min(1, "b2 network private key is required"), +}); + +export type b2NetworkConfig = z.infer; +export async function validateB2NetworkConfig( + runtime: IAgentRuntime +): Promise { + try { + const config = { + B2_PRIVATE_KEY: + runtime.getSetting("B2_PRIVATE_KEY") || + process.env.B2_PRIVATE_KEY, + }; + + return b2NetworkEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error(errorMessages); + } + throw error; + } +} diff --git a/packages/plugin-b2/src/index.ts b/packages/plugin-b2/src/index.ts new file mode 100644 index 000000000000..54c1a188b419 --- /dev/null +++ b/packages/plugin-b2/src/index.ts @@ -0,0 +1,18 @@ +import { Plugin } from "@elizaos/core"; +import { transferAction } from "./actions/transfer"; +import { stakeAction } from "./actions/stake"; +import { unstakeAction } from "./actions/unstake"; +import { withdrawAction } from "./actions/withdraw"; +import { walletProvider } from "./providers"; + +export const b2Plugin: Plugin = { + name: "b2", + description: "B2 Network Plugin for Eliza", + actions: [transferAction, stakeAction, unstakeAction, withdrawAction], + providers: [walletProvider], + evaluators: [], + services: [], + clients: [], +}; + +export default b2Plugin; diff --git a/packages/plugin-b2/src/providers/index.ts b/packages/plugin-b2/src/providers/index.ts new file mode 100644 index 000000000000..34149ee555c2 --- /dev/null +++ b/packages/plugin-b2/src/providers/index.ts @@ -0,0 +1,222 @@ +import { + IAgentRuntime, + Memory, + Provider, + State, + elizaLogger, +} from "@elizaos/core"; +import { privateKeyToAccount } from "viem/accounts"; +import { + formatUnits, + Address, + Chain, + Account, + WalletClient, + PrivateKeyAccount, + http, + createPublicClient, + createWalletClient, + PublicClient, + Transport, + RpcSchema, +} from "viem"; +import { TOKEN_ADDRESSES } from "../utils/constants"; +import { b2Network } from "../utils/chains"; + +export class WalletProvider implements Provider { + private account: PrivateKeyAccount; + + constructor(accountOrPrivateKey: PrivateKeyAccount | `0x${string}`) { + this.setAccount(accountOrPrivateKey); + } + + private setAccount = ( + accountOrPrivateKey: PrivateKeyAccount | `0x${string}` + ) => { + if (typeof accountOrPrivateKey === "string") { + this.account = privateKeyToAccount(accountOrPrivateKey); + } else { + this.account = accountOrPrivateKey; + } + }; + + async getNativeBalance ( + owner: Address + ) { + const publicClient = this.getPublicClient(); + const balance = await publicClient.getBalance({ + address: owner, + }); + return balance; + }; + + async getTokenBalance ( + tokenAddress: Address, + owner: Address + ) { + if (tokenAddress === TOKEN_ADDRESSES["B2-BTC"]) { + return this.getNativeBalance(owner); + } + const publicClient = this.getPublicClient(); + const balance = await publicClient.readContract({ + address: tokenAddress, + abi: [ + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { internalType: "uint256", name: "", type: "uint256" }, + ], + stateMutability: "view", + type: "function", + }, + ], + functionName: "balanceOf", + args: [owner], + }); + return balance; + }; + + getAccount(): Account { + return this.account; + } + + getAddress(): Address { + return this.account.address; + } + + getPublicClient(): PublicClient { + return createPublicClient({ + chain: b2Network, + transport: http(), + }); + } + + getWalletClient(): WalletClient { + const transport = http(b2Network.rpcUrls.default.http[0]); + const walletClient = createWalletClient({ + chain: b2Network, + transport, + account: this.account, + }); + return walletClient; + } + + async getDecimals(tokenAddress: Address) { + if (tokenAddress === TOKEN_ADDRESSES["B2-BTC"]) { + return b2Network.nativeCurrency.decimals; + } + const publicClient = this.getPublicClient(); + const decimals = await publicClient.readContract({ + address: tokenAddress, + abi: [ + { + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + stateMutability: "view", + type: "function", + }, + ], + functionName: "decimals", + }); + return decimals; + } + + async get( + runtime: IAgentRuntime, + _message: Memory, + _state?: State + ): Promise { + elizaLogger.debug("walletProvider::get"); + try { + const privateKey = runtime.getSetting("B2_PRIVATE_KEY"); + if (!privateKey) { + throw new Error( + "B2_PRIVATE_KEY not found in environment variables" + ); + } + let accountAddress; + if (this.account) { + accountAddress = this.getAddress(); + } else { + const walletProvider = await initWalletProvider(runtime); + accountAddress = walletProvider.getAddress(); + } + + let output = `# Wallet Balances\n\n`; + output += `## Wallet Address\n\n\`${accountAddress}\`\n\n`; + + output += `## Latest Token Balances\n\n`; + for (const [token, address] of Object.entries(TOKEN_ADDRESSES)) { + const decimals = await this.getDecimals(address); + const balance = await this.getTokenBalance( + address, + accountAddress, + ); + output += `${token}: ${formatUnits(balance, decimals)}\n`; + } + output += `Note: These balances can be used at any time.\n\n`; + elizaLogger.debug("walletProvider::get output:", output); + return output; + } catch (error) { + elizaLogger.error("Error in b2 wallet provider:", error); + return null; + } + } + +}; + +export const initWalletProvider = async (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("B2_PRIVATE_KEY"); + if (!privateKey) { + throw new Error( + "B2_PRIVATE_KEY not found in environment variables" + ); + } + return new WalletProvider(privateKey as `0x${string}`); +}; + +export const walletProvider: Provider = { + async get( + runtime: IAgentRuntime, + _message: Memory, + _state?: State + ): Promise { + elizaLogger.debug("walletProvider::get"); + const privateKey = runtime.getSetting("B2_PRIVATE_KEY"); + if (!privateKey) { + throw new Error( + "B2_PRIVATE_KEY not found in environment variables" + ); + } + try { + const walletProvider = await initWalletProvider(runtime); + const account = walletProvider.getAccount(); + let output = `# Wallet Balances\n\n`; + output += `## Wallet Address\n\n\`${account.address}\`\n\n`; + + output += `## Latest Token Balances\n\n`; + for (const [token, address] of Object.entries(TOKEN_ADDRESSES)) { + const decimals = await walletProvider.getDecimals(address); + const balance = await walletProvider.getTokenBalance( + address, + account.address + ); + output += `${token}: ${formatUnits(balance, decimals)}\n`; + } + output += `Note: These balances can be used at any time.\n\n`; + elizaLogger.debug("walletProvider::get output:", output); + return output; + } catch (error) { + elizaLogger.error("Error in b2 wallet provider:", error); + return null; + } + } +}; \ No newline at end of file diff --git a/packages/plugin-b2/src/templates/index.ts b/packages/plugin-b2/src/templates/index.ts new file mode 100644 index 000000000000..238a506a1229 --- /dev/null +++ b/packages/plugin-b2/src/templates/index.ts @@ -0,0 +1,11 @@ +import { transferTemplate } from "./transfer"; +import { stakeTemplate } from "./stake"; +import { unstakeTemplate } from "./unstake"; +import {withdrawTemplate} from "./withdraw" + +export { + transferTemplate, + stakeTemplate, + unstakeTemplate, + withdrawTemplate +}; \ No newline at end of file diff --git a/packages/plugin-b2/src/templates/stake.ts b/packages/plugin-b2/src/templates/stake.ts new file mode 100644 index 000000000000..1bb0fb9bbadf --- /dev/null +++ b/packages/plugin-b2/src/templates/stake.ts @@ -0,0 +1,17 @@ +export const stakeTemplate = `Respond with a JSON markdown block containing only the extracted values + +Example response for a 10 B2-BTC stake: +\`\`\`json +{ + "amount": "10" +} +\`\`\` + +## Recent Messages + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested stake: +- Amount to stake + +Respond with a JSON markdown block containing only the extracted values.`; \ No newline at end of file diff --git a/packages/plugin-b2/src/templates/transfer.ts b/packages/plugin-b2/src/templates/transfer.ts new file mode 100644 index 000000000000..d9e23698940e --- /dev/null +++ b/packages/plugin-b2/src/templates/transfer.ts @@ -0,0 +1,40 @@ +import { TOKEN_ADDRESSES } from "../utils/constants"; + +export const transferTemplate = `Respond with a JSON markdown block containing only the extracted values +- Use null for any values that cannot be determined. +- Use address zero for native B2-BTC transfers. + +Example response for a 10 uBTC transfer: +\`\`\`json +{ + "tokenAddress": "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2", + "recipient": "0x4f9e2dc50B4Cd632CC2D24edaBa3Da2a9338832a", + "amount": "10" +} +\`\`\` + +Example response for a 0.1 B2-BTC transfer: +\`\`\`json +{ + "tokenAddress": "0x0000000000000000000000000000000000000000", + "recipient": "0x4f9e2dc50B4Cd632CC2D24edaBa3Da2a9338832a", + "amount": "0.1" +} +\`\`\` + +## Token Addresses + +${Object.entries(TOKEN_ADDRESSES) + .map(([key, value]) => `- ${key}: ${value}`) + .join("\n")} + +## Recent Messages + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested token transfer: +- Token contract address +- Recipient wallet address +- Amount to transfer + +Respond with a JSON markdown block containing only the extracted values.`; \ No newline at end of file diff --git a/packages/plugin-b2/src/templates/unstake.ts b/packages/plugin-b2/src/templates/unstake.ts new file mode 100644 index 000000000000..35f2ee0418e2 --- /dev/null +++ b/packages/plugin-b2/src/templates/unstake.ts @@ -0,0 +1,18 @@ +export const unstakeTemplate = `Respond with a JSON markdown block containing only the extracted values +- Use null for any values that cannot be determined. + +Example response for a 5 B2-BTC unstake: +\`\`\`json +{ + "amount": "5" +} +\`\`\` + +## Recent Messages + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested unstake: +- Amount to unstake + +Respond with a JSON markdown block containing only the extracted values.`; diff --git a/packages/plugin-b2/src/templates/withdraw.ts b/packages/plugin-b2/src/templates/withdraw.ts new file mode 100644 index 000000000000..751df636ef48 --- /dev/null +++ b/packages/plugin-b2/src/templates/withdraw.ts @@ -0,0 +1,15 @@ +export const withdrawTemplate = `Respond with a JSON markdown block containing only the extracted values +- This action does not require any parameters. + +Example response for a withdraw request: +\`\`\`json +{} +\`\`\` + +## Recent Messages + +{{recentMessages}} + +Given the recent messages, confirm the request for withdrawal. + +Respond with a JSON markdown block containing only an empty object.`; diff --git a/packages/plugin-b2/src/tests/stake.test.ts b/packages/plugin-b2/src/tests/stake.test.ts new file mode 100644 index 000000000000..f2cb0429afc4 --- /dev/null +++ b/packages/plugin-b2/src/tests/stake.test.ts @@ -0,0 +1,44 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey } from "viem/accounts"; + +import { StakeAction } from "../actions/stake"; +import { WalletProvider } from "../providers"; +import { StakeParams } from "../types"; + +describe("Stake Action", () => { + let wp: WalletProvider; + + beforeEach(async () => { + const pk = generatePrivateKey(); + wp = new WalletProvider(pk); + }); + describe("Constructor", () => { + it("should initialize with stake action", () => { + const sa = new StakeAction(wp); + expect(sa).toBeDefined(); + }); + }); + describe("Stake", () => { + let sa: StakeAction; + beforeEach(() => { + sa = new StakeAction(wp); + expect(sa).toBeDefined(); + }); + it("should initialize with stake action", () => { + const sa = new StakeAction(wp); + expect(sa).toBeDefined(); + }); + + it("throws if not enough gas", async () => { + const params = { + amount: "1", + } as StakeParams; + await expect( + sa.stake(params) + ).rejects.toThrow( + "Stake failed: The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account." + ); + }); + + }); +}); diff --git a/packages/plugin-b2/src/tests/transfer.test.ts b/packages/plugin-b2/src/tests/transfer.test.ts new file mode 100644 index 000000000000..a48a59ffeaf5 --- /dev/null +++ b/packages/plugin-b2/src/tests/transfer.test.ts @@ -0,0 +1,75 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey } from "viem/accounts"; +import { getEnvVariable } from "@elizaos/core"; + +import { TransferAction } from "../actions/transfer"; +import { WalletProvider } from "../providers"; +import { TransferParams } from "../types"; +import { TOKEN_ADDRESSES } from "../utils/constants"; + +describe("Transfer Action", () => { + let wp: WalletProvider; + let wp1: WalletProvider; + + beforeEach(async () => { + const pk = generatePrivateKey(); + const pk1 = getEnvVariable("ARTHERA_PRIVATE_KEY") as `0x${string}`; + wp = new WalletProvider(pk); + console.log(wp.getAddress()); + if (pk1) { + wp1 = new WalletProvider(pk1); + } + }); + describe("Constructor", () => { + it("should initialize with transfer action", () => { + const ta = new TransferAction(wp); + + expect(ta).toBeDefined(); + }); + }); + describe("Transfer", () => { + let ta: TransferAction; + let ta1: TransferAction; + let receiverAddress: `0x${string}`; + + beforeEach(() => { + ta = new TransferAction(wp); + if (wp1) { + ta1 = new TransferAction(wp1); + receiverAddress = wp1.getAddress(); + } + else { + receiverAddress = wp.getAddress(); + } + }); + + it("throws if not enough gas", async () => { + const params = { + tokenAddress: TOKEN_ADDRESSES["B2-BTC"], + recipient: receiverAddress, + amount: "1", + } as TransferParams; + await expect( + ta.transfer(params) + ).rejects.toThrow( + "Transfer failed: The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account." + ); + }); + + if (wp1) { + console.log("----------------------------------------------"); + it("transfers tokens", async () => { + const params = { + tokenAddress: TOKEN_ADDRESSES["B2-BTC"], + recipient: receiverAddress, + amount: "0.001", + } as TransferParams; + const tx = await ta1.transfer(params); + expect(tx).toBeDefined(); + expect(tx.from).toEqual(wp1.getAddress()); + expect(tx.recipient).toEqual(receiverAddress); + expect(tx.amount).toEqual(1000000000000000n); + }); + } + }); +}); diff --git a/packages/plugin-b2/src/tests/unstake.test.ts b/packages/plugin-b2/src/tests/unstake.test.ts new file mode 100644 index 000000000000..332b992febbf --- /dev/null +++ b/packages/plugin-b2/src/tests/unstake.test.ts @@ -0,0 +1,44 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey } from "viem/accounts"; + +import { UnstakeAction } from "../actions/unstake"; +import { WalletProvider } from "../providers"; +import { UnstakeParams } from "../types"; + +describe("Unstake Action", () => { + let wp: WalletProvider; + + beforeEach(async () => { + const pk = generatePrivateKey(); + wp = new WalletProvider(pk); + }); + describe("Constructor", () => { + it("should initialize with unstake action", () => { + const ua = new UnstakeAction(wp); + expect(ua).toBeDefined(); + }); + }); + describe("Unstake", () => { + let ua: UnstakeAction; + + beforeEach(() => { + ua = new UnstakeAction(wp); + expect(ua).toBeDefined(); + }); + it("should initialize with unstake action", () => { + const ua = new UnstakeAction(wp); + expect(ua).toBeDefined(); + }); + + it("throws if not enough gas", async () => { + const params = { + amount: "1", + } as UnstakeParams; + await expect( + ua.unstake(params) + ).rejects.toThrow( + "Unstake failed: The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account." + ); + }); + }); +}); diff --git a/packages/plugin-b2/src/tests/wallet.test.ts b/packages/plugin-b2/src/tests/wallet.test.ts new file mode 100644 index 000000000000..b597b26c958b --- /dev/null +++ b/packages/plugin-b2/src/tests/wallet.test.ts @@ -0,0 +1,39 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { initWalletProvider, WalletProvider } from "../providers"; +import { generatePrivateKey } from "viem/accounts"; + +describe("B2 Network Wallet Provider", () => { + //let walletProvider: WalletProvider; + let mockRuntime; + + beforeEach(() => { + vi.clearAllMocks(); + const pk = generatePrivateKey(); + //walletProvider = new WalletProvider(pk); + mockRuntime = { + getSetting: vi.fn(), + }; + mockRuntime.getSetting.mockImplementation((key: string) => { + const settings = { + B2_PRIVATE_KEY: pk, + }; + return settings[key]; + }); + }); + + afterEach(() => { + vi.clearAllTimers(); + }); + + describe("Constructor", () => { + it("new wallet provider", () => { + const pk = generatePrivateKey(); + const ta = new WalletProvider(pk); + expect(ta).toBeDefined(); + }); + it("init wallet provider",async () => { + const ta = await initWalletProvider(mockRuntime); + expect(ta).toBeDefined(); + }); + }); +}); diff --git a/packages/plugin-b2/src/tests/withdraw.test.ts b/packages/plugin-b2/src/tests/withdraw.test.ts new file mode 100644 index 000000000000..694042374793 --- /dev/null +++ b/packages/plugin-b2/src/tests/withdraw.test.ts @@ -0,0 +1,41 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey } from "viem/accounts"; +import { WithdrawAction } from "../actions/withdraw"; +import { WalletProvider } from "../providers"; +import { WithdrawParams } from "../types"; + +describe("Withdraw Action", () => { + let wp: WalletProvider; + + beforeEach(async () => { + const pk = generatePrivateKey(); + wp = new WalletProvider(pk); + }); + describe("Constructor", () => { + it("should initialize with withdraw action", () => { + const wa = new WithdrawAction(wp); + expect(wa).toBeDefined(); + }); + }); + describe("Withdraw", () => { + let wa: WithdrawAction; + beforeEach(() => { + wa = new WithdrawAction(wp); + expect(wa).toBeDefined(); + }); + it("should initialize with withdraw action", () => { + wa = new WithdrawAction(wp); + expect(wa).toBeDefined(); + }); + it("throws if not enough gas", async () => { + const params = {} as WithdrawParams; + wa = new WithdrawAction(wp); + await expect( + wa.withdraw(params) + ).rejects.toThrow( + "Withdraw failed: The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account." + ); + }); + + }); +}); diff --git a/packages/plugin-b2/src/types/index.ts b/packages/plugin-b2/src/types/index.ts new file mode 100644 index 000000000000..f63ceeb87b58 --- /dev/null +++ b/packages/plugin-b2/src/types/index.ts @@ -0,0 +1,29 @@ +import type { + Address, + Hash, +} from "viem"; + +export interface Transaction { + hash: Hash; + from: Address; + tokenAddress: string; + recipient: string; + amount: string | number; +} + +export interface TransferParams { + tokenAddress: string; + recipient: string; + amount: string | number; +} + +export interface StakeParams { + amount: string | number; +} + +export interface UnstakeParams { + amount: string | number; +} + +//export interface WithdrawParams { +//} diff --git a/packages/plugin-b2/src/utils/chains.ts b/packages/plugin-b2/src/utils/chains.ts new file mode 100644 index 000000000000..0eec893a8353 --- /dev/null +++ b/packages/plugin-b2/src/utils/chains.ts @@ -0,0 +1,26 @@ +import { defineChain } from 'viem' + +export const b2Network = defineChain({ + id: 223, + name: 'B2Network', + network: 'B2Network', + nativeCurrency: { + decimals: 18, + name: 'Bitcoin', + symbol: 'BTC', + }, + blockExplorers: { + default: { + name: 'B2Network', + url: 'https://explorer.bsquared.network/' + } + }, + rpcUrls: { + default: { + http: ['https://rpc.bsquared.network/'], + }, + public: { + http: ['https://rpc.bsquared.network/'], + }, + }, +}) \ No newline at end of file diff --git a/packages/plugin-b2/src/utils/constants.ts b/packages/plugin-b2/src/utils/constants.ts new file mode 100644 index 000000000000..23fec41ee6e1 --- /dev/null +++ b/packages/plugin-b2/src/utils/constants.ts @@ -0,0 +1,15 @@ +import { Address } from "viem"; + +const TOKEN_ADDRESSES: Record = { + "B2-BTC": "0x0000000000000000000000000000000000000000", + uBTC: "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2", + USDC: "0xE544e8a38aDD9B1ABF21922090445Ba93f74B9E5", + USDT: "0x681202351a488040Fa4FdCc24188AfB582c9DD62", +}; + +const FARM_ADDRESS: Address = "0xd5B5f1CA0fa5636ac54b0a0007BA374A1513346e"; + +export { + TOKEN_ADDRESSES, + FARM_ADDRESS, +}; diff --git a/packages/plugin-b2/src/utils/index.ts b/packages/plugin-b2/src/utils/index.ts new file mode 100644 index 000000000000..27453b2c658e --- /dev/null +++ b/packages/plugin-b2/src/utils/index.ts @@ -0,0 +1,284 @@ +import { elizaLogger } from "@elizaos/core"; +import { + Hash, + Address, + parseUnits, + encodeFunctionData, +} from "viem"; +import { b2Network } from "./chains"; +import { WalletProvider } from "../providers"; +import { TOKEN_ADDRESSES } from "./constants"; + +export const getTxReceipt = async (walletProvider: WalletProvider, tx: Hash) => { + const publicClient = walletProvider.getPublicClient(); + const receipt = await publicClient.waitForTransactionReceipt({ + hash: tx, + }); + return receipt; +}; + +export const sendNativeAsset = async ( + walletProvider: WalletProvider, + recipient: Address, + amount: number +) => { + const decimals = await walletProvider.getDecimals(TOKEN_ADDRESSES["B2-BTC"]); + const walletClient = walletProvider.getWalletClient(); + + const args = { + to: recipient, + value: parseUnits(amount.toString(), decimals), + }; + const tx = await walletClient.sendTransaction(args); + return tx as Hash; +}; + +export const sendToken = async ( + walletProvider: WalletProvider, + tokenAddress: Address, + recipient: Address, + amount: number +) => { + const decimals = await walletProvider.getDecimals(tokenAddress); + const publicClient = walletProvider.getPublicClient(); + try { + const { result, request } = await publicClient.simulateContract({ + account: walletProvider.getAccount(), + address: tokenAddress, + abi: [ + { + inputs: [ + { + internalType: "address", + name: "dst", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + ], + functionName: "transfer", + args: [recipient, parseUnits(amount.toString(), decimals)], + }); + + if (!result) { + throw new Error("Transfer failed"); + } + + elizaLogger.debug("Request:", request); + const walletClient = walletProvider.getWalletClient(); + const tx = await walletClient.writeContract(request); + elizaLogger.debug("Transaction:", tx); + return tx as Hash; + } catch (error) { + elizaLogger.error("Error simulating contract:", error); + return; + } +}; + +export const approve = async ( + walletProvider: WalletProvider, + tokenAddress: Address, + spender: Address, + amount: number +) => { + try { + const decimals = await walletProvider.getDecimals(tokenAddress); + const publicClient = walletProvider.getPublicClient(); + const { result, request } = await publicClient.simulateContract({ + account: walletProvider.getAccount(), + address: tokenAddress, + abi: [ + { + inputs: [ + { + internalType: "address", + name: "_spender", + type: "address", + }, + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + ], + functionName: "approve", + args: [spender, parseUnits(amount.toString(), decimals)], + }); + + if (!result) { + throw new Error("Approve failed"); + } + elizaLogger.debug("Request:", request); + const walletClient = walletProvider.getWalletClient(); + const tx = await walletClient.writeContract(request); + elizaLogger.debug("Transaction:", tx); + return tx; + } catch (error) { + elizaLogger.error("Error approving:", error); + return; + } +}; + +export const depositBTC = async ( + walletProvider: WalletProvider, + farmAddress: Address, + amount: string | number +) => { + try { + const decimals = b2Network.nativeCurrency.decimals; + // const publicClient = walletProvider.getPublicClient(); + + const walletClient = walletProvider.getWalletClient(); + const data = encodeFunctionData({ + abi: [ + { + "inputs": [ + + ], + "name": "depositBTC", + "outputs": [ + + ], + "stateMutability": "payable", + "type": "function" + }, + ], + functionName: 'depositBTC', + args: [], + }); + + const args = { + account: walletProvider.getAddress(), + to: farmAddress, + data, + value: parseUnits(amount.toString(), decimals), + }; + const txHash = await walletClient.sendTransaction(args); + + elizaLogger.debug("Transaction hash:", txHash); + return txHash; + } catch (error) { + elizaLogger.error("Error depositBTC:", error); + return; + } +}; + +// function unstake(uint256 _pid, uint256 _amount) public {} +export const unstake = async ( + walletProvider: WalletProvider, + farmAddress: Address, + amount: string | number +) => { + try { + const BTC_PID = 0; + const decimals = b2Network.nativeCurrency.decimals; + const publicClient = walletProvider.getPublicClient(); + const { _result, request } = await publicClient.simulateContract({ + account: walletProvider.getAccount(), + address: farmAddress, + abi: [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "unstake", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + ], + functionName: "unstake", + args: [BigInt(BTC_PID), parseUnits(amount.toString(), decimals)], + }); + elizaLogger.debug("Request:", request); + + const walletClient = walletProvider.getWalletClient(); + const tx = await walletClient.writeContract(request); + elizaLogger.debug("Transaction:", tx); + return tx; + } catch (error) { + elizaLogger.error("Error unstake:", error); + return; + } +}; + +// function withdraw(uint256 _pid) public {} +export const withdraw = async ( + walletProvider: WalletProvider, + farmAddress: Address, +) => { + try { + const BTC_PID = 0; + const publicClient = walletProvider.getPublicClient(); + const { _result, request } = await publicClient.simulateContract({ + account: walletProvider.getAccount(), + address: farmAddress, + abi: [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + ], + functionName: "withdraw", + args: [BigInt(BTC_PID)], + }); + elizaLogger.debug("Request:", request); + + const walletClient = walletProvider.getWalletClient(); + const tx = await walletClient.writeContract(request); + elizaLogger.debug("Transaction:", tx); + return tx; + } catch (error) { + elizaLogger.error("Error withdraw:", error); + return; + } +}; \ No newline at end of file diff --git a/packages/plugin-b2/tsconfig.json b/packages/plugin-b2/tsconfig.json new file mode 100644 index 000000000000..e9c2e9f85277 --- /dev/null +++ b/packages/plugin-b2/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/plugin-b2/tsup.config.ts b/packages/plugin-b2/tsup.config.ts new file mode 100644 index 000000000000..1a96f24afa1e --- /dev/null +++ b/packages/plugin-b2/tsup.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "safe-buffer", + // Add other modules you want to externalize + ], +}); diff --git a/packages/plugin-binance/eslint.config.mjs b/packages/plugin-binance/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-binance/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-binance/package.json b/packages/plugin-binance/package.json index 1e90cf85c385..72ac4094386f 100644 --- a/packages/plugin-binance/package.json +++ b/packages/plugin-binance/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-binance", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-binance/src/actions/spotBalance.ts b/packages/plugin-binance/src/actions/spotBalance.ts index 940a77436d89..c4f5364e17fc 100644 --- a/packages/plugin-binance/src/actions/spotBalance.ts +++ b/packages/plugin-binance/src/actions/spotBalance.ts @@ -47,7 +47,7 @@ export const spotBalance: Action = { try { await validateBinanceConfig(runtime); return true; - } catch (error) { + } catch { return false; } }, diff --git a/packages/plugin-birdeye/.npmignore b/packages/plugin-birdeye/.npmignore new file mode 100644 index 000000000000..078562eceabb --- /dev/null +++ b/packages/plugin-birdeye/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-birdeye/.nvmrc b/packages/plugin-birdeye/.nvmrc new file mode 100644 index 000000000000..fa12cf298e4d --- /dev/null +++ b/packages/plugin-birdeye/.nvmrc @@ -0,0 +1 @@ +v23.3.0 \ No newline at end of file diff --git a/packages/plugin-birdeye/README.md b/packages/plugin-birdeye/README.md new file mode 100644 index 000000000000..0ac543844f4e --- /dev/null +++ b/packages/plugin-birdeye/README.md @@ -0,0 +1,38 @@ +# Eliza Birdeye Plugin + +A powerful plugin for Eliza that integrates with Birdeye's comprehensive DeFi and token analytics API. This plugin provides real-time access to blockchain data, token metrics, and DeFi analytics across multiple networks. + +## Features + +### Provider Featurs + +- **Agent Portfolio Provider** + + - If `BIRDEYE_WALLET_ADDR` is set, this provider will fetch the wallet's portfolio data from Birdeye and be able to respond to questions related to the wallet's holdings. + +### Action Features + +- **Token Search Address** + + - This action will search input message for token addresses and when present will query Birdeye for token information + +- **Token Search Symbol** + + - This action will search input message for token symbols in the format of `$SYMBOL` and when present will query Birdeye for token information. Note that this action currently only supports SOL, SUI, and ETH addresses. + - _Any addresses that look like EVM addresses will be treated as ETH addresses since there is no easy way to distinguish between the other EVM chains that are supported by Birdeye_. + +- **Wallet Search Address** + + - This action will search input message for wallet addresses and when present will query Birdeye for wallet information + +## API Reference + +The plugin provides access to a subset of Birdeye API endpoints through structured interfaces. For detailed API documentation, visit [Birdeye's API Documentation](https://public-api.birdeye.so). + +## License + +See parent project for license information. + +## Contributing + +Contributions are welcome! See parent project for contribution guidelines. diff --git a/packages/plugin-birdeye/eslint.config.mjs b/packages/plugin-birdeye/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-birdeye/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-birdeye/package.json b/packages/plugin-birdeye/package.json new file mode 100644 index 000000000000..f8200dbc9b18 --- /dev/null +++ b/packages/plugin-birdeye/package.json @@ -0,0 +1,37 @@ +{ + "name": "@elizaos/plugin-birdeye", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@coral-xyz/anchor": "0.30.1", + "@elizaos/core": "workspace:*", + "@solana/spl-token": "0.4.9", + "@solana/web3.js": "1.95.8", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "bs58": "6.0.0", + "fomo-sdk-solana": "1.3.2", + "node-cache": "5.1.2", + "pumpdotfun-sdk": "1.3.2", + "tsup": "8.3.5", + "vitest": "2.1.4" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "vitest run" + }, + "peerDependencies": { + "form-data": "4.0.1", + "whatwg-url": "7.1.0" + }, + "devDependencies": { + "@types/node": "^22.10.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.2" + } +} diff --git a/packages/plugin-birdeye/src/actions/test-all-endpoints.ts b/packages/plugin-birdeye/src/actions/test-all-endpoints.ts new file mode 100644 index 000000000000..a2ed87587586 --- /dev/null +++ b/packages/plugin-birdeye/src/actions/test-all-endpoints.ts @@ -0,0 +1,398 @@ +import { + Action, + ActionExample, + elizaLogger, + type IAgentRuntime, + type Memory, + type State, +} from "@elizaos/core"; +import { BirdeyeProvider } from "../birdeye"; +import { waitFor } from "../utils"; + +// This is a dummy action generated solely to test all Birdeye endpoints and should not be used in production +export const testAllEndpointsAction = { + name: "BIRDEYE_TEST_ALL_ENDPOINTS", + similes: [], + description: "Test all Birdeye endpoints with sample data", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback?: any + ) => { + try { + elizaLogger.info("Testing all endpoints"); + + await waitFor(1000); + + const birdeyeProvider = new BirdeyeProvider(runtime.cacheManager); + + // Sample data for testing + const sampleParams = { + token: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + address: "MfDuWeqSHEqTFVYZ7LoexgAK9dxk7cy4DFJWjWMGVWa", + network: "solana", + list_address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + address_type: "token", + type: "1D", + tx_type: "all", + sort_type: "desc", + unixtime: 1234567890, + base_address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + quote_address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + time_to: 1672531199, // Unix timestamp + meme_platform_enabled: true, + time_frame: "1D", + sort_by: undefined, + list_addresses: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + wallet: "MfDuWeqSHEqTFVYZ7LoexgAK9dxk7cy4DFJWjWMGVWa", + token_address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + pair: "samplePair", + before_time: 1672531199, + after_time: 1672331199, + }; + + // Test each fetch function + elizaLogger.info("fetchDefiSupportedNetworks"); + await birdeyeProvider.fetchDefiSupportedNetworks(); + elizaLogger.success("fetchDefiSupportedNetworks: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPrice"); + await birdeyeProvider.fetchDefiPrice({ ...sampleParams }); + elizaLogger.success("fetchDefiPrice: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPriceMultiple"); + await birdeyeProvider.fetchDefiPriceMultiple({ ...sampleParams }); + elizaLogger.success("fetchDefiPriceMultiple: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPriceMultiple_POST"); + await birdeyeProvider.fetchDefiPriceMultiple_POST({ + ...sampleParams, + }); + elizaLogger.success("fetchDefiPriceMultiple_POST: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPriceHistorical"); + await birdeyeProvider.fetchDefiPriceHistorical({ + ...sampleParams, + address_type: "token", + type: "1D", + }); + elizaLogger.success("fetchDefiPriceHistorical: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPriceHistoricalByUnixTime"); + await birdeyeProvider.fetchDefiPriceHistoricalByUnixTime({ + address: sampleParams.token, + }); + elizaLogger.success("fetchDefiPriceHistoricalByUnixTime: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiTradesToken"); + await birdeyeProvider.fetchDefiTradesToken({ + address: sampleParams.token, + }); + elizaLogger.success("fetchDefiTradesToken: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiTradesPair"); + await birdeyeProvider.fetchDefiTradesPair({ + address: sampleParams.token, + }); + elizaLogger.success("fetchDefiTradesPair: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiTradesTokenSeekByTime"); + await birdeyeProvider.fetchDefiTradesTokenSeekByTime({ + address: sampleParams.token, + before_time: sampleParams.before_time, + }); + elizaLogger.success("fetchDefiTradesTokenSeekByTime: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiTradesPairSeekByTime"); + await birdeyeProvider.fetchDefiTradesPairSeekByTime({ + address: sampleParams.token, + after_time: sampleParams.after_time, + }); + elizaLogger.success("fetchDefiTradesPairSeekByTime: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiOHLCV"); + await birdeyeProvider.fetchDefiOHLCV({ + ...sampleParams, + type: "1D", + }); + elizaLogger.success("fetchDefiOHLCV: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiOHLCVPair"); + await birdeyeProvider.fetchDefiOHLCVPair({ + ...sampleParams, + type: "1D", + }); + elizaLogger.success("fetchDefiOHLCVPair: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiOHLCVBaseQuote"); + await birdeyeProvider.fetchDefiOHLCVBaseQuote({ + ...sampleParams, + type: "1D", + }); + elizaLogger.success("fetchDefiOHLCVBaseQuote: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchDefiPriceVolume"); + await birdeyeProvider.fetchDefiPriceVolume({ + address: sampleParams.token, + }); + elizaLogger.success("fetchDefiPriceVolume: SUCCESS!"); + await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchDefiPriceVolumeMulti_POST"); + // await birdeyeProvider.fetchDefiPriceVolumeMulti_POST({ + // list_address: sampleParams.token, + // }); + // elizaLogger.success("fetchDefiPriceVolumeMulti_POST: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchTokenList"); + await birdeyeProvider.fetchTokenList({ + ...sampleParams, + sort_by: "mc", + sort_type: "desc", + }); + elizaLogger.success("fetchTokenList: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenSecurityByAddress"); + await birdeyeProvider.fetchTokenSecurityByAddress({ + ...sampleParams, + }); + elizaLogger.success("fetchTokenSecurityByAddress: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenOverview"); + await birdeyeProvider.fetchTokenOverview({ ...sampleParams }); + elizaLogger.success("fetchTokenOverview: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenCreationInfo"); + await birdeyeProvider.fetchTokenCreationInfo({ ...sampleParams }); + elizaLogger.success("fetchTokenCreationInfo: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenTrending"); + await birdeyeProvider.fetchTokenTrending({ + ...sampleParams, + sort_by: "volume24hUSD", + sort_type: "desc", + }); + elizaLogger.success("fetchTokenTrending: SUCCESS!"); + await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchTokenListV2_POST"); + // await birdeyeProvider.fetchTokenListV2_POST({}); + // elizaLogger.success("fetchTokenListV2_POST: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchTokenNewListing"); + await birdeyeProvider.fetchTokenNewListing({ + time_to: new Date().getTime(), + meme_platform_enabled: true, + }); + elizaLogger.success("fetchTokenNewListing: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenTopTraders"); + await birdeyeProvider.fetchTokenTopTraders({ + ...sampleParams, + time_frame: "24h", + sort_type: "asc", + sort_by: "volume", + }); + elizaLogger.success("fetchTokenTopTraders: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenAllMarketsList"); + await birdeyeProvider.fetchTokenAllMarketsList({ + ...sampleParams, + time_frame: "12H", + sort_type: "asc", + sort_by: "volume24h", + }); + elizaLogger.success("fetchTokenAllMarketsList: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenMetadataSingle"); + await birdeyeProvider.fetchTokenMetadataSingle({ ...sampleParams }); + elizaLogger.success("fetchTokenMetadataSingle: SUCCESS!"); + await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchTokenMetadataMulti"); + // await birdeyeProvider.fetchTokenMetadataMulti({ ...sampleParams }); + // elizaLogger.success("fetchTokenMetadataMulti: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchTokenMarketData"); + await birdeyeProvider.fetchTokenMarketData({ ...sampleParams }); + elizaLogger.success("fetchTokenMarketData: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenTradeDataSingle"); + await birdeyeProvider.fetchTokenTradeDataSingle({ + ...sampleParams, + }); + elizaLogger.success("fetchTokenTradeDataSingle: SUCCESS!"); + await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchTokenTradeDataMultiple"); + // await birdeyeProvider.fetchTokenTradeDataMultiple({ + // ...sampleParams, + // }); + // elizaLogger.success("fetchTokenTradeDataMultiple: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchTokenHolders"); + await birdeyeProvider.fetchTokenHolders({ ...sampleParams }); + elizaLogger.success("fetchTokenHolders: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTokenMintBurn"); + await birdeyeProvider.fetchTokenMintBurn({ + ...sampleParams, + sort_by: "block_time", + sort_type: "desc", + type: "all", + }); + elizaLogger.success("fetchTokenMintBurn: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchWalletSupportedNetworks"); + await birdeyeProvider.fetchWalletSupportedNetworks(); + elizaLogger.success("fetchWalletSupportedNetworks: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchWalletPortfolio"); + await birdeyeProvider.fetchWalletPortfolio({ ...sampleParams }); + elizaLogger.success("fetchWalletPortfolio: SUCCESS!"); + await waitFor(500); + + // elizaLogger.info("fetchWalletPortfolioMultichain"); + // await birdeyeProvider.fetchWalletPortfolioMultichain({ + // ...sampleParams, + // }); + // elizaLogger.success("fetchWalletPortfolioMultichain: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchWalletTokenBalance"); + await birdeyeProvider.fetchWalletTokenBalance({ ...sampleParams }); + elizaLogger.success("fetchWalletTokenBalance: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchWalletTransactionHistory"); + await birdeyeProvider.fetchWalletTransactionHistory({ + ...sampleParams, + }); + elizaLogger.success("fetchWalletTransactionHistory: SUCCESS!"); + await waitFor(500); + + // elizaLogger.info("fetchWalletTransactionHistoryMultichain"); + // await birdeyeProvider.fetchWalletTransactionHistoryMultichain({ + // ...sampleParams, + // }); + // elizaLogger.success( + // "fetchWalletTransactionHistoryMultichain: SUCCESS!" + // ); + // await waitFor(500); + + elizaLogger.info("fetchWalletTransactionSimulate_POST"); + await birdeyeProvider.fetchWalletTransactionSimulate_POST({ + from: sampleParams.token, + to: sampleParams.token, + data: JSON.stringify({ test: "ok" }), + value: "100000", + }); + elizaLogger.success( + "fetchWalletTransactionSimulate_POST: SUCCESS!" + ); + await waitFor(500); + + elizaLogger.info("fetchTraderGainersLosers"); + await birdeyeProvider.fetchTraderGainersLosers({ + ...sampleParams, + type: "today", + sort_type: "asc", + }); + elizaLogger.success("fetchTraderGainersLosers: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchTraderTransactionsSeek"); + await birdeyeProvider.fetchTraderTransactionsSeek({ + ...sampleParams, + tx_type: "all", + before_time: undefined, + }); + elizaLogger.success("fetchTraderTransactionsSeek: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("fetchPairOverviewSingle"); + await birdeyeProvider.fetchPairOverviewSingle({ ...sampleParams }); + elizaLogger.success("fetchPairOverviewSingle: SUCCESS!"); + await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchMultiPairOverview"); + // await birdeyeProvider.fetchMultiPairOverview({ ...sampleParams }); + // elizaLogger.success("fetchMultiPairOverview: SUCCESS!"); + // await waitFor(500); + + // this endpoint is for enterprise users only + // elizaLogger.info("fetchPairOverviewMultiple"); + // await birdeyeProvider.fetchPairOverviewMultiple({ + // ...sampleParams, + // }); + // elizaLogger.success("fetchPairOverviewMultiple: SUCCESS!"); + // await waitFor(500); + + elizaLogger.info("fetchSearchTokenMarketData"); + await birdeyeProvider.fetchSearchTokenMarketData({ + ...sampleParams, + sort_type: "asc", + }); + elizaLogger.success("fetchSearchTokenMarketData: SUCCESS!"); + await waitFor(500); + + elizaLogger.info("All endpoints tested successfully"); + callback?.({ text: "All endpoints tested successfully!" }); + return true; + } catch (error) { + console.error("Error in testAllEndpointsAction:", error.message); + callback?.({ text: `Error: ${error.message}` }); + return false; + } + }, + validate: async (_runtime: IAgentRuntime, message: Memory) => { + // only run if explicitly triggered by user + return message.content.text.includes("BIRDEYE_TEST_ALL_ENDPOINTS"); + }, + examples: [ + [ + { + user: "user", + content: { + text: "I want you to BIRDEYE_TEST_ALL_ENDPOINTS", + action: "BIRDEYE_TEST_ALL_ENDPOINTS", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-birdeye/src/actions/token-search-address.ts b/packages/plugin-birdeye/src/actions/token-search-address.ts new file mode 100644 index 000000000000..783e5ae06d73 --- /dev/null +++ b/packages/plugin-birdeye/src/actions/token-search-address.ts @@ -0,0 +1,289 @@ +import { + Action, + ActionExample, + elizaLogger, + formatTimestamp, + IAgentRuntime, + Memory, + State, +} from "@elizaos/core"; +import { BirdeyeProvider } from "../birdeye"; +import { + TokenMarketDataResponse, + TokenOverviewResponse, + TokenSecurityResponse, + TokenTradeDataSingleResponse, +} from "../types/api/token"; +import { BaseAddress } from "../types/shared"; +import { + extractAddresses, + formatPercentChange, + formatPrice, + formatValue, + shortenAddress, +} from "../utils"; + +type TokenAddressSearchResult = { + overview: TokenOverviewResponse; + tradeData: TokenTradeDataSingleResponse; + security: TokenSecurityResponse; + marketData: TokenMarketDataResponse; +}; + +export const tokenSearchAddressAction = { + name: "TOKEN_SEARCH_ADDRESS", + similes: [ + "SEARCH_TOKEN_ADDRESS", + "FIND_TOKEN_ADDRESS", + "LOOKUP_TOKEN_ADDRESS", + "CHECK_TOKEN_ADDRESS", + "GET_TOKEN_BY_ADDRESS", + "TOKEN_ADDRESS_INFO", + "TOKEN_ADDRESS_LOOKUP", + "TOKEN_ADDRESS_SEARCH", + "TOKEN_ADDRESS_CHECK", + "TOKEN_ADDRESS_DETAILS", + "TOKEN_CONTRACT_SEARCH", + "TOKEN_CONTRACT_LOOKUP", + "TOKEN_CONTRACT_INFO", + "TOKEN_CONTRACT_CHECK", + "VERIFY_TOKEN_ADDRESS", + "VALIDATE_TOKEN_ADDRESS", + "GET_TOKEN_INFO", + "TOKEN_INFO", + "TOKEN_REPORT", + "TOKEN_ANALYSIS", + "TOKEN_OVERVIEW", + "TOKEN_SUMMARY", + "TOKEN_INSIGHT", + "TOKEN_DATA", + "TOKEN_STATS", + "TOKEN_METRICS", + "TOKEN_PROFILE", + "TOKEN_REVIEW", + "TOKEN_CHECK", + "TOKEN_LOOKUP", + "TOKEN_FIND", + "TOKEN_DISCOVER", + "TOKEN_EXPLORE", + ], + description: + "Search for detailed token information including security and trade data by address", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: any, + callback?: any + ) => { + try { + const provider = new BirdeyeProvider(runtime.cacheManager); + + // get all contract addresses from the message + const addresses = extractAddresses(message.content.text); + + elizaLogger.info( + `Searching Birdeye provider for ${addresses.length} addresses` + ); + + // for each symbol, do a search in Birdeye. This will return a list of token results that may be amatch to the token symbol. + const results: TokenAddressSearchResult[] = await Promise.all( + addresses.map(async ({ address, chain: addressChain }) => { + // address detection can't distinguish between evm chains, so we currently only do address search on ETH for EVM addresses. Future support will be added for other chains if the user requests it. + const chain = + addressChain === "evm" ? "ethereum" : addressChain; + + const [overview, marketData, security, tradeData] = + await Promise.all([ + provider.fetchTokenOverview( + { + address, + }, + { + headers: { + "x-chain": chain, + }, + } + ), + provider.fetchTokenMarketData( + { + address, + }, + { + headers: { + "x-chain": chain, + }, + } + ), + provider.fetchTokenSecurityByAddress( + { + address, + }, + { + headers: { + "x-chain": chain, + }, + } + ), + provider.fetchTokenTradeDataSingle( + { + address, + }, + { + headers: { + "x-chain": chain, + }, + } + ), + ]); + + return { + overview, + marketData, + security, + tradeData, + }; + }) + ); + + console.log(results); + + const completeResults = `I performed a search for the token addresses you requested and found the following results:\n\n${results + .map( + (result, i) => + `${formatTokenReport(addresses[i], i, result)}` + ) + .join("\n\n")}`; + + callback?.({ text: completeResults }); + return true; + } catch (error) { + console.error("Error in searchTokens handler:", error.message); + callback?.({ text: `Error: ${error.message}` }); + return false; + } + }, + validate: async (_runtime: IAgentRuntime, message: Memory) => { + const addresses = extractAddresses(message.content.text); + return addresses.length > 0; + }, + examples: [ + [ + { + user: "user", + content: { + text: "Search for 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + action: "TOKEN_SEARCH_ADDRESS", + }, + }, + { + user: "user", + content: { + text: "Look up contract So11111111111111111111111111111111111111112", + action: "TOKEN_ADDRESS_LOOKUP", + }, + }, + { + user: "user", + content: { + text: "Check this address: 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + action: "CHECK_TOKEN_ADDRESS", + }, + }, + { + user: "user", + content: { + text: "Get info for 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + action: "TOKEN_ADDRESS_INFO", + }, + }, + { + user: "user", + content: { + text: "Analyze contract 0x514910771af9ca656af840dff83e8264ecf986ca", + action: "TOKEN_CONTRACT_SEARCH", + }, + }, + ], + ] as ActionExample[][], +} as Action; + +// take all the details of the results and present to the user +const formatTokenReport = ( + address: BaseAddress, + index: number, + result: TokenAddressSearchResult +) => { + let output = ``; + + if (result.overview?.data) { + output += `\n`; + output += `Token Overview:\n`; + output += `📝 Name: ${result.overview.data.name}\n`; + output += result.overview.data.symbol + ? `🔖 Symbol: ${result.overview.data.symbol.toUpperCase()}\n` + : ""; + output += `🔗 Address: ${address.address}\n`; + output += `🔢 Decimals: ${result.overview.data.decimals}\n`; + output += ``; + if (result.overview.data.extensions) { + const ext = result.overview.data.extensions; + output += `🔗 Links & Info:\n`; + if (ext.website) output += ` • Website: ${ext.website}\n`; + if (ext.twitter) output += ` • Twitter: ${ext.twitter}\n`; + if (ext.telegram) output += ` • Telegram: ${ext.telegram}\n`; + if (ext.discord) output += ` • Discord: ${ext.discord}\n`; + if (ext.medium) output += ` • Medium: ${ext.medium}\n`; + if (ext.coingeckoId) + output += ` • CoinGecko ID: ${ext.coingeckoId}\n`; + if (ext.serumV3Usdc) + output += ` • Serum V3 USDC: ${ext.serumV3Usdc}\n`; + if (ext.serumV3Usdt) + output += ` • Serum V3 USDT: ${ext.serumV3Usdt}\n`; + } + output += `💧 Liquidity: ${formatValue(result.overview.data.liquidity)}\n`; + output += `⏰ Last Trade Time: ${formatTimestamp(new Date(result.overview.data.lastTradeHumanTime).getTime() / 1000)}\n`; + output += `💵 Price: ${formatPrice(result.overview.data.price)}\n`; + output += `📜 Description: ${result.overview.data.extensions?.description ?? "N/A"}\n`; + } + + if (result.marketData?.data) { + output += `\n`; + output += `Market Data:\n`; + output += `💧 Liquidity: ${formatValue(result.marketData.data.liquidity)}\n`; + output += `💵 Price: ${formatPrice(result.marketData.data.price)}\n`; + output += `📦 Supply: ${formatValue(result.marketData.data.supply)}\n`; + output += `💰 Market Cap: ${formatValue(result.marketData.data.marketcap)}\n`; + output += `🔄 Circulating Supply: ${formatValue(result.marketData.data.circulating_supply)}\n`; + output += `💰 Circulating Market Cap: ${formatValue(result.marketData.data.circulating_marketcap)}\n`; + } + + if (result.tradeData?.data) { + output += `\n`; + output += `Trade Data:\n`; + output += `👥 Holders: ${result.tradeData.data.holder}\n`; + output += `📊 Unique Wallets (24h): ${result.tradeData.data.unique_wallet_24h}\n`; + output += `📉 Price Change (24h): ${formatPercentChange(result.tradeData.data.price_change_24h_percent)}\n`; + output += `💸 Volume (24h USD): ${formatValue(result.tradeData.data.volume_24h_usd)}\n`; + output += `💵 Current Price: $${formatPrice(result.tradeData.data.price)}\n`; + } + + if (result.security?.data) { + output += `\n`; + output += `Ownership Distribution:\n`; + output += `🏠 Owner Address: ${shortenAddress(result.security.data.ownerAddress)}\n`; + output += `👨‍💼 Creator Address: ${shortenAddress(result.security.data.creatorAddress)}\n`; + output += `📦 Total Supply: ${formatValue(result.security.data.totalSupply)}\n`; + output += result.security.data.proxied + ? `🌿 Mintable: ${result.security.data.mintable ?? "N/A"}\n` + : ""; + output += result.security.data.proxy + ? `🔄 Proxied: ${result.security.data.proxy ?? "N/A"}\n` + : ""; + output += result.security.data.securityChecks + ? `🔍 Security Checks: ${JSON.stringify(result.security.data.securityChecks)}\n` + : ""; + } + + return output ?? `No results found for ${address.address}`; +}; diff --git a/packages/plugin-birdeye/src/actions/token-search-symbol.ts b/packages/plugin-birdeye/src/actions/token-search-symbol.ts new file mode 100644 index 000000000000..bcf7e33c6d3e --- /dev/null +++ b/packages/plugin-birdeye/src/actions/token-search-symbol.ts @@ -0,0 +1,225 @@ +import { + Action, + ActionExample, + elizaLogger, + IAgentRuntime, + Memory, + State, +} from "@elizaos/core"; +import { BirdeyeProvider } from "../birdeye"; +import { TokenResult } from "../types/api/search"; +import { + extractSymbols, + formatPercentChange, + formatPrice, + formatValue, +} from "../utils"; + +// "strict" requires a $ prefix and will match $SOL, $ai16z, $BTC, etc. +// "loose" will match $SOL, SOL, SOLANA, etc. and does not require a $ prefix but may interpret any other acronyms as symbols to search for +const SYMBOL_SEARCH_MODE = "strict"; + +export const tokenSearchSymbolAction = { + name: "TOKEN_SEARCH_SYMBOL", + similes: [ + "SEARCH_TOKEN_SYMBOL", + "FIND_TOKEN_SYMBOL", + "LOOKUP_TOKEN_SYMBOL", + "CHECK_TOKEN_SYMBOL", + "GET_TOKEN_BY_SYMBOL", + "SYMBOL_SEARCH", + "SYMBOL_LOOKUP", + "SYMBOL_CHECK", + "TOKEN_SYMBOL_INFO", + "TOKEN_SYMBOL_DETAILS", + "TOKEN_SYMBOL_LOOKUP", + "TOKEN_SYMBOL_SEARCH", + "TOKEN_SYMBOL_CHECK", + "TOKEN_SYMBOL_QUERY", + "TOKEN_SYMBOL_FIND", + "GET_TOKEN_INFO", + "TOKEN_INFO", + "TOKEN_REPORT", + "TOKEN_ANALYSIS", + "TOKEN_OVERVIEW", + "TOKEN_SUMMARY", + "TOKEN_INSIGHT", + "TOKEN_DATA", + "TOKEN_STATS", + "TOKEN_METRICS", + "TOKEN_PROFILE", + "TOKEN_REVIEW", + "TOKEN_CHECK", + "TOKEN_LOOKUP", + "TOKEN_FIND", + "TOKEN_DISCOVER", + "TOKEN_EXPLORE", + ], + description: + "Search for detailed token information including security and trade data by symbol", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: any, + callback?: any + ) => { + try { + const provider = new BirdeyeProvider(runtime.cacheManager); + + // get all symbols from the message that match (i.e. $SOL, $ETH, $BTC, etc.). If you want to match more loosely, use "loose" instead of "strict" and it will match $SOL, SOL, SOLANA, etc. + const symbols = extractSymbols( + message.content.text, + SYMBOL_SEARCH_MODE + ); + + elizaLogger.info( + `Searching Birdeye provider for ${symbols.length} symbols` + ); + + // for each symbol, do a search in Birdeye. This will return a list of token results that may be amatch to the token symbol. + const results = await Promise.all( + symbols.map((symbol) => + provider.fetchSearchTokenMarketData({ + keyword: symbol, + sort_by: "volume_24h_usd", + sort_type: "desc", + chain: "all", + limit: 5, + }) + ) + ); + + // get filter the resuls to only include the token results and then filter the results to only include the ones that match the symbol + const validResults = results.map((r, i) => + r.data.items + .filter((item) => item.type === "token" && item.result) + .flatMap((item) => + (item.result as TokenResult[]).filter( + (r) => + r.symbol?.toLowerCase() === + symbols[i].toLowerCase() + ) + ) + ) as TokenResult[][]; + + if (validResults.length === 0) { + return true; + } + + const completeResults = `I performed a search for the token symbols you requested and found the following results (for more details search by contract address):\n\n${validResults + .map( + (result, i) => + `${formatTokenSummary(symbols[i], i, result)}` + ) + .join("\n")}`; + + callback?.({ text: completeResults }); + return true; + } catch (error) { + console.error("Error in searchTokens handler:", error.message); + callback?.({ text: `Error: ${error.message}` }); + return false; + } + }, + validate: async (_runtime: IAgentRuntime, message: Memory) => { + const symbols = extractSymbols( + message.content.text, + SYMBOL_SEARCH_MODE + ); + return symbols.length > 0; + }, + examples: [ + [ + { + user: "user", + content: { + text: "Search for $SOL and $ETH", + action: "SEARCH_TOKENS", + }, + }, + { + user: "user", + content: { + text: "Find information about $BTC", + action: "TOKEN_SEARCH", + }, + }, + { + user: "user", + content: { + text: "Look up $WETH token", + action: "LOOKUP_TOKENS", + }, + }, + { + user: "user", + content: { + text: "Tell me about SOL", + action: "CHECK_TOKEN", + }, + }, + { + user: "user", + content: { + text: "Give me details on $ADA", + action: "TOKEN_DETAILS", + }, + }, + { + user: "user", + content: { + text: "What can you tell me about $DOGE?", + action: "TOKEN_INFO", + }, + }, + { + user: "user", + content: { + text: "I need a report on $XRP", + action: "TOKEN_REPORT", + }, + }, + { + user: "user", + content: { + text: "Analyze $BNB for me", + action: "TOKEN_ANALYSIS", + }, + }, + { + user: "user", + content: { + text: "Overview of $LTC", + action: "TOKEN_OVERVIEW", + }, + }, + ], + ] as ActionExample[][], +} as Action; + +const formatTokenSummary = ( + symbol: string, + index: number, + tokens: TokenResult[] +) => { + return tokens + .map((token, i) => { + let output = ``; + if (i === 0) { + output += `Search Results for ${symbol}:\n\n`; + } + output += `Search Result #${tokens.length > 0 ? i + 1 : ""}:\n`; + output += `🔖 Symbol: $${token.symbol.toUpperCase()}\n`; + output += `🔗 Address: ${token.address}\n`; + output += `🌐 Network: ${token.network.toUpperCase()}\n`; + output += `💵 Price: ${formatPrice(token.price)} (${formatPercentChange(token.price_change_24h_percent)})\n`; + output += `💸 Volume (24h USD): ${formatValue(token.volume_24h_usd)}\n`; + output += token.market_cap + ? `💰 Market Cap: ${formatValue(token.market_cap)}\n` + : ""; + output += token.fdv ? `🌊 FDV: ${formatValue(token.fdv)}\n` : ""; + return output; + }) + .join("\n"); +}; diff --git a/packages/plugin-birdeye/src/actions/wallet-search-address.ts b/packages/plugin-birdeye/src/actions/wallet-search-address.ts new file mode 100644 index 000000000000..1ec2fc20eecd --- /dev/null +++ b/packages/plugin-birdeye/src/actions/wallet-search-address.ts @@ -0,0 +1,176 @@ +import { + Action, + ActionExample, + elizaLogger, + IAgentRuntime, + Memory, + State, +} from "@elizaos/core"; +import { BirdeyeProvider } from "../birdeye"; +import { WalletPortfolioResponse } from "../types/api/wallet"; +import { BaseAddress } from "../types/shared"; +import { extractAddresses } from "../utils"; + +export const walletSearchAddressAction = { + name: "WALLET_SEARCH_ADDRESS", + similes: [ + "SEARCH_WALLET_ADDRESS", + "FIND_WALLET_ADDRESS", + "LOOKUP_WALLET_ADDRESS", + "CHECK_WALLET_ADDRESS", + "GET_WALLET_BY_ADDRESS", + "WALLET_ADDRESS_INFO", + "WALLET_ADDRESS_LOOKUP", + "WALLET_ADDRESS_SEARCH", + "WALLET_ADDRESS_CHECK", + "WALLET_ADDRESS_DETAILS", + "WALLET_CONTRACT_SEARCH", + "WALLET_CONTRACT_LOOKUP", + "WALLET_CONTRACT_INFO", + "WALLET_CONTRACT_CHECK", + "VERIFY_WALLET_ADDRESS", + "VALIDATE_WALLET_ADDRESS", + "GET_WALLET_INFO", + "WALLET_INFO", + "WALLET_REPORT", + "WALLET_ANALYSIS", + "WALLET_OVERVIEW", + "WALLET_SUMMARY", + "WALLET_INSIGHT", + "WALLET_DATA", + "WALLET_STATS", + "WALLET_METRICS", + "WALLET_PROFILE", + "WALLET_REVIEW", + "WALLET_CHECK", + "WALLET_LOOKUP", + "WALLET_FIND", + "WALLET_DISCOVER", + "WALLET_EXPLORE", + ], + description: + "Search for detailed wallet information including portfolio and transaction data by address", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: any, + callback?: any + ) => { + try { + const provider = new BirdeyeProvider(runtime.cacheManager); + + // get all wallet addresses from the message + const addresses = extractAddresses(message.content.text); + + elizaLogger.info( + `Searching Birdeye provider for ${addresses.length} addresses` + ); + + // for each symbol, do a search in Birdeye. This will return a list of token results that may be amatch to the token symbol. + const results: WalletPortfolioResponse[] = await Promise.all( + addresses.map(async ({ address, chain: addressChain }) => { + // address detection can't distinguish between evm chains, so we currently only do address search on ETH for EVM addresses. Future support will be added for other chains if the user requests it. + const chain = + addressChain === "evm" ? "ethereum" : addressChain; + return provider.fetchWalletPortfolio( + { + wallet: address, + }, + { + headers: { + chain: chain, + }, + } + ); + }) + ); + + console.log(results); + + const completeResults = `I performed a search for the wallet addresses you requested and found the following results:\n\n${results + .map( + (result, i) => + `${formatWalletReport(addresses[i], results.length, i, result)}` + ) + .join("\n\n")}`; + + callback?.({ text: completeResults }); + return true; + } catch (error) { + console.error("Error in searchTokens handler:", error.message); + callback?.({ text: `Error: ${error.message}` }); + return false; + } + }, + validate: async (_runtime: IAgentRuntime, message: Memory) => { + const addresses = extractAddresses(message.content.text); + return addresses.length > 0; + }, + examples: [ + [ + { + user: "user", + content: { + text: "Search wallet 0x1234567890abcdef1234567890abcdef12345678", + action: "WALLET_SEARCH_ADDRESS", + }, + }, + { + user: "user", + content: { + text: "Look up wallet address HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH", + action: "WALLET_ADDRESS_LOOKUP", + }, + }, + { + user: "user", + content: { + text: "Check this address: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", + action: "CHECK_WALLET_ADDRESS", + }, + }, + { + user: "user", + content: { + text: "Get wallet info for 5yBYpGQRHPz4i5FkVnP9h9VTJBMnwgHRe5L5gw2bwp9q", + action: "WALLET_INFO", + }, + }, + { + user: "user", + content: { + text: "Show me portfolio for 0x3cD751E6b0078Be393132286c442345e5DC49699", + action: "WALLET_OVERVIEW", + }, + }, + ], + ] as ActionExample[][], +} as Action; + +// take all the details of the results and present to the user +const formatWalletReport = ( + address: BaseAddress, + totalResults: number, + index: number, + result: WalletPortfolioResponse +) => { + const tokens = result.data.items.slice(0, 10) || []; + const totalValue = tokens.reduce( + (sum, token) => sum + (token.valueUsd || 0), + 0 + ); + + let header = `Wallet Result ${totalResults > 1 ? `#${index + 1}` : ""}\n`; + header += `👛 Address ${address.address}*\n`; + header += `💰 Total Value: $${totalValue.toLocaleString()}\n`; + header += `🔖 Top Holdings:`; + const tokenList = tokens + .map( + (token) => + `• $${token.symbol.toUpperCase()}: $${token.valueUsd?.toLocaleString()} (${token.uiAmount?.toFixed(4)} tokens)` + ) + .join("\n"); + + return `${header}\n${tokenList}`; +}; diff --git a/packages/plugin-birdeye/src/birdeye.ts b/packages/plugin-birdeye/src/birdeye.ts new file mode 100644 index 000000000000..a1e55bce88e0 --- /dev/null +++ b/packages/plugin-birdeye/src/birdeye.ts @@ -0,0 +1,803 @@ +import { elizaLogger, ICacheManager, settings } from "@elizaos/core"; +import NodeCache from "node-cache"; +import * as path from "path"; +import { + API_BASE_URL, + BIRDEYE_ENDPOINTS, + DEFAULT_MAX_RETRIES, + DEFAULT_SUPPORTED_SYMBOLS, + RETRY_DELAY_MS, +} from "./constants"; +import { BirdeyeApiParams, BirdeyeApiResponse } from "./types/api/common"; +import { + BaseQuoteParams, + BaseQuoteResponse, + DefiHistoryPriceParams, + DefiHistoryPriceResponse, + DefiMultiPriceParams, + DefiMultiPriceParamsPOST, + DefiMultiPriceResponse, + DefiNetworksResponse, + DefiPriceParams, + DefiPriceResponse, + DefiTradesTokenParams, + DefiTradesTokenResponse, + HistoricalPriceUnixParams, + HistoricalPriceUnixResponse, + MultiPriceVolumeParams, + MultiPriceVolumeResponse, + OHLCVParams, + OHLCVResponse, + PriceVolumeParams, + PriceVolumeResponse, +} from "./types/api/defi"; +import { + OHLCVPairParams, + OHLCVPairResponse, + PairOverviewMultiParams, + PairOverviewMultiResponse, + PairOverviewSingleParams, + PairOverviewSingleResponse, +} from "./types/api/pair"; +import { + TokenMarketSearchParams, + TokenMarketSearchResponse, +} from "./types/api/search"; +import { + AllMarketsParams, + AllMarketsResponse, + MintBurnParams, + MintBurnResponse, + NewListingParams, + NewListingResponse, + TokenCreationInfoParams, + TokenCreationInfoResponse, + TokenHoldersParams, + TokenHoldersResponse, + TokenListParams, + TokenListResponse, + TokenListV2Response, + TokenMarketDataParams, + TokenMarketDataResponse, + TokenMetadataMultiParams, + TokenMetadataMultiResponse, + TokenMetadataSingleParams, + TokenMetadataSingleResponse, + TokenOverviewParams, + TokenOverviewResponse, + TokenSecurityParams, + TokenSecurityResponse, + TokenTradeDataMultiParams, + TokenTradeDataMultiResponse, + TokenTradeDataSingleParams, + TokenTradeDataSingleResponse, + TokenTrendingParams, + TokenTrendingResponse, + TopTradersParams, + TopTradersResponse, +} from "./types/api/token"; +import { + GainersLosersParams, + GainersLosersResponse, + TraderTransactionsSeekParams, + TraderTransactionsSeekResponse, +} from "./types/api/trader"; +import { + WalletPortfolioMultichainParams, + WalletPortfolioMultichainResponse, + WalletPortfolioParams, + WalletPortfolioResponse, + WalletSimulationParams, + WalletSimulationResponse, + WalletTokenBalanceParams, + WalletTokenBalanceResponse, + WalletTransactionHistoryMultichainParams, + WalletTransactionHistoryMultichainResponse, + WalletTransactionHistoryParams, + WalletTransactionHistoryResponse, +} from "./types/api/wallet"; +import { convertToStringParams, waitFor } from "./utils"; + +type FetchParams = T & { + headers?: Record; +}; + +class BaseCachedProvider { + private cache: NodeCache; + + constructor( + private cacheManager: ICacheManager, + private cacheKey, + ttl?: number + ) { + this.cache = new NodeCache({ stdTTL: ttl || 300 }); + } + + private readFsCache(key: string): Promise { + return this.cacheManager.get(path.join(this.cacheKey, key)); + } + + private writeFsCache(key: string, data: T): Promise { + return this.cacheManager.set(path.join(this.cacheKey, key), data, { + expires: Date.now() + 5 * 60 * 1000, + }); + } + + public async readFromCache(key: string): Promise { + // get memory cache first + const val = this.cache.get(key); + if (val) { + return val; + } + + const fsVal = await this.readFsCache(key); + if (fsVal) { + // set to memory cache + this.cache.set(key, fsVal); + } + + return fsVal; + } + + public async writeToCache(key: string, val: T): Promise { + // Set in-memory cache + this.cache.set(key, val); + + // Write to file-based cache + await this.writeFsCache(key, val); + } +} + +export class BirdeyeProvider extends BaseCachedProvider { + private symbolMap: Record; + private maxRetries: number; + + constructor( + cacheManager: ICacheManager, + symbolMap?: Record, + maxRetries?: number + ) { + super(cacheManager, "birdeye/data"); + this.symbolMap = symbolMap || DEFAULT_SUPPORTED_SYMBOLS; + this.maxRetries = maxRetries || DEFAULT_MAX_RETRIES; + } + + /* + * COMMON FETCH FUNCTIONS + */ + private async fetchWithRetry( + url: string, + options: RequestInit = {} + ): Promise { + let attempts = 0; + + // allow the user to override the chain + const chain = + options.headers?.["x-chain"] || settings.BIRDEYE_CHAIN || "solana"; + + while (attempts < this.maxRetries) { + attempts++; + try { + const resp = await fetch(url, { + ...options, + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "x-chain": chain, + "X-API-KEY": settings.BIRDEYE_API_KEY || "", + ...options.headers, + }, + }); + + if (!resp.ok) { + const errorText = await resp.text(); + throw new Error( + `HTTP error! status: ${resp.status}, message: ${errorText}` + ); + } + + const rawData = await resp.json(); + // If the response already has data and success fields, return it + if ( + rawData.data !== undefined && + rawData.success !== undefined + ) { + return rawData as T; + } + // Otherwise wrap the response in the expected format + return { + data: rawData, + success: true, + } as T; + } catch (error) { + if (attempts === this.maxRetries) { + // failed after all + throw error; + } + await waitFor(RETRY_DELAY_MS); + } + } + } + + private async fetchWithCacheAndRetry({ + url, + params, + headers, + method = "GET", + }: { + url: string; + params?: BirdeyeApiParams; + headers?: Record; + method?: "GET" | "POST"; + }): Promise { + const stringParams = convertToStringParams(params); + const fullUrl = `${API_BASE_URL}${url}`; + const cacheKey = + method === "GET" + ? `${url}?${new URLSearchParams(stringParams)}` + : `${url}:${JSON.stringify(params)}`; + + const val = await this.readFromCache(cacheKey); + if (val) return val as T; + + const urlWithParams = + method === "GET" && params + ? `${fullUrl}?${new URLSearchParams(stringParams)}` + : fullUrl; + + elizaLogger.info(`Birdeye fetch: ${urlWithParams}`); + + const data = await this.fetchWithRetry(urlWithParams, { + method, + headers, + ...(method === "POST" && + params && { body: JSON.stringify(params) }), + }); + + await this.writeToCache(cacheKey, data); + return data as T; + } + + /* + * DEFI FETCH FUNCTIONS + */ + + // Get a list of all supported networks. + public async fetchDefiSupportedNetworks() { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.networks, + }); + } + + // Get price update of a token. + public async fetchDefiPrice( + params: DefiPriceParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.price, + params, + headers: options.headers, + }); + } + + // Get price updates of multiple tokens in a single API call. Maximum 100 tokens + public async fetchDefiPriceMultiple( + params: DefiMultiPriceParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.price_multi, + params, + headers: options.headers, + }); + } + + // Get price updates of multiple tokens in a single API call. Maximum 100 tokens + public async fetchDefiPriceMultiple_POST( + params: DefiMultiPriceParamsPOST, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.price_multi_POST, + params, + headers: options.headers, + method: "POST", + }); + } + + // Get historical price line chart of a token. + public async fetchDefiPriceHistorical( + params: DefiHistoryPriceParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.history_price, + params, + headers: options.headers, + }); + } + + // Get historical price by unix timestamp + public async fetchDefiPriceHistoricalByUnixTime( + params: HistoricalPriceUnixParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.historical_price_unix, + params, + headers: options.headers, + }); + } + + // Get list of trades of a certain token. + public async fetchDefiTradesToken( + params: DefiTradesTokenParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.trades_token, + params, + headers: options.headers, + }); + } + + // Get list of trades of a certain pair or market. + public async fetchDefiTradesPair( + params: DefiTradesTokenParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.trades_token, + params, + headers: options.headers, + }); + } + + // Get list of trades of a token with time bound option. + public async fetchDefiTradesTokenSeekByTime( + params: DefiTradesTokenParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.trades_token_seek, + params, + headers: options.headers, + }); + } + + // Get list of trades of a certain pair or market with time bound option. + public async fetchDefiTradesPairSeekByTime( + params: DefiTradesTokenParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.trades_pair_seek, + params, + headers: options.headers, + }); + } + + // Get OHLCV price of a token. + public async fetchDefiOHLCV( + params: OHLCVParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.ohlcv, + params, + headers: options.headers, + }); + } + + // Get OHLCV price of a pair. + public async fetchDefiOHLCVPair( + params: OHLCVPairParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.ohlcv_pair, + params, + headers: options.headers, + }); + } + + // Get OHLCV price of a base-quote pair. + public async fetchDefiOHLCVBaseQuote( + params: BaseQuoteParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.ohlcv_base_quote, + params, + headers: options.headers, + }); + } + + // Get price and volume of a token. + public async fetchDefiPriceVolume( + params: PriceVolumeParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.price_volume, + params, + headers: options.headers, + }); + } + + // Get price and volume updates of maximum 50 tokens + public async fetchDefiPriceVolumeMulti_POST( + params: MultiPriceVolumeParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.price_volume_multi_POST, + params, + headers: options.headers, + method: "POST", + }); + } + + /* + * TOKEN FETCH FUNCTIONS + */ + + // Get token list of any supported chains. + public async fetchTokenList( + params: TokenListParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.list_all, + params, + headers: options.headers, + }); + } + + // Get token security of any supported chains. + public async fetchTokenSecurityByAddress( + params: TokenSecurityParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.security, + params, + headers: options.headers, + }); + } + + // Get overview of a token. + public async fetchTokenOverview( + params: TokenOverviewParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.overview, + params, + headers: options.headers, + }); + } + + // Get creation info of token + public async fetchTokenCreationInfo( + params: TokenCreationInfoParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.creation_info, + params, + headers: options.headers, + }); + } + + // Retrieve a dynamic and up-to-date list of trending tokens based on specified sorting criteria. + public async fetchTokenTrending( + params?: TokenTrendingParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.trending, + params, + headers: options.headers, + }); + } + + // This endpoint facilitates the retrieval of a list of tokens on a specified blockchain network. This upgraded version is exclusive to business and enterprise packages. By simply including the header for the requested blockchain without any query parameters, business and enterprise users can get the full list of tokens on the specified blockchain in the URL returned in the response. This removes the need for the limit response of the previous version and reduces the workload of making multiple calls. + public async fetchTokenListV2_POST( + params: FetchParams> + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.list_all_v2_POST, + params, + headers: params.headers, + method: "POST", + }); + } + + // Get newly listed tokens of any supported chains. + public async fetchTokenNewListing( + params?: NewListingParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.new_listing, + params, + headers: options?.headers, + }); + } + + // Get top traders of given token. + public async fetchTokenTopTraders( + params: TopTradersParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.top_traders, + params, + headers: options.headers, + }); + } + + // The API provides detailed information about the markets for a specific cryptocurrency token on a specified blockchain. Users can retrieve data for one or multiple markets related to a single token. This endpoint requires the specification of a token address and the blockchain to filter results. Additionally, it supports optional query parameters such as offset, limit, and required sorting by liquidity or sort type (ascending or descending) to refine the output. + public async fetchTokenAllMarketsList( + params: AllMarketsParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.all_markets, + params, + headers: options.headers, + }); + } + + // Get metadata of single token + public async fetchTokenMetadataSingle( + params: TokenMetadataSingleParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.metadata_single, + params, + headers: options.headers, + }); + } + + // Get metadata of multiple tokens + public async fetchTokenMetadataMulti( + params: TokenMetadataMultiParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.metadata_multi, + params, + headers: options.headers, + }); + } + + // Get market data of single token + public async fetchTokenMarketData( + params: TokenMarketDataParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.market_data, + params, + headers: options.headers, + }); + } + + // Get trade data of single token + public async fetchTokenTradeDataSingle( + params: TokenTradeDataSingleParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.trade_data_single, + params, + headers: options.headers, + }); + } + + // Get trade data of multiple tokens + public async fetchTokenTradeDataMultiple( + params: TokenTradeDataMultiParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.trade_data_multi, + params, + headers: options.headers, + }); + } + + // Get top holder list of the given token + public async fetchTokenHolders( + params: TokenHoldersParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.holders, + params, + headers: options.headers, + }); + } + + // Get mint/burn transaction list of the given token. Only support solana currently + public async fetchTokenMintBurn( + params: MintBurnParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.token.mint_burn, + params, + headers: options.headers, + }); + } + + /* + * WALLET FETCH FUNCTIONS + */ + public async fetchWalletSupportedNetworks( + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.defi.networks, + headers: options.headers, + }); + } + + public async fetchWalletPortfolio( + params: WalletPortfolioParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.wallet.portfolio, + params, + headers: options.headers, + }); + } + + /** + * @deprecated This endpoint will be decommissioned on Feb 1st, 2025. + */ + public async fetchWalletPortfolioMultichain( + params: WalletPortfolioMultichainParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.wallet.portfolio_multichain, + params, + headers: options.headers, + }); + } + + public async fetchWalletTokenBalance( + params: WalletTokenBalanceParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.wallet.token_balance, + params, + headers: options.headers, + }); + } + + public async fetchWalletTransactionHistory( + params: WalletTransactionHistoryParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.wallet.transaction_history, + params, + headers: options.headers, + }); + } + + /** + * @deprecated This endpoint will be decommissioned on Feb 1st, 2025. + */ + public async fetchWalletTransactionHistoryMultichain( + params: WalletTransactionHistoryMultichainParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry( + { + url: BIRDEYE_ENDPOINTS.wallet.transaction_history_multichain, + params, + headers: options.headers, + } + ); + } + + public async fetchWalletTransactionSimulate_POST( + params: WalletSimulationParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.wallet.transaction_simulation_POST, + params, + headers: options.headers, + method: "POST", + }); + } + + /* + * TRADER FETCH FUNCTIONS + */ + + // The API provides detailed information top gainers/losers + public async fetchTraderGainersLosers( + params: GainersLosersParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.trader.gainers_losers, + params, + headers: options.headers, + }); + } + + // Get list of trades of a trader with time bound option. + public async fetchTraderTransactionsSeek( + params: TraderTransactionsSeekParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.trader.trades_seek, + params, + headers: options.headers, + }); + } + + /* + * PAIR FETCH FUNCTIONS + */ + public async fetchPairOverviewSingle( + params: PairOverviewSingleParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.pair.overview_single, + params, + headers: options.headers, + }); + } + + // Get overview of multiple pairs + public async fetchMultiPairOverview( + params: PairOverviewMultiParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.pair.overview_multi, + params, + headers: options.headers, + }); + } + + public async fetchPairOverviewMultiple( + params: PairOverviewMultiParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.pair.overview_multi, + params, + headers: options.headers, + }); + } + + /* + * SEARCH FETCH FUNCTIONS + */ + public async fetchSearchTokenMarketData( + params: TokenMarketSearchParams, + options: { headers?: Record } = {} + ) { + return this.fetchWithCacheAndRetry({ + url: BIRDEYE_ENDPOINTS.search.token_market, + params, + headers: options.headers, + }); + } +} diff --git a/packages/plugin-birdeye/src/constants.ts b/packages/plugin-birdeye/src/constants.ts new file mode 100644 index 000000000000..e9b74ad18563 --- /dev/null +++ b/packages/plugin-birdeye/src/constants.ts @@ -0,0 +1,71 @@ +export const DEFAULT_MAX_RETRIES = 3; + +export const DEFAULT_SUPPORTED_SYMBOLS = { + SOL: "So11111111111111111111111111111111111111112", + BTC: "qfnqNqs3nCAHjnyCgLRDbBtq4p2MtHZxw8YjSyYhPoL", + ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + Example: "2weMjPLLybRMMva1fM3U31goWWrCpF59CHWNhnCJ9Vyh", +}; + +export const API_BASE_URL = "https://public-api.birdeye.so"; + +export const RETRY_DELAY_MS = 2_000; + +export const BIRDEYE_ENDPOINTS = { + defi: { + networks: "/defi/networks", // https://docs.birdeye.so/reference/get_defi-networks + price: "/defi/price", // https://docs.birdeye.so/reference/get_defi-price + price_multi: "/defi/multi_price", // https://docs.birdeye.so/reference/get_defi-multi-price + price_multi_POST: "/defi/multi_price", // https://docs.birdeye.so/reference/post_defi-multi-price + history_price: "/defi/history_price", // https://docs.birdeye.so/reference/get_defi-history-price + historical_price_unix: "/defi/historical_price_unix", // https://docs.birdeye.so/reference/get_defi-historical-price-unix + trades_token: "/defi/txs/token", // https://docs.birdeye.so/reference/get_defi-txs-token + trades_pair: "/defi/txs/pair", // https://docs.birdeye.so/reference/get_defi-txs-pair + trades_token_seek: "/defi/txs/token/seek_by_time", // https://docs.birdeye.so/reference/get_defi-txs-token-seek-by-time + trades_pair_seek: "/defi/txs/pair/seek_by_time", // https://docs.birdeye.so/reference/get_defi-txs-pair-seek-by-time + ohlcv: "/defi/ohlcv", // https://docs.birdeye.so/reference/get_defi-ohlcv + ohlcv_pair: "/defi/ohlcv/pair", // https://docs.birdeye.so/reference/get_defi-ohlcv-pair + ohlcv_base_quote: "/defi/ohlcv/base_quote", // https://docs.birdeye.so/reference/get_defi-ohlcv-base-quote + price_volume: "/defi/price_volume/single", // https://docs.birdeye.so/reference/get_defi-price-volume-single + price_volume_multi: "/defi/price_volume/multi", // https://docs.birdeye.so/reference/get_defi-price-volume-multi + price_volume_multi_POST: "/defi/price_volume/multi", // https://docs.birdeye.so/reference/post_defi-price-volume-multi + }, + token: { + list_all: "/defi/tokenlist", // https://docs.birdeye.so/reference/get_defi-tokenlist + security: "/defi/token_security", // https://docs.birdeye.so/reference/get_defi-token-security + overview: "/defi/token_overview", // https://docs.birdeye.so/reference/get_defi-token-overview + creation_info: "/defi/token_creation_info", // https://docs.birdeye.so/reference/get_defi-token-creation-info + trending: "/defi/token_trending", // https://docs.birdeye.so/reference/get_defi-token-trending + list_all_v2_POST: "/defi/v2/tokens/all", // https://docs.birdeye.so/reference/post_defi-v2-tokens-all + new_listing: "/defi/v2/tokens/new_listing", // https://docs.birdeye.so/reference/get_defi-v2-tokens-new-listing + top_traders: "/defi/v2/tokens/top_traders", // https://docs.birdeye.so/reference/get_defi-v2-tokens-top-traders + all_markets: "/defi/v2/markets", // https://docs.birdeye.so/reference/get_defi-v2-markets + metadata_single: "/defi/v3/token/meta-data/single", // https://docs.birdeye.so/reference/get_defi-v3-token-meta-data-single + metadata_multi: "/defi/v3/token/meta-data/multiple", // https://docs.birdeye.so/reference/get_defi-v3-token-meta-data-multiple + market_data: "/defi/v3/token/market-data", // https://docs.birdeye.so/reference/get_defi-v3-token-market-data + trade_data_single: "/defi/v3/token/trade-data/single", // https://docs.birdeye.so/reference/get_defi-v3-token-trade-data-single + trade_data_multi: "/defi/v3/token/trade-data/multiple", // https://docs.birdeye.so/reference/get_defi-v3-token-trade-data-multiple + holders: "/defi/v3/token/holder", // https://docs.birdeye.so/reference/get_defi-v3-token-holder + mint_burn: "/defi/v3/token/mint-burn-txs", // https://docs.birdeye.so/reference/get_defi-v3-token-mint-burn-txs + }, + wallet: { + networks: "/v1/wallet/list_supported_chain", // https://docs.birdeye.so/reference/get_v1-wallet-list-supported-chain + portfolio: "/v1/wallet/token_list", // https://docs.birdeye.so/reference/get_v1-wallet-token-list + portfolio_multichain: "/v1/wallet/multichain_token_list", // https://docs.birdeye.so/reference/get_v1-wallet-multichain-token-list + token_balance: "/v1/wallet/token_balance", // https://docs.birdeye.so/reference/get_v1-wallet-token-balance + transaction_history: "/v1/wallet/tx_list", // https://docs.birdeye.so/reference/get_v1-wallet-tx-list + transaction_history_multichain: "/v1/wallet/multichain_tx_list", // https://docs.birdeye.so/reference/get_v1-wallet-multichain-tx-list + transaction_simulation_POST: "/v1/wallet/simulate", // https://docs.birdeye.so/reference/post_v1-wallet-simulate + }, + trader: { + gainers_losers: "/trader/gainers-losers", // https://docs.birdeye.so/reference/get_trader-gainers-losers + trades_seek: "/trader/txs/seek_by_time", // https://docs.birdeye.so/reference/get_trader-txs-seek-by-time + }, + pair: { + overview_multi: "/defi/v3/pair/overview/multiple", // https://docs.birdeye.so/reference/get_defi-v3-pair-overview-multiple + overview_single: "/defi/v3/pair/overview/single", // https://docs.birdeye.so/reference/get_defi-v3-pair-overview-single + }, + search: { + token_market: "/defi/v3/search", // https://docs.birdeye.so/reference/get_defi-v3-search + }, +}; diff --git a/packages/plugin-birdeye/src/index.ts b/packages/plugin-birdeye/src/index.ts new file mode 100644 index 000000000000..159835202289 --- /dev/null +++ b/packages/plugin-birdeye/src/index.ts @@ -0,0 +1,20 @@ +import { Plugin } from "@elizaos/core"; +import { tokenSearchAddressAction } from "./actions/token-search-address"; +import { tokenSearchSymbolAction } from "./actions/token-search-symbol"; +import { walletSearchAddressAction } from "./actions/wallet-search-address"; +import { agentPortfolioProvider } from "./providers/agent-portfolio-provider"; + +export const birdeyePlugin: Plugin = { + name: "birdeye", + description: "Birdeye Plugin for token data and analytics", + actions: [ + tokenSearchSymbolAction, + tokenSearchAddressAction, + walletSearchAddressAction, + // testAllEndpointsAction, // this action can be used to optionally test all endpoints + ], + evaluators: [], + providers: [agentPortfolioProvider], +}; + +export default birdeyePlugin; diff --git a/packages/plugin-birdeye/src/providers/agent-portfolio-provider.ts b/packages/plugin-birdeye/src/providers/agent-portfolio-provider.ts new file mode 100644 index 000000000000..04460780f2af --- /dev/null +++ b/packages/plugin-birdeye/src/providers/agent-portfolio-provider.ts @@ -0,0 +1,52 @@ +import { IAgentRuntime, Memory, Provider, State } from "@elizaos/core"; +import { BirdeyeProvider } from "../birdeye"; +import { extractChain, formatPortfolio } from "../utils"; + +/** + * Agent portfolio data provider that queries Birdeye API for the agent's wallet address. + * When a wallet address is set, this provider fetches portfolio data to give the agent + * context about the agent's holdings when responding to queries. + * + * The provider: + * - Validates the agent's wallet address + * - Fetches current portfolio data from Birdeye including token balances and metadata + * - Makes this portfolio context available to the agent for responding to user queries + * about their holdings, token values, etc. + */ +export const agentPortfolioProvider: Provider = { + get: async ( + runtime: IAgentRuntime, + _message: Memory, + _state?: State + ): Promise => { + try { + const provider = new BirdeyeProvider(runtime.cacheManager); + const walletAddr = runtime.getSetting("BIRDEYE_WALLET_ADDR"); + + if (!walletAddr) { + console.warn("No Birdeye wallet was specified"); + return ""; + } + + const chain = extractChain(walletAddr); + + const resp = await provider.fetchWalletPortfolio( + { + wallet: walletAddr, + }, + { + headers: { + chain, + }, + } + ); + + const portfolioText = formatPortfolio(resp); + + return `This is your wallet address: ${walletAddr}\n\nThis is your portfolio: [${portfolioText}]`; + } catch (error) { + console.error("Error fetching token data:", error); + return "Unable to fetch token information. Please try again later."; + } + }, +}; diff --git a/packages/plugin-birdeye/src/tests/birdeye.test.ts b/packages/plugin-birdeye/src/tests/birdeye.test.ts new file mode 100644 index 000000000000..cb9ac8d9f875 --- /dev/null +++ b/packages/plugin-birdeye/src/tests/birdeye.test.ts @@ -0,0 +1,510 @@ +import { ICacheManager } from "@elizaos/core"; +import { afterEach, beforeEach, describe, expect, it, Mock, vi } from "vitest"; +import { BirdeyeProvider } from "../birdeye"; +import { + API_BASE_URL, + BIRDEYE_ENDPOINTS, + DEFAULT_SUPPORTED_SYMBOLS, +} from "../constants"; +import { convertToStringParams } from "../utils"; + +describe("BirdeyeProvider", () => { + let cacheManager: ICacheManager; + let provider: BirdeyeProvider; + + beforeEach(() => { + cacheManager = { + get: vi.fn(), + set: vi.fn(), + } as unknown as ICacheManager; + provider = new BirdeyeProvider(cacheManager); + global.fetch = vi.fn(); + + vi.mock("@elizaos/core", () => ({ + settings: { + get: vi.fn().mockImplementation((key) => { + if (key === "BIRDEYE_API_KEY") + return process.env.BIRDEYE_API_KEY || "test-api-key"; + if (key === "BIRDEYE_CHAIN") return "solana"; + return undefined; + }), + }, + ICacheManager: vi.fn(), + })); + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + const mockSuccessResponse = (data: any) => { + (fetch as Mock).mockResolvedValue({ + ok: true, + json: async () => ({ data, success: true }), + }); + }; + + const expectFetchCall = ( + endpoint: string, + params?: any, + method = "GET" + ) => { + const url = `${API_BASE_URL}${endpoint}${ + params && method === "GET" + ? `?${new URLSearchParams(convertToStringParams(params))}` + : "" + }`; + + expect(fetch).toHaveBeenCalledWith(url, expect.anything()); + }; + + describe("Defi Endpoints", () => { + it("should fetch supported networks", async () => { + const mockData = { chains: ["solana", "ethereum"] }; + mockSuccessResponse(mockData); + const result = await provider.fetchDefiSupportedNetworks(); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.defi.networks); + }); + + it("should fetch price", async () => { + const mockData = { value: 100 }; + mockSuccessResponse(mockData); + const result = await provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.defi.price, { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + }); + + it("should fetch multiple prices", async () => { + const mockData = { prices: {} }; + mockSuccessResponse(mockData); + const result = await provider.fetchDefiPriceMultiple({ + list_address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.defi.price_multi, { + list_address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + }); + + it("should fetch multiple prices via POST", async () => { + const mockData = { prices: {} }; + mockSuccessResponse(mockData); + const result = await provider.fetchDefiPriceMultiple_POST({ + list_address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall( + BIRDEYE_ENDPOINTS.defi.price_multi_POST, + { list_address: DEFAULT_SUPPORTED_SYMBOLS.SOL }, + "POST" + ); + }); + + it("should fetch historical price", async () => { + const mockData = { items: [] }; + mockSuccessResponse(mockData); + const result = await provider.fetchDefiPriceHistorical({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + type: "1H", + address_type: "token", + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.defi.history_price, { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + type: "1H", + address_type: "token", + }); + }); + }); + + describe("Token Endpoints", () => { + it("should fetch token list", async () => { + const mockData = { tokens: [] }; + mockSuccessResponse(mockData); + const result = await provider.fetchTokenList({}); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.token.list_all, {}); + }); + + it("should fetch token security", async () => { + const mockData = { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + totalSupply: 1000000, + mintable: false, + proxied: false, + ownerAddress: "owner123", + creatorAddress: "creator123", + securityChecks: { + honeypot: false, + trading_cooldown: false, + transfer_pausable: false, + is_blacklisted: false, + is_whitelisted: false, + is_proxy: false, + is_mintable: false, + can_take_back_ownership: false, + hidden_owner: false, + anti_whale_modifiable: false, + is_anti_whale: false, + trading_pausable: false, + can_be_blacklisted: false, + is_true_token: true, + is_airdrop_scam: false, + slippage_modifiable: false, + is_honeypot: false, + transfer_pausable_time: false, + is_wrapped: false, + }, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchTokenSecurityByAddress({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.token.security, { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + }); + + it("should fetch token overview", async () => { + const mockData = { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + decimals: 9, + symbol: "SOL", + name: "Solana", + extensions: { + coingeckoId: "solana", + website: "https://solana.com", + telegram: "solana", + twitter: "solana", + description: "Solana blockchain token", + }, + logoURI: "https://example.com/sol.png", + liquidity: 1000000, + price: 100, + priceChange24hPercent: 5, + uniqueWallet24h: 1000, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchTokenOverview({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.token.overview, { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + }); + + it("should fetch token trending", async () => { + const mockData = { + updateUnixTime: 1234567890, + updateTime: "2024-01-01T00:00:00Z", + tokens: [], + total: 0, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchTokenTrending(); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.token.trending); + }); + }); + + describe("Wallet Endpoints", () => { + it("should fetch wallet portfolio", async () => { + const mockData = { + wallet: "test-wallet", + totalUsd: 1000, + items: [ + { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + name: "Solana", + symbol: "SOL", + decimals: 9, + balance: "1000000000", + uiAmount: 1, + chainId: "solana", + logoURI: "https://example.com/sol.png", + priceUsd: 100, + valueUsd: 100, + }, + ], + }; + mockSuccessResponse(mockData); + const result = await provider.fetchWalletPortfolio({ + wallet: "test-wallet", + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.wallet.portfolio, { + wallet: "test-wallet", + }); + }); + + it("should fetch wallet token balance", async () => { + const mockData = { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + name: "Solana", + symbol: "SOL", + decimals: 9, + balance: 1000000000, + uiAmount: 1, + chainId: "solana", + priceUsd: 100, + valueUsd: 100, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchWalletTokenBalance({ + wallet: "test-wallet", + token_address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.wallet.token_balance, { + wallet: "test-wallet", + token_address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + }); + }); + + describe("Pair Endpoints", () => { + it("should fetch pair overview", async () => { + const mockData = { + address: "pair-address", + name: "SOL/USDC", + base: { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + decimals: 9, + icon: "https://example.com/sol.png", + symbol: "SOL", + }, + quote: { + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + decimals: 6, + icon: "https://example.com/usdc.png", + symbol: "USDC", + }, + created_at: "2024-01-01T00:00:00Z", + source: "Raydium", + liquidity: 1000000, + liquidity_change_percentage_24h: 5, + price: 100, + volume_24h: 1000000, + volume_24h_change_percentage_24h: 10, + trade_24h: 1000, + trade_24h_change_percent: 15, + unique_wallet_24h: 500, + unique_wallet_24h_change_percent: 20, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchPairOverviewSingle({ + address: "pair-address", + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.pair.overview_single, { + address: "pair-address", + }); + }); + + it("should fetch multiple pair overview", async () => { + const mockData = { + "pair-1": { + address: "pair-1", + name: "SOL/USDC", + base: { + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + decimals: 9, + icon: "https://example.com/sol.png", + symbol: "SOL", + }, + quote: { + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + decimals: 6, + icon: "https://example.com/usdc.png", + symbol: "USDC", + }, + created_at: "2024-01-01T00:00:00Z", + source: "Raydium", + liquidity: 1000000, + liquidity_change_percentage_24h: 5, + price: 100, + volume_24h: 1000000, + volume_24h_change_percentage_24h: 10, + trade_24h: 1000, + trade_24h_change_percent: 15, + unique_wallet_24h: 500, + unique_wallet_24h_change_percent: 20, + }, + "pair-2": { + address: "pair-2", + name: "BTC/USDC", + base: { + address: DEFAULT_SUPPORTED_SYMBOLS.BTC, + decimals: 8, + icon: "https://example.com/btc.png", + symbol: "BTC", + }, + quote: { + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + decimals: 6, + icon: "https://example.com/usdc.png", + symbol: "USDC", + }, + created_at: "2024-01-01T00:00:00Z", + source: "Raydium", + liquidity: 2000000, + liquidity_change_percentage_24h: 3, + price: 50000, + volume_24h: 2000000, + volume_24h_change_percentage_24h: 8, + trade_24h: 500, + trade_24h_change_percent: 12, + unique_wallet_24h: 300, + unique_wallet_24h_change_percent: 15, + }, + }; + mockSuccessResponse(mockData); + const result = await provider.fetchMultiPairOverview({ + list_address: "pair-1,pair-2", + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.pair.overview_multi, { + list_address: "pair-1,pair-2", + }); + }); + }); + + describe("Search Endpoints", () => { + it("should fetch token market search", async () => { + const mockData = { + items: [ + { + type: "token", + result: [ + { + name: "Solana", + symbol: "SOL", + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + fdv: 1000000000, + market_cap: 500000000, + liquidity: 1000000, + volume_24h_change_percent: 10, + price: 100, + price_change_24h_percent: 5, + buy_24h: 500, + buy_24h_change_percent: 15, + sell_24h: 300, + sell_24h_change_percent: -10, + trade_24h: 800, + trade_24h_change_percent: 8, + unique_wallet_24h: 1000, + unique_view_24h_change_percent: 20, + last_trade_human_time: "2024-01-01T00:00:00Z", + last_trade_unix_time: 1704067200, + creation_time: "2020-01-01T00:00:00Z", + volume_24h_usd: 1000000, + logo_uri: "https://example.com/sol.png", + }, + ], + }, + ], + }; + mockSuccessResponse(mockData); + const result = await provider.fetchSearchTokenMarketData({ + keyword: "test", + }); + expect(result.data).toEqual(mockData); + expectFetchCall(BIRDEYE_ENDPOINTS.search.token_market, { + keyword: "test", + }); + }); + }); + + describe("Caching", () => { + beforeEach(() => { + // Reset the provider with a fresh cache manager for each test + cacheManager = { + get: vi.fn(), + set: vi.fn(), + } as unknown as ICacheManager; + provider = new BirdeyeProvider(cacheManager); + }); + + it("should use file system cache when available", async () => { + const mockResponse = { data: { value: 100 }, success: true }; + (cacheManager.get as Mock).mockResolvedValue(mockResponse); + + const result = await provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + + expect(result).toEqual(mockResponse); + expect(fetch).not.toHaveBeenCalled(); + expect(cacheManager.get).toHaveBeenCalled(); + }); + + it("should fetch and cache when cache misses", async () => { + const mockResponse = { data: { value: 100 }, success: true }; + (cacheManager.get as Mock).mockResolvedValue(null); + (fetch as Mock).mockResolvedValue({ + ok: true, + json: async () => mockResponse, + }); + + const result = await provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + + expect(result).toEqual(mockResponse); + expect(fetch).toHaveBeenCalledTimes(1); + expect(cacheManager.set).toHaveBeenCalled(); + }); + }); + + describe("Error Handling", () => { + it("should retry on failure", async () => { + (fetch as Mock) + .mockRejectedValueOnce(new Error("Network error")) + .mockRejectedValueOnce(new Error("Network error")) + .mockResolvedValueOnce({ + ok: true, + json: async () => ({ data: { value: 100 }, success: true }), + }); + + const result = await provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }); + + expect(result).toEqual({ data: { value: 100 }, success: true }); + expect(fetch).toHaveBeenCalledTimes(3); + }); + + it("should throw after max retries", async () => { + (fetch as Mock).mockRejectedValue(new Error("Network error")); + + await expect( + provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }) + ).rejects.toThrow("Network error"); + expect(fetch).toHaveBeenCalledTimes(3); // Default max retries + }); + + it("should handle non-200 responses", async () => { + (fetch as Mock).mockResolvedValue({ + ok: false, + status: 404, + text: async () => "Not found", + }); + + await expect( + provider.fetchDefiPrice({ + address: DEFAULT_SUPPORTED_SYMBOLS.SOL, + }) + ).rejects.toThrow("HTTP error! status: 404, message: Not found"); + expect(fetch).toHaveBeenCalledTimes(3); // Should still retry on HTTP errors + }); + }); +}); diff --git a/packages/plugin-birdeye/src/types/api/common.ts b/packages/plugin-birdeye/src/types/api/common.ts new file mode 100644 index 000000000000..59b5d9903b95 --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/common.ts @@ -0,0 +1,301 @@ +import { + BaseQuoteParams, + DefiHistoryPriceParams, + DefiMultiPriceParams, + DefiPriceParams, + HistoricalPriceUnixParams, + MultiPriceVolumeParams, + OHLCVParams, + PriceVolumeParams, +} from "./defi"; +import { + OHLCVPairParams, + PairOverviewMultiParams, + PairOverviewSingleParams, + PairTradesParams, +} from "./pair"; +import { TokenMarketSearchParams } from "./search"; +import { + AllMarketsParams, + MintBurnParams, + NewListingParams, + TokenCreationInfoParams, + TokenHoldersParams, + TokenListV2Params, + TokenMarketDataParams, + TokenMetadataMultiParams, + TokenMetadataSingleParams, + TokenOverviewParams, + TokenSecurityParams, + TokenTradeDataMultiParams, + TokenTradeDataSingleParams, + TokenTradesParams, + TopTradersParams, +} from "./token"; +import { GainersLosersParams, TraderTransactionsSeekParams } from "./trader"; +import { + WalletPortfolioMultichainParams, + WalletPortfolioParams, + WalletSimulationParams, + WalletTokenBalanceParams, + WalletTransactionHistoryMultichainParams, + WalletTransactionHistoryParams, +} from "./wallet"; + +export type BirdeyeApiParams = + | DefiPriceParams + | DefiMultiPriceParams + | DefiHistoryPriceParams + | HistoricalPriceUnixParams + | OHLCVParams + | PriceVolumeParams + | MultiPriceVolumeParams + | PairTradesParams + | OHLCVPairParams + | PairOverviewMultiParams + | PairOverviewSingleParams + | TokenMarketSearchParams + | TokenTradesParams + | TokenSecurityParams + | TokenOverviewParams + | TokenCreationInfoParams + | TokenListV2Params + | TokenMetadataMultiParams + | TokenTradeDataMultiParams + | GainersLosersParams + | TraderTransactionsSeekParams + | WalletPortfolioParams + | WalletTokenBalanceParams + | WalletTransactionHistoryParams + | BaseQuoteParams + | TokenHoldersParams + | MintBurnParams + | TopTradersParams + | AllMarketsParams + | NewListingParams + | TokenMetadataSingleParams + | TokenMarketDataParams + | TokenTradeDataSingleParams + | WalletPortfolioMultichainParams + | WalletTransactionHistoryMultichainParams + | WalletSimulationParams + | Record; + +export interface BirdeyeApiResponseWrapper { + data: T; + success: boolean; +} + +export type BirdeyeApiResponse = BirdeyeApiResponseWrapper; + +export type TimeInterval = + | "1m" + | "3m" + | "5m" + | "15m" + | "30m" + | "1H" + | "2H" + | "4H" + | "6H" + | "8H" + | "12H" + | "1D" + | "3D" + | "1W" + | "1M" + | "30m" + | "1h" + | "2h" + | "4h" + | "6h" + | "8h" + | "12h" + | "24h"; + +export interface TokenTradeData { + address: string; + holder: number; + market: number; + last_trade_unix_time: number; + last_trade_human_time: string; + price: number; + history_30m_price: number; + price_change_30m_percent: number; + history_1h_price: number; + price_change_1h_percent: number; + history_2h_price: number; + price_change_2h_percent: number; + history_4h_price: number; + price_change_4h_percent: number; + history_6h_price: number; + price_change_6h_percent: number; + history_8h_price: number; + price_change_8h_percent: number; + history_12h_price: number; + price_change_12h_percent: number; + history_24h_price: number; + price_change_24h_percent: number; + unique_wallet_30m: number; + unique_wallet_history_30m: number; + unique_wallet_30m_change_percent: number | null; + unique_wallet_1h: number; + unique_wallet_history_1h: number; + unique_wallet_1h_change_percent: number | null; + unique_wallet_2h: number; + unique_wallet_history_2h: number; + unique_wallet_2h_change_percent: number | null; + unique_wallet_4h: number; + unique_wallet_history_4h: number; + unique_wallet_4h_change_percent: number | null; + unique_wallet_8h: number; + unique_wallet_history_8h: number; + unique_wallet_8h_change_percent: number | null; + unique_wallet_24h: number; + unique_wallet_history_24h: number; + unique_wallet_24h_change_percent: number | null; + trade_30m: number; + trade_history_30m: number; + trade_30m_change_percent: number; + sell_30m: number; + sell_history_30m: number; + sell_30m_change_percent: number; + buy_30m: number; + buy_history_30m: number; + buy_30m_change_percent: number; + volume_30m: number; + volume_30m_usd: number; + volume_history_30m: number; + volume_history_30m_usd: number; + volume_30m_change_percent: number; + volume_buy_30m: number; + volume_buy_30m_usd: number; + volume_buy_history_30m: number; + volume_buy_history_30m_usd: number; + volume_buy_30m_change_percent: number; + volume_sell_30m: number; + volume_sell_30m_usd: number; + volume_sell_history_30m: number; + volume_sell_history_30m_usd: number; + volume_sell_30m_change_percent: number; + trade_1h: number; + trade_history_1h: number; + trade_1h_change_percent: number; + sell_1h: number; + sell_history_1h: number; + sell_1h_change_percent: number; + buy_1h: number; + buy_history_1h: number; + buy_1h_change_percent: number; + volume_1h: number; + volume_1h_usd: number; + volume_history_1h: number; + volume_history_1h_usd: number; + volume_1h_change_percent: number; + volume_buy_1h: number; + volume_buy_1h_usd: number; + volume_buy_history_1h: number; + volume_buy_history_1h_usd: number; + volume_buy_1h_change_percent: number; + volume_sell_1h: number; + volume_sell_1h_usd: number; + volume_sell_history_1h: number; + volume_sell_history_1h_usd: number; + volume_sell_1h_change_percent: number; + trade_2h: number; + trade_history_2h: number; + trade_2h_change_percent: number; + sell_2h: number; + sell_history_2h: number; + sell_2h_change_percent: number; + buy_2h: number; + buy_history_2h: number; + buy_2h_change_percent: number; + volume_2h: number; + volume_2h_usd: number; + volume_history_2h: number; + volume_history_2h_usd: number; + volume_2h_change_percent: number; + volume_buy_2h: number; + volume_buy_2h_usd: number; + volume_buy_history_2h: number; + volume_buy_history_2h_usd: number; + volume_buy_2h_change_percent: number; + volume_sell_2h: number; + volume_sell_2h_usd: number; + volume_sell_history_2h: number; + volume_sell_history_2h_usd: number; + volume_sell_2h_change_percent: number; + trade_4h: number; + trade_history_4h: number; + trade_4h_change_percent: number; + sell_4h: number; + sell_history_4h: number; + sell_4h_change_percent: number; + buy_4h: number; + buy_history_4h: number; + buy_4h_change_percent: number; + volume_4h: number; + volume_4h_usd: number; + volume_history_4h: number; + volume_history_4h_usd: number; + volume_4h_change_percent: number; + volume_buy_4h: number; + volume_buy_4h_usd: number; + volume_buy_history_4h: number; + volume_buy_history_4h_usd: number; + volume_buy_4h_change_percent: number; + volume_sell_4h: number; + volume_sell_4h_usd: number; + volume_sell_history_4h: number; + volume_sell_history_4h_usd: number; + volume_sell_4h_change_percent: number; + trade_8h: number; + trade_history_8h: number; + trade_8h_change_percent: number; + sell_8h: number; + sell_history_8h: number; + sell_8h_change_percent: number; + buy_8h: number; + buy_history_8h: number; + buy_8h_change_percent: number; + volume_8h: number; + volume_8h_usd: number; + volume_history_8h: number; + volume_history_8h_usd: number; + volume_8h_change_percent: number; + volume_buy_8h: number; + volume_buy_8h_usd: number; + volume_buy_history_8h: number; + volume_buy_history_8h_usd: number; + volume_buy_8h_change_percent: number; + volume_sell_8h: number; + volume_sell_8h_usd: number; + volume_sell_history_8h: number; + volume_sell_history_8h_usd: number; + volume_sell_8h_change_percent: number; + trade_24h: number; + trade_history_24h: number; + trade_24h_change_percent: number; + sell_24h: number; + sell_history_24h: number; + sell_24h_change_percent: number; + buy_24h: number; + buy_history_24h: number; + buy_24h_change_percent: number; + volume_24h: number; + volume_24h_usd: number; + volume_history_24h: number; + volume_history_24h_usd: number; + volume_24h_change_percent: number; + volume_buy_24h: number; + volume_buy_24h_usd: number; + volume_buy_history_24h: number; + volume_buy_history_24h_usd: number; + volume_buy_24h_change_percent: number; + volume_sell_24h: number; + volume_sell_24h_usd: number; + volume_sell_history_24h: number; + volume_sell_history_24h_usd: number; + volume_sell_24h_change_percent: number; +} diff --git a/packages/plugin-birdeye/src/types/api/defi.ts b/packages/plugin-birdeye/src/types/api/defi.ts new file mode 100644 index 000000000000..896991df6c3b --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/defi.ts @@ -0,0 +1,219 @@ +import { TimeInterval } from "./common"; + +// Network Types +export interface DefiNetworksResponse { + success: boolean; + data: { + chains: string[]; + }; +} + +// Price Types +export interface DefiPriceParams { + address: string; + check_liquidity?: number; + include_liquidity?: boolean; +} + +export interface DefiPriceResponse { + success: boolean; + data: { + value: number; + updateUnixTime?: number; + updateHumanTime?: string; + liquidity?: number; + }; +} + +// Multi Price Types +export interface DefiMultiPriceParams { + list_address: string; + check_liquidity?: number; + include_liquidity?: boolean; +} + +export interface DefiMultiPriceResponse { + success: boolean; + data: { + [address: string]: { + value?: number; + updateUnixTime?: number; + updateHumanTime?: string; + priceChange24h?: number; + }; + }; +} + +// Multi Price Types POST +export interface DefiMultiPriceParamsPOST { + check_liquidity?: number; + include_liquidity?: boolean; + list_address: string; +} + +// History Price Types +export interface DefiHistoryPriceParams { + address: string; + address_type: "token" | "pair"; + type: TimeInterval; + time_from?: number; + time_to?: number; +} + +export interface DefiHistoryPriceResponse { + success: boolean; + data: { + items: Array<{ + unixTime?: number; + value?: number; + }>; + }; +} + +// Historical Price Unix Types +export interface HistoricalPriceUnixParams { + address: string; + unixtime?: number; +} + +export interface HistoricalPriceUnixResponse { + success: boolean; + data: { + value?: number; + updateUnixTime?: number; + priceChange24h?: string; + }; +} + +// OHLCV Types +export interface OHLCVParams { + address: string; + type?: TimeInterval; + time_from?: number; + time_to?: number; +} + +export interface OHLCVResponse { + success: boolean; + data: { + items: Array<{ + unixTime?: number; + address?: string; + type?: TimeInterval; + o?: number; + h?: number; + l?: number; + c?: number; + v?: number; + }>; + }; +} + +// Price Volume Types +export interface PriceVolumeParams { + address: string; + type?: TimeInterval; +} + +export interface PriceVolumeResponse { + success: boolean; + data: { + price?: number; + updateUnixTime?: number; + updateHumanTime?: string; + volumeUSD?: number; + volumeChangePercent?: number; + priceChangePercent?: number; + }; +} + +// Multi Price Volume Types +export interface MultiPriceVolumeParams { + list_address: string; + type?: TimeInterval; +} + +export interface MultiPriceVolumeResponse { + success: boolean; + data: { + [address: string]: { + price?: number; + updateUnixTime?: number; + updateHumanTime?: string; + volumeUSD?: number; + volumeChangePercent?: number; + priceChangePercent?: number; + }; + }; +} + +// Base Quote Types +export interface BaseQuoteParams { + base_address: string; + quote_address: string; + type?: TimeInterval; + time_from?: number; + time_to?: number; +} + +export interface BaseQuoteResponse { + success: boolean; + data: { + unixTime?: number; + vBase?: number; + vQuote?: number; + o?: number; + h?: number; + l?: number; + c?: number; + }; +} + +// Token Trades Types +export interface DefiTradesTokenParams { + address: string; + limit?: number; + offset?: number; + tx_type?: "swap" | "add" | "remove" | "all"; + sort_type?: "asc" | "desc"; + before_time?: number; + after_time?: number; +} + +export interface DefiTradesTokenInfo { + symbol: string; + decimals: number; + address: string; + amount: number; + uiAmount: number; + price: number | null; + nearestPrice: number | null; + changeAmount: number; + uiChangeAmount: number; + feeInfo?: any | null; +} + +export interface DefiTradesTokenResponse { + success: boolean; + data: { + items: Array<{ + quote?: DefiTradesTokenInfo; + base?: DefiTradesTokenInfo; + basePrice?: number | null; + quotePrice?: number | null; + txHash?: string; + source?: string; + blockUnixTime?: number; + txType?: string; + owner?: string; + side?: string; + alias?: string | null; + pricePair?: number; + from?: DefiTradesTokenInfo; + to?: DefiTradesTokenInfo; + tokenPrice?: number | null; + poolId?: string; + }>; + hasNext?: boolean; + }; +} diff --git a/packages/plugin-birdeye/src/types/api/pair.ts b/packages/plugin-birdeye/src/types/api/pair.ts new file mode 100644 index 000000000000..91a89c9c36be --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/pair.ts @@ -0,0 +1,199 @@ +import { TimeInterval } from "./common"; + +// Pair Trades Types +export interface PairTradesParams { + pair: string; + limit?: number; + offset?: number; +} + +export interface PairTradesResponse { + success: boolean; + data: { + items: Array<{ + signature?: string; + blockNumber?: number; + unixTime?: number; + type?: "buy" | "sell"; + tokenAddress?: string; + tokenAmount?: number; + tokenAmountUI?: number; + tokenSymbol?: string; + tokenDecimals?: number; + priceUsd?: number; + volumeUsd?: number; + maker?: string; + taker?: string; + txType?: string; + poolAddress?: string; + poolName?: string; + dex?: string; + }>; + }; +} + +// OHLCV Pair Types +export interface OHLCVPairParams { + address: string; + type?: TimeInterval; + time_from?: number; + time_to?: number; +} + +export interface OHLCVPairResponse { + success: boolean; + data: { + items: Array<{ + unixTime?: number; + address?: string; + type?: TimeInterval; + o?: number; + h?: number; + l?: number; + c?: number; + v?: number; + }>; + }; +} + +// Pair Overview Types +export interface PairOverviewMultiParams { + list_address: string; + before_time?: number; +} + +export interface PairOverviewSingleParams { + address: string; +} + +interface PairOverviewData { + address: string; + name: string; + base: { + address: string; + decimals: number; + icon: string; + symbol: string; + }; + quote: { + address: string; + decimals: number; + icon: string; + symbol: string; + }; + created_at: string; + source: string; + liquidity: number; + liquidity_change_percentage_24h: number | null; + price: number; + volume_24h: number; + volume_24h_change_percentage_24h: number | null; + trade_24h: number; + trade_24h_change_percent: number; + unique_wallet_24h: number; + unique_wallet_24h_change_percent: number | null; + + // Time-based metrics + trade_30m: number; + trade_1h: number; + trade_2h: number; + trade_4h: number; + trade_8h: number; + trade_12h: number; + + trade_30m_change_percent: number; + trade_1h_change_percent: number; + trade_2h_change_percent: number; + trade_4h_change_percent: number; + trade_8h_change_percent: number; + trade_12h_change_percent: number; + + volume_30m: number; + volume_1h: number; + volume_2h: number; + volume_4h: number; + volume_8h: number; + volume_12h: number; + + volume_30m_quote: number; + volume_1h_quote: number; + volume_2h_quote: number; + volume_4h_quote: number; + volume_8h_quote: number; + volume_12h_quote: number; + + volume_30m_base: number; + volume_1h_base: number; + volume_2h_base: number; + volume_4h_base: number; + volume_8h_base: number; + volume_12h_base: number; +} + +export interface PairOverviewSingleResponse { + success: boolean; + data: { + address?: string; + name?: string; + base?: { + address?: string; + decimals?: number; + icon?: string; + symbol?: string; + }; + quote?: { + address?: string; + decimals?: number; + icon?: string; + symbol?: string; + }; + created_at?: string; + source?: string; + liquidity?: number; + liquidity_change_percentage_24h?: number | null; + price?: number; + volume_24h?: number; + volume_24h_change_percentage_24h?: number | null; + trade_24h?: number; + trade_24h_change_percent?: number; + unique_wallet_24h?: number; + unique_wallet_24h_change_percent?: number | null; + trade_30m?: number; + trade_1h?: number; + trade_2h?: number; + trade_4h?: number; + trade_8h?: number; + trade_12h?: number; + trade_30m_change_percent?: number; + trade_1h_change_percent?: number; + trade_2h_change_percent?: number; + trade_4h_change_percent?: number; + trade_8h_change_percent?: number; + trade_12h_change_percent?: number; + volume_30m?: number; + volume_1h?: number; + volume_2h?: number; + volume_4h?: number; + volume_8h?: number; + volume_12h?: number; + volume_30m_quote?: number; + volume_1h_quote?: number; + volume_2h_quote?: number; + volume_4h_quote?: number; + volume_8h_quote?: number; + volume_12h_quote?: number; + volume_30m_base?: number; + volume_1h_base?: number; + volume_2h_base?: number; + volume_4h_base?: number; + volume_8h_base?: number; + volume_12h_base?: number; + }; +} + +export interface PairOverviewMultiResponse { + success: boolean; + data: { + [pair: string]: PairOverviewData; + }; +} diff --git a/packages/plugin-birdeye/src/types/api/search.ts b/packages/plugin-birdeye/src/types/api/search.ts new file mode 100644 index 000000000000..bdfd5410ef25 --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/search.ts @@ -0,0 +1,85 @@ +import { BirdeyeSupportedChain } from "../shared"; + +// Search Types +export interface TokenMarketSearchParams { + chain?: BirdeyeSupportedChain | "all"; + keyword?: string; + target?: "token" | "market" | "all"; + sort_by?: + | "fdv" + | "marketcap" + | "liquidity" + | "price" + | "price_change_24h_percent" + | "trade_24h" + | "trade_24h_change_percent" + | "buy_24h" + | "buy_24h_change_percent" + | "sell_24h" + | "sell_24h_change_percent" + | "unique_wallet_24h" + | "unique_view_24h_change_percent" + | "last_trade_unix_time" + | "volume_24h_usd" + | "volume_24h_change_percent"; + sort_type?: "asc" | "desc"; + verify_token?: boolean; + markets?: string; + offset?: number; + limit?: number; +} + +export interface TokenMarketSearchResponse { + success: boolean; + data: { + items: Array<{ + type?: "token" | "market"; + result?: Array; + }>; + }; +} + +export interface TokenResult { + name?: string; + symbol?: string; + address?: string; + network?: string; + fdv?: number; + market_cap?: number; + liquidity?: number; + volume_24h_change_percent?: number; + price?: number; + price_change_24h_percent?: number; + buy_24h?: number; + buy_24h_change_percent?: number; + sell_24h?: number; + sell_24h_change_percent?: number; + trade_24h?: number; + trade_24h_change_percent?: number; + unique_wallet_24h?: number; + unique_view_24h_change_percent?: number; + last_trade_human_time?: string; + last_trade_unix_time?: number; + creation_time?: string; + volume_24h_usd?: number; + logo_uri?: string; +} + +export interface MarketResult { + name: string; + address: string; + liquidity: number; + source: string; + trade_24h: number; + trade_24h_change_percent: number; + unique_wallet_24h: number; + unique_wallet_24h_change_percent: number; + last_trade_human_time: string; + last_trade_unix_time: number; + base_mint: string; + quote_mint: string; + amount_base: number; + amout_quote: number; // Note: typo in API response + creation_time: string; + volume_24h_usd: number; +} diff --git a/packages/plugin-birdeye/src/types/api/token.ts b/packages/plugin-birdeye/src/types/api/token.ts new file mode 100644 index 000000000000..6922ee223504 --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/token.ts @@ -0,0 +1,634 @@ +import { TimeInterval, TokenTradeData } from "./common"; + +// Token Trades Types +export interface TokenTradesParams { + address: string; + limit?: number; + offset?: number; + type?: "buy" | "sell" | "all"; +} + +export interface TokenTradesResponse { + success: boolean; + data: { + items: Array<{ + signature?: string; + blockNumber?: number; + unixTime?: number; + type?: "buy" | "sell"; + tokenAddress?: string; + tokenAmount?: number; + tokenAmountUI?: number; + tokenSymbol?: string; + tokenDecimals?: number; + priceUsd?: number; + volumeUsd?: number; + maker?: string; + taker?: string; + txType?: string; + poolAddress?: string; + poolName?: string; + dex?: string; + }>; + }; +} + +export interface TokenListParams { + sort_by?: "mc" | "v24hUSD" | "v24hChangePercent"; + sort_type?: "asc" | "desc"; + offset?: number; + limit?: number; + min_liquidity?: number; +} + +// Token List Types +export interface TokenListResponse { + success: boolean; + data: { + tokens: Array<{ + address?: string; + symbol?: string; + name?: string; + decimals?: number; + logoURI?: string; + coingeckoId?: string; + volume24h?: number; + priceChange24h?: number; + price?: number; + }>; + }; +} + +// Token Security Types +export interface TokenSecurityParams { + address: string; +} + +export interface TokenSecurityResponse { + success: boolean; + data: { + address?: string; + totalSupply?: number; + mintable?: boolean; + proxied?: boolean; + proxy?: string; + ownerAddress?: string; + creatorAddress?: string; + securityChecks?: { + honeypot?: boolean; + trading_cooldown?: boolean; + transfer_pausable?: boolean; + is_blacklisted?: boolean; + is_whitelisted?: boolean; + is_proxy?: boolean; + is_mintable?: boolean; + can_take_back_ownership?: boolean; + hidden_owner?: boolean; + anti_whale_modifiable?: boolean; + is_anti_whale?: boolean; + trading_pausable?: boolean; + can_be_blacklisted?: boolean; + is_true_token?: boolean; + is_airdrop_scam?: boolean; + slippage_modifiable?: boolean; + is_honeypot?: boolean; + transfer_pausable_time?: boolean; + is_wrapped?: boolean; + }; + }; +} + +// Token Overview Types +export interface TokenOverviewParams { + address: string; +} + +export interface TokenOverviewResponse { + success: boolean; + data: { + address?: string; + decimals?: number; + symbol?: string; + name?: string; + extensions?: { + coingeckoId?: string; + serumV3Usdc?: string; + serumV3Usdt?: string; + website?: string; + telegram?: string | null; + twitter?: string; + description?: string; + discord?: string; + medium?: string; + }; + logoURI?: string; + liquidity?: number; + lastTradeUnixTime?: number; + lastTradeHumanTime?: string; + price?: number; + history30mPrice?: number; + priceChange30mPercent?: number; + history1hPrice?: number; + priceChange1hPercent?: number; + history2hPrice?: number; + priceChange2hPercent?: number; + history4hPrice?: number; + priceChange4hPercent?: number; + history6hPrice?: number; + priceChange6hPercent?: number; + history8hPrice?: number; + priceChange8hPercent?: number; + history12hPrice?: number; + priceChange12hPercent?: number; + history24hPrice?: number; + priceChange24hPercent?: number; + uniqueWallet30m?: number; + uniqueWalletHistory30m?: number; + uniqueWallet30mChangePercent?: number; + uniqueWallet1h?: number; + uniqueWalletHistory1h?: number; + uniqueWallet1hChangePercent?: number; + uniqueWallet2h?: number; + uniqueWalletHistory2h?: number; + uniqueWallet2hChangePercent?: number; + uniqueWallet4h?: number; + uniqueWalletHistory4h?: number; + uniqueWallet4hChangePercent?: number; + uniqueWallet8h?: number; + uniqueWalletHistory8h?: number; + uniqueWallet8hChangePercent?: number; + uniqueWallet24h?: number; + uniqueWalletHistory24h?: number; + uniqueWallet24hChangePercent?: number; + supply?: number; + mc?: number; + circulatingSupply?: number; + realMc?: number; + holder?: number; + trade30m?: number; + tradeHistory30m?: number; + trade30mChangePercent?: number; + sell30m?: number; + sellHistory30m?: number; + sell30mChangePercent?: number; + buy30m?: number; + buyHistory30m?: number; + buy30mChangePercent?: number; + v30m?: number; + v30mUSD?: number; + vHistory30m?: number; + vHistory30mUSD?: number; + v30mChangePercent?: number; + vBuy30m?: number; + vBuy30mUSD?: number; + vBuyHistory30m?: number; + vBuyHistory30mUSD?: number; + vBuy30mChangePercent?: number; + vSell30m?: number; + vSell30mUSD?: number; + vSellHistory30m?: number; + vSellHistory30mUSD?: number; + vSell30mChangePercent?: number; + trade1h?: number; + tradeHistory1h?: number; + trade1hChangePercent?: number; + sell1h?: number; + sellHistory1h?: number; + sell1hChangePercent?: number; + buy1h?: number; + buyHistory1h?: number; + buy1hChangePercent?: number; + v1h?: number; + v1hUSD?: number; + vHistory1h?: number; + vHistory1hUSD?: number; + v1hChangePercent?: number; + vBuy1h?: number; + vBuy1hUSD?: number; + vBuyHistory1h?: number; + vBuyHistory1hUSD?: number; + vBuy1hChangePercent?: number; + vSell1h?: number; + vSell1hUSD?: number; + vSellHistory1h?: number; + vSellHistory1hUSD?: number; + vSell1hChangePercent?: number; + trade2h?: number; + tradeHistory2h?: number; + trade2hChangePercent?: number; + sell2h?: number; + sellHistory2h?: number; + sell2hChangePercent?: number; + buy2h?: number; + buyHistory2h?: number; + buy2hChangePercent?: number; + v2h?: number; + v2hUSD?: number; + vHistory2h?: number; + vHistory2hUSD?: number; + v2hChangePercent?: number; + vBuy2h?: number; + vBuy2hUSD?: number; + vBuyHistory2h?: number; + vBuyHistory2hUSD?: number; + vBuy2hChangePercent?: number; + vSell2h?: number; + vSell2hUSD?: number; + vSellHistory2h?: number; + vSellHistory2hUSD?: number; + vSell2hChangePercent?: number; + trade4h?: number; + tradeHistory4h?: number; + trade4hChangePercent?: number; + sell4h?: number; + sellHistory4h?: number; + sell4hChangePercent?: number; + buy4h?: number; + buyHistory4h?: number; + buy4hChangePercent?: number; + v4h?: number; + v4hUSD?: number; + vHistory4h?: number; + vHistory4hUSD?: number; + v4hChangePercent?: number; + vBuy4h?: number; + vBuy4hUSD?: number; + vBuyHistory4h?: number; + vBuyHistory4hUSD?: number; + vBuy4hChangePercent?: number; + vSell4h?: number; + vSell4hUSD?: number; + vSellHistory4h?: number; + vSellHistory4hUSD?: number; + vSell4hChangePercent?: number; + trade8h?: number; + tradeHistory8h?: number; + trade8hChangePercent?: number; + sell8h?: number; + sellHistory8h?: number; + sell8hChangePercent?: number; + buy8h?: number; + buyHistory8h?: number; + buy8hChangePercent?: number; + v8h?: number; + v8hUSD?: number; + vHistory8h?: number; + vHistory8hUSD?: number; + v8hChangePercent?: number; + vBuy8h?: number; + vBuy8hUSD?: number; + vBuyHistory8h?: number; + vBuyHistory8hUSD?: number; + vBuy8hChangePercent?: number; + vSell8h?: number; + vSell8hUSD?: number; + vSellHistory8h?: number; + vSellHistory8hUSD?: number; + vSell8hChangePercent?: number; + trade24h?: number; + tradeHistory24h?: number; + trade24hChangePercent?: number; + sell24h?: number; + sellHistory24h?: number; + sell24hChangePercent?: number; + buy24h?: number; + buyHistory24h?: number; + buy24hChangePercent?: number; + v24h?: number; + v24hUSD?: number; + vHistory24h?: number; + vHistory24hUSD?: number; + v24hChangePercent?: number; + vBuy24h?: number; + vBuy24hUSD?: number; + vBuyHistory24h?: number; + vBuyHistory24hUSD?: number; + vBuy24hChangePercent?: number; + vSell24h?: number; + vSell24hUSD?: number; + vSellHistory24h?: number; + vSellHistory24hUSD?: number; + vSell24hChangePercent?: number; + watch?: null; + numberMarkets?: number; + }; +} + +// Token Creation Info Types +export interface TokenCreationInfoParams { + address: string; +} + +export interface TokenCreationInfoResponse { + success: boolean; + data: { + txHash?: string; + slot?: number; + tokenAddress?: string; + decimals?: number; + owner?: string; + blockUnixTime?: number; + blockHumanTime?: string; + }; +} + +export interface TokenTrendingParams { + sort_by?: "rank" | "volume24hUSD" | "liquidity"; + sort_type?: "asc" | "desc"; + offset?: number; + limit?: number; +} + +// Token Trending Types +export interface TokenTrendingResponse { + success: boolean; + data: { + updateUnixTime?: number; + updateTime?: string; + tokens: Array<{ + address?: string; + symbol?: string; + name?: string; + decimals?: number; + liquidity?: number; + logoURI?: string; + volume24hUSD?: number; + rank?: number; + price?: number; + }>; + total?: number; + }; +} + +// Token List V2 Types +export interface TokenListV2Params { + offset?: number; + limit?: number; + sortBy?: string; + sortOrder?: "asc" | "desc"; +} + +// this endpoint is for enterprise only and the response is not documented +export interface TokenListV2Response { + success: boolean; + data: any; +} + +export interface TokenMetadataMultiParams { + list_addresses: string; +} + +export interface TokenMetadataMultiResponse { + success: boolean; + data: { + [address: string]: { + address?: string; + symbol?: string; + name?: string; + decimals?: number; + extensions?: { + coingecko_id?: string; + website?: string; + twitter?: string; + discord?: string; + medium?: string; + }; + logo_uri?: string; + }; + }; +} + +export interface TokenTradeDataMultiParams { + list_addresses: string; +} + +export interface TokenTradeDataMultiResponse { + success: boolean; + data: { + [address: string]: TokenTradeData; + }; +} + +// Token Metadata Single Types +export interface TokenMetadataSingleParams { + address: string; +} + +export interface TokenMetadataSingleResponse { + success: boolean; + data: { + address?: string; + symbol?: string; + name?: string; + decimals?: number; + extensions?: { + coingecko_id?: string; + website?: string; + twitter?: string; + discord?: string; + medium?: string; + }; + logo_uri?: string; + }; +} + +// Token Market Data Types +export interface TokenMarketDataParams { + address: string; +} + +export interface TokenMarketDataResponse { + success: boolean; + data: { + address?: string; + liquidity?: number; + price?: number; + supply?: number; + marketcap?: number; + circulating_supply?: number; + circulating_marketcap?: number; + }; +} + +// Token Trade Data Single Types +export interface TokenTradeDataSingleParams { + address: string; +} + +export interface TokenTradeDataSingleResponse { + success: boolean; + data: TokenTradeData; +} + +// Token Market Stats Types +export interface TokenMarketStatsResponse { + success: boolean; + data: { + address: string; + liquidity: number; + price: number; + supply: number; + marketcap: number; + circulating_supply: number; + circulating_marketcap: number; + }; +} + +// Token Holders Types +export interface TokenHoldersParams { + address: string; + offset?: number; + limit?: number; +} + +export interface TokenHoldersResponse { + success: boolean; + data: { + items: Array<{ + amount?: string; + decimals?: number; + mint?: string; + owner?: string; + token_account?: string; + ui_amount?: number; + }>; + }; +} + +// Token Mint Burn Types +export interface MintBurnParams { + address: string; + sort_by: "block_time"; + sort_type: "asc" | "desc"; + type: "mint" | "burn" | "all"; + after_time?: number; + before_time?: number; + offset?: number; + limit?: number; +} + +export interface MintBurnResponse { + success: boolean; + data: { + items: Array<{ + amount?: string; + block_human_time?: string; + block_time?: number; + common_type?: "mint" | "burn"; + decimals?: number; + mint?: string; + program_id?: string; + slot?: number; + tx_hash?: string; + ui_amount?: number; + ui_amount_string?: string; + }>; + }; +} + +// New Listing Types +export interface NewListingParams { + time_to: number; + meme_platform_enabled: boolean; + limit?: number; +} + +export interface NewListingResponse { + success: boolean; + data: { + items: Array<{ + address: string; + symbol: string; + name: string; + decimals: number; + source: string; + liquidityAddedAt: string; + logoURI: string | null; + liquidity: number; + }>; + }; +} + +// Top Traders Types +export interface TopTradersParams { + address: string; + time_frame?: TimeInterval; + sort_type?: "asc" | "desc"; + sort_by?: "volume" | "trade"; + offset?: number; + limit?: number; +} + +export interface TopTradersResponse { + success: boolean; + data: { + items: Array<{ + trader: string; + volume24h: number; + trades24h: number; + profit24h: number; + }>; + total: number; + }; +} + +// All Markets Types +export interface AllMarketsParams { + address: string; + time_frame: TimeInterval; + sort_type: "asc" | "desc"; + sort_by: "volume24h" | "liquidity"; + offset?: number; + limit?: number; +} + +export interface AllMarketsResponse { + success: boolean; + data: { + items: Array<{ + address: string; + base: { + address: string; + decimals: number; + symbol: string; + icon?: string; + }; + quote: { + address: string; + decimals: number; + symbol: string; + icon?: string; + }; + createdAt: string; + liquidity: number; + name: string; + price: number | null; + source: string; + trade24h: number; + trade24hChangePercent: number; + uniqueWallet24h: number; + uniqueWallet24hChangePercent: number; + volume24h: number; + }>; + total: number; + }; +} + +// Token Volume By Owner Types +export interface TokenVolumeByOwnerResponse { + success: boolean; + data: { + items: Array<{ + tokenAddress: string; + owner: string; + tags: string[]; + type: string; + volume: number; + trade: number; + tradeBuy: number; + tradeSell: number; + volumeBuy: number; + volumeSell: number; + }>; + }; +} diff --git a/packages/plugin-birdeye/src/types/api/trader.ts b/packages/plugin-birdeye/src/types/api/trader.ts new file mode 100644 index 000000000000..c338f2fad4f0 --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/trader.ts @@ -0,0 +1,75 @@ +// Trader Gainers Losers Types +export interface GainersLosersParams { + type: "yesterday" | "today" | "1W"; + sort_by: "PnL"; + sort_type: "asc" | "desc"; + offset?: number; + limit?: number; +} + +export interface GainersLosersResponse { + success: boolean; + data: { + items: Array<{ + network?: string; + address?: string; + pnl?: number; + trade_count?: number; + volume?: number; + }>; + }; +} + +// Trader Transactions Seek Types +export interface TraderTransactionsSeekParams { + address: string; + offset?: number; + limit?: number; + tx_type?: "swap" | "add" | "remove" | "all"; + before_time?: number; + after_time?: number; +} + +export interface TraderTransactionsSeekResponse { + success: boolean; + data: { + items: Array<{ + quote?: { + symbol?: string; + decimals?: number; + address?: string; + amount?: number; + type?: string; + type_swap?: "from" | "to"; + ui_amount?: number; + price?: number | null; + nearest_price?: number; + change_amount?: number; + ui_change_amount?: number; + }; + base?: { + symbol?: string; + decimals?: number; + address?: string; + amount?: number; + type?: string; + type_swap?: "from" | "to"; + fee_info?: any | null; + ui_amount?: number; + price?: number | null; + nearest_price?: number; + change_amount?: number; + ui_change_amount?: number; + }; + base_price?: number | null; + quote_price?: number | null; + tx_hash?: string; + source?: string; + block_unix_time?: number; + tx_type?: string; + address?: string; + owner?: string; + }>; + hasNext?: boolean; + }; +} diff --git a/packages/plugin-birdeye/src/types/api/wallet.ts b/packages/plugin-birdeye/src/types/api/wallet.ts new file mode 100644 index 000000000000..ff3c06b82324 --- /dev/null +++ b/packages/plugin-birdeye/src/types/api/wallet.ts @@ -0,0 +1,180 @@ +// Wallet Portfolio Types +export interface WalletPortfolioParams { + wallet: string; +} + +export interface WalletPortfolioResponse { + success: boolean; + data: { + wallet?: string; + totalUsd?: number; + items: Array<{ + address?: string; + name?: string; + symbol?: string; + decimals?: number; + balance?: string; + uiAmount?: number; + chainId?: string; + logoURI?: string; + priceUsd?: number; + valueUsd?: number; + }>; + }; +} + +// Wallet Token Balance Types +export interface WalletTokenBalanceParams { + wallet: string; + token_address: string; +} + +export interface WalletTokenBalanceResponse { + success: boolean; + data: { + address?: string; + name?: string; + symbol?: string; + decimals?: number; + balance?: number; + uiAmount?: number; + chainId?: string; + priceUsd?: number; + valueUsd?: number; + }; +} + +// Wallet Transaction History Types +export interface WalletTransactionHistoryParams { + wallet: string; + limit?: number; + before?: string; +} + +export interface WalletTransactionHistoryResponse { + success: boolean; + data: { + [chain: string]: Array<{ + txHash?: string; + blockNumber?: number; + blockTime?: string; + status?: boolean; + from?: string; + to?: string; + gasUsed?: number; + gasPrice?: number; + fee?: string; + feeUsd?: number; + value?: string; + contractLabel?: { + address?: string; + name?: string; + metadata?: Record; + }; + mainAction?: string; + balanceChange?: Array<{ + name?: string; + symbol?: string; + logoURI?: string; + address?: string; + amount?: number; + decimals?: number; + }>; + }>; + }; +} + +// Wallet Networks Types +export interface WalletNetworksResponse { + success: boolean; + data: { + chains?: string[]; + }; +} + +// Wallet Portfolio Multichain Types +export interface WalletPortfolioMultichainParams { + wallet: string; +} + +export interface WalletPortfolioMultichainResponse { + success: boolean; + data: { + items: Array<{ + chain?: string; + address?: string; + symbol?: string; + name?: string; + decimals?: number; + price?: number; + priceChange24h?: number; + value?: number; + amount?: number; + }>; + total?: number; + totalValue?: number; + }; +} + +// Wallet Transaction History Multichain Types +export interface WalletTransactionHistoryMultichainParams { + wallet: string; +} + +export interface WalletTransactionHistoryMultichainResponse { + success: boolean; + data: { + [chain: string]: Array<{ + txHash?: string; + blockNumber?: number; + blockTime?: string; + status?: boolean; + from?: string; + to?: string; + gasUsed?: number; + gasPrice?: number; + fee?: string; + feeUsd?: number; + value?: string; + contractLabel?: { + address?: string; + name?: string; + metadata?: Record; + }; + mainAction?: string; + balanceChange?: Array<{ + name?: string; + symbol?: string; + logoURI?: string; + address?: string; + amount?: number; + decimals?: number; + }>; + }>; + }; +} + +// Wallet Transaction Simulation Types +export interface WalletSimulationParams { + from?: string; + to?: string; + data?: string; + value?: string; +} + +export interface WalletSimulationResponse { + success: boolean; + data: { + balanceChange: Array<{ + index?: number; + before?: number; + after?: number; + address?: string; + name?: string; + symbol?: string; + logoURI?: string; + decimals?: number; + }>; + gasUsed?: number; + }; +} diff --git a/packages/plugin-birdeye/src/types/shared.ts b/packages/plugin-birdeye/src/types/shared.ts new file mode 100644 index 000000000000..190945b31f43 --- /dev/null +++ b/packages/plugin-birdeye/src/types/shared.ts @@ -0,0 +1,23 @@ +import { BIRDEYE_SUPPORTED_CHAINS } from "../utils"; + +// Types +export type BirdeyeSupportedChain = (typeof BIRDEYE_SUPPORTED_CHAINS)[number]; + +export interface BaseAddress { + type?: "wallet" | "token" | "contract"; + symbol?: string; + address: string; + chain: BirdeyeSupportedChain; +} + +export interface WalletAddress extends BaseAddress { + type: "wallet"; +} + +export interface TokenAddress extends BaseAddress { + type: "token"; +} + +export interface ContractAddress extends BaseAddress { + type: "contract"; +} diff --git a/packages/plugin-birdeye/src/utils.ts b/packages/plugin-birdeye/src/utils.ts new file mode 100644 index 000000000000..024c52580292 --- /dev/null +++ b/packages/plugin-birdeye/src/utils.ts @@ -0,0 +1,613 @@ +import { elizaLogger } from "@elizaos/core"; +import { BirdeyeApiParams } from "./types/api/common"; +import { TokenMarketSearchResponse, TokenResult } from "./types/api/search"; +import { TokenMetadataSingleResponse } from "./types/api/token"; +import { WalletPortfolioResponse } from "./types/api/wallet"; +import { BaseAddress, BirdeyeSupportedChain } from "./types/shared"; + +// Constants +export const BASE_URL = "https://public-api.birdeye.so"; + +export const BIRDEYE_SUPPORTED_CHAINS = [ + "solana", + "ethereum", + "arbitrum", + "avalanche", + "bsc", + "optimism", + "polygon", + "base", + "zksync", + "sui", + "solana", + "evm", // EVM-compatible chains but we don't know the chain +] as const; + +// Chain abbreviations and alternative names mapping +export const CHAIN_ALIASES: Record = { + // Solana + sol: "solana", + + // Ethereum + eth: "ethereum", + ether: "ethereum", + + // Arbitrum + arb: "arbitrum", + arbitrumone: "arbitrum", + + // Avalanche + avax: "avalanche", + + // BSC + bnb: "bsc", + binance: "bsc", + "binance smart chain": "bsc", + + // Optimism + op: "optimism", + opti: "optimism", + + // Polygon + matic: "polygon", + poly: "polygon", + + // Base + // no common abbreviations + + // zkSync + zks: "zksync", + zk: "zksync", + + // Sui + // no common abbreviations +} as const; + +export class BirdeyeApiError extends Error { + constructor( + public status: number, + message: string + ) { + super(message); + this.name = "BirdeyeApiError"; + } +} + +export interface ApiResponse { + success: boolean; + data: T; + error?: string; +} + +// Time-related types and constants +export const TIME_UNITS = { + second: 1, + minute: 60, + hour: 3600, + day: 86400, + week: 604800, + month: 2592000, +} as const; + +export const TIMEFRAME_KEYWORDS = { + "1m": 60, + "3m": 180, + "5m": 300, + "15m": 900, + "30m": 1800, + "1h": 3600, + "2h": 7200, + "4h": 14400, + "6h": 21600, + "12h": 43200, + "1d": 86400, + "1w": 604800, +} as const; + +export type TimeUnit = keyof typeof TIME_UNITS; +export type Timeframe = keyof typeof TIMEFRAME_KEYWORDS; + +// Helper functions +export const extractChain = (text: string): BirdeyeSupportedChain => { + // Check for SUI address (0x followed by 64 hex chars) + if (text.match(/0x[a-fA-F0-9]{64}/)) { + return "sui"; + } + // Check for EVM address (0x followed by 40 hex chars) + if (text.match(/0x[a-fA-F0-9]{40}/)) { + return "ethereum"; + } + // Default to solana + return "solana"; +}; + +export const extractAddresses = (text: string): BaseAddress[] => { + const addresses: BaseAddress[] = []; + + // EVM-compatible chains (Ethereum, Arbitrum, Avalanche, BSC, Optimism, Polygon, Base, zkSync) + const evmAddresses = text.match(/0x[a-fA-F0-9]{40}/g); + if (evmAddresses) { + addresses.push( + ...evmAddresses.map((address) => ({ + address, + chain: "evm" as BirdeyeSupportedChain, // we don't yet know the chain but can assume it's EVM-compatible + })) + ); + } + + // Solana addresses (base58 strings) + const solAddresses = text.match(/[1-9A-HJ-NP-Za-km-z]{32,44}/g); + if (solAddresses) { + addresses.push( + ...solAddresses.map((address) => ({ + address, + chain: "solana" as BirdeyeSupportedChain, + })) + ); + } + + // Sui addresses (0x followed by 64 hex chars) + const suiAddresses = text.match(/0x[a-fA-F0-9]{64}/g); + if (suiAddresses) { + addresses.push( + ...suiAddresses.map((address) => ({ + address, + chain: "sui" as BirdeyeSupportedChain, + })) + ); + } + + return addresses; +}; + +// Time extraction and analysis +export const extractTimeframe = (text: string): Timeframe => { + // First, check for explicit timeframe mentions + const timeframe = Object.keys(TIMEFRAME_KEYWORDS).find((tf) => + text.toLowerCase().includes(tf.toLowerCase()) + ); + if (timeframe) return timeframe as Timeframe; + + // Check for semantic timeframe hints + const semanticMap = { + "short term": "15m", + "medium term": "1h", + "long term": "1d", + intraday: "1h", + daily: "1d", + weekly: "1w", + detailed: "5m", + quick: "15m", + overview: "1d", + } as const; + + for (const [hint, tf] of Object.entries(semanticMap)) { + if (text.toLowerCase().includes(hint)) { + return tf as Timeframe; + } + } + + // Analyze for time-related words + if (text.match(/minute|min|minutes/i)) return "15m"; + if (text.match(/hour|hourly|hours/i)) return "1h"; + if (text.match(/day|daily|24h/i)) return "1d"; + if (text.match(/week|weekly/i)) return "1w"; + + // Default based on context + if (text.match(/trade|trades|trading|recent/i)) return "15m"; + if (text.match(/trend|analysis|analyze/i)) return "1h"; + if (text.match(/history|historical|long|performance/i)) return "1d"; + + return "1h"; // Default timeframe +}; + +export const extractTimeRange = ( + text: string +): { start: number; end: number } => { + const now = Math.floor(Date.now() / 1000); + + // Check for specific date ranges + const dateRangeMatch = text.match( + /from\s+(\d{4}-\d{2}-\d{2})\s+to\s+(\d{4}-\d{2}-\d{2})/i + ); + if (dateRangeMatch) { + const start = new Date(dateRangeMatch[1]).getTime() / 1000; + const end = new Date(dateRangeMatch[2]).getTime() / 1000; + return { start, end }; + } + + // Check for relative time expressions + const timeRegex = /(\d+)\s*(second|minute|hour|day|week|month)s?\s*ago/i; + const match = text.match(timeRegex); + if (match) { + const amount = parseInt(match[1]); + const unit = match[2].toLowerCase() as TimeUnit; + const start = now - amount * TIME_UNITS[unit]; + return { start, end: now }; + } + + // Check for semantic time ranges + const semanticRanges: Record = { + today: TIME_UNITS.day, + "this week": TIME_UNITS.week, + "this month": TIME_UNITS.month, + recent: TIME_UNITS.hour * 4, + latest: TIME_UNITS.hour, + "last hour": TIME_UNITS.hour, + "last day": TIME_UNITS.day, + "last week": TIME_UNITS.week, + "last month": TIME_UNITS.month, + }; + + for (const [range, duration] of Object.entries(semanticRanges)) { + if (text.toLowerCase().includes(range)) { + return { start: now - duration, end: now }; + } + } + + // Analyze context for appropriate default range + if (text.match(/trend|analysis|performance/i)) { + return { start: now - TIME_UNITS.week, end: now }; // 1 week for analysis + } + if (text.match(/trade|trades|trading|recent/i)) { + return { start: now - TIME_UNITS.day, end: now }; // 1 day for trading + } + if (text.match(/history|historical|long term/i)) { + return { start: now - TIME_UNITS.month, end: now }; // 1 month for history + } + + // Default to last 24 hours + return { start: now - TIME_UNITS.day, end: now }; +}; + +export const extractLimit = (text: string): number => { + // Check for explicit limit mentions + const limitMatch = text.match( + /\b(show|display|get|fetch|limit)\s+(\d+)\b/i + ); + if (limitMatch) { + const limit = parseInt(limitMatch[2]); + return Math.min(Math.max(limit, 1), 100); // Clamp between 1 and 100 + } + + // Check for semantic limit hints + if (text.match(/\b(all|everything|full|complete)\b/i)) return 100; + if (text.match(/\b(brief|quick|summary|overview)\b/i)) return 5; + if (text.match(/\b(detailed|comprehensive)\b/i)) return 50; + + // Default based on context + if (text.match(/\b(trade|trades|trading)\b/i)) return 10; + if (text.match(/\b(analysis|analyze|trend)\b/i)) return 24; + if (text.match(/\b(history|historical)\b/i)) return 50; + + return 10; // Default limit +}; + +// Formatting helpers +export const formatValue = (value?: number): string => { + if (!value) return "N/A"; + if (value && value >= 1_000_000_000) { + return `$${(value / 1_000_000_000).toFixed(2)}B`; + } + if (value >= 1_000_000) { + return `$${(value / 1_000_000).toFixed(2)}M`; + } + if (value >= 1_000) { + return `$${(value / 1_000).toFixed(2)}K`; + } + return `$${value.toFixed(2)}`; +}; + +export const formatPercentChange = (change?: number): string => { + if (change === undefined) return "N/A"; + const symbol = change >= 0 ? "↑" : "↓"; + return `${symbol} ${Math.abs(change).toFixed(2)}%`; +}; + +export const shortenAddress = (address?: string): string => { + if (!address || address.length <= 12) return address || "Unknown"; + return `${address.slice(0, 6)}...${address.slice(-4)}`; +}; + +export const formatTimestamp = (timestamp?: number): string => { + return timestamp ? new Date(timestamp * 1000).toLocaleString() : "N/A"; +}; + +export const formatPrice = (price?: number): string => { + return price + ? price < 0.01 + ? price.toExponential(2) + : price.toFixed(2) + : "N/A"; +}; + +// API helpers +export async function makeApiRequest( + url: string, + options: { + apiKey: string; + chain?: BirdeyeSupportedChain; + method?: "GET" | "POST"; + body?: any; + } +): Promise { + const { apiKey, chain = "solana", method = "GET", body } = options; + + try { + const response = await fetch(url, { + method, + headers: { + "X-API-KEY": apiKey, + "x-chain": chain, + ...(body && { "Content-Type": "application/json" }), + }, + ...(body && { body: JSON.stringify(body) }), + }); + + if (!response.ok) { + if (response.status === 404) { + throw new BirdeyeApiError(404, "Resource not found"); + } + if (response.status === 429) { + throw new BirdeyeApiError(429, "Rate limit exceeded"); + } + throw new BirdeyeApiError( + response.status, + `HTTP error! status: ${response.status}` + ); + } + + const responseJson: T = await response.json(); + + return responseJson; + } catch (error) { + if (error instanceof BirdeyeApiError) { + elizaLogger.error(`API Error (${error.status}):`, error.message); + } else { + elizaLogger.error("Error making API request:", error); + } + throw error; + } +} + +// Formatting helpers +export const formatTokenInfo = ( + token: TokenResult, + metadata?: TokenMetadataSingleResponse +): string => { + const priceFormatted = + token.price != null + ? token.price < 0.01 + ? token.price.toExponential(2) + : token.price.toFixed(2) + : "N/A"; + + const volume = + token.volume_24h_usd != null + ? `$${(token.volume_24h_usd / 1_000_000).toFixed(2)}M` + : "N/A"; + + const liquidity = + token.liquidity != null + ? `$${(token.liquidity / 1_000_000).toFixed(2)}M` + : "N/A"; + + const fdv = + token.fdv != null ? `$${(token.fdv / 1_000_000).toFixed(2)}M` : "N/A"; + + const priceChange = + token.price_change_24h_percent != null + ? `${token.price_change_24h_percent > 0 ? "+" : ""}${token.price_change_24h_percent.toFixed(2)}%` + : "N/A"; + + const trades = token.trade_24h != null ? token.trade_24h.toString() : "N/A"; + + const age = token.creation_time + ? `${Math.floor((Date.now() - new Date(token.creation_time).getTime()) / (1000 * 60 * 60 * 24))}d` + : "N/A"; + + let output = + `🪙 ${token.name} @ ${token.symbol}\n` + + `💰 USD: $${priceFormatted} (${priceChange})\n` + + `💎 FDV: ${fdv}\n` + + `💦 MCap: ${token.market_cap ? `$${(token.market_cap / 1_000_000).toFixed(2)}M` : "N/A"}\n` + + `💦 Liq: ${liquidity}\n` + + `📊 Vol: ${volume}\n` + + `🕰️ Age: ${age}\n` + + `🔄 Trades: ${trades}\n` + + `🔗 Address: ${token.address}`; + + // Add metadata if available + if (metadata?.success) { + const { extensions } = metadata.data; + const links: string[] = []; + + if (extensions.website) + links.push(`🌐 [Website](${extensions.website})`); + if (extensions.twitter) + links.push(`🐦 [Twitter](${extensions.twitter})`); + if (extensions.discord) + links.push(`💬 [Discord](${extensions.discord})`); + if (extensions.medium) links.push(`📝 [Medium](${extensions.medium})`); + if (extensions.coingecko_id) + links.push( + `🦎 [CoinGecko](https://www.coingecko.com/en/coins/${extensions.coingecko_id})` + ); + + if (links.length > 0) { + output += "\n\n📱 Social Links:\n" + links.join("\n"); + } + } + + return output; +}; + +// Extract symbols from text +export const extractSymbols = ( + text: string, + // loose mode will try to extract more symbols but may include false positives + // strict mode will only extract symbols that are clearly formatted as a symbol using $SOL format + mode: "strict" | "loose" = "loose" +): string[] => { + const symbols = new Set(); + + // Match patterns - this may + const patterns = + mode === "strict" + ? [ + // $SYMBOL format + /\$([A-Z0-9]{2,10})\b/gi, + // $SYMBOL format with lowercase + /\$([a-z0-9]{2,10})\b/gi, + ] + : [ + // $SYMBOL format + /\$([A-Z0-9]{2,10})\b/gi, + // After articles (a/an) + /\b(?:a|an)\s+([A-Z0-9]{2,10})\b/gi, + // // Standalone caps + /\b[A-Z0-9]{2,10}\b/g, + // // Quoted symbols + /["']([A-Z0-9]{2,10})["']/gi, + // // Common price patterns + /\b([A-Z0-9]{2,10})\/USD\b/gi, + /\b([A-Z0-9]{2,10})-USD\b/gi, + ]; + + // Extract all matches + patterns.forEach((pattern) => { + const matches = text.matchAll(pattern); + for (const match of matches) { + const symbol = (match[1] || match[0]).toUpperCase(); + symbols.add(symbol); + } + }); + + return Array.from(symbols); +}; + +export const formatMetadataResponse = ( + data: TokenMetadataSingleResponse, + chain: BirdeyeSupportedChain +): string => { + const tokenData = data.data; + const chainName = chain.charAt(0).toUpperCase() + chain.slice(1); + const chainExplorer = (() => { + switch (chain) { + case "solana": + return `https://solscan.io/token/${tokenData.address}`; + case "ethereum": + return `https://etherscan.io/token/${tokenData.address}`; + case "arbitrum": + return `https://arbiscan.io/token/${tokenData.address}`; + case "avalanche": + return `https://snowtrace.io/token/${tokenData.address}`; + case "bsc": + return `https://bscscan.com/token/${tokenData.address}`; + case "optimism": + return `https://optimistic.etherscan.io/token/${tokenData.address}`; + case "polygon": + return `https://polygonscan.com/token/${tokenData.address}`; + case "base": + return `https://basescan.org/token/${tokenData.address}`; + case "zksync": + return `https://explorer.zksync.io/address/${tokenData.address}`; + case "sui": + return `https://suiscan.xyz/mainnet/object/${tokenData.address}`; + default: + return null; + } + })(); + + let response = `Token Metadata for ${tokenData.name} (${tokenData.symbol}) on ${chainName}\n\n`; + + // Basic Information + response += "📝 Basic Information\n"; + response += `• Name: ${tokenData.name}\n`; + response += `• Symbol: ${tokenData.symbol}\n`; + response += `• Address: ${tokenData.address}\n`; + response += `• Decimals: ${tokenData.decimals}\n`; + if (chainExplorer) { + response += `• Explorer: [View on ${chainName} Explorer](${chainExplorer})\n`; + } + + // Social Links + response += "\n🔗 Social Links & Extensions\n"; + response += formatSocialLinks(tokenData) + "\n"; + + // Logo + if (tokenData.logo_uri) { + response += "\n🖼️ Logo\n"; + response += tokenData.logo_uri; + } + + return response; +}; + +const formatSocialLinks = ( + data: TokenMetadataSingleResponse["data"] +): string => { + const links: string[] = []; + const { extensions } = data; + + if (!extensions) { + return "No social links available"; + } + + if (extensions.website) { + links.push(`🌐 [Website](${extensions.website})`); + } + if (extensions.twitter) { + links.push(`🐦 [Twitter](${extensions.twitter})`); + } + if (extensions.discord) { + links.push(`💬 [Discord](${extensions.discord})`); + } + if (extensions.medium) { + links.push(`📝 [Medium](${extensions.medium})`); + } + if (extensions.coingecko_id) { + links.push( + `🦎 [CoinGecko](https://www.coingecko.com/en/coins/${extensions.coingecko_id})` + ); + } + + return links.length > 0 ? links.join("\n") : "No social links available"; +}; + +export const waitFor = (ms: number) => + new Promise((resolve) => setTimeout(resolve, ms)); + +export const formatPortfolio = (response: WalletPortfolioResponse) => { + const { items } = response.data; + if (!items?.length) return "No tokens found in portfolio"; + + return items + .map((item) => { + const value = item?.priceUsd?.toFixed(2); + const amount = item?.uiAmount?.toFixed(4); + return ( + `• ${item.symbol || "Unknown Token"}: ${amount} tokens` + + `${value !== "0.00" ? ` (Value: $${value || "unknown"})` : ""}` + ); + }) + .join("\n"); +}; + +export const convertToStringParams = (params: BirdeyeApiParams) => { + return Object.entries(params || {}).reduce( + (acc, [key, value]) => ({ + ...acc, + [key]: value?.toString() || "", + }), + {} as Record + ); +}; + +export const getTokenResultFromSearchResponse = ( + response: TokenMarketSearchResponse +): TokenResult[] | undefined => { + return response.data.items + .filter((item) => item.type === "token") + .flatMap((item) => item.result); +}; diff --git a/packages/plugin-birdeye/tsconfig.json b/packages/plugin-birdeye/tsconfig.json new file mode 100644 index 000000000000..73993deaaf7c --- /dev/null +++ b/packages/plugin-birdeye/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-birdeye/tsup.config.ts b/packages/plugin-birdeye/tsup.config.ts new file mode 100644 index 000000000000..dd25475bb630 --- /dev/null +++ b/packages/plugin-birdeye/tsup.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "safe-buffer", + "base-x", + "bs58", + "borsh", + "@solana/buffer-layout", + "stream", + "buffer", + "querystring", + "amqplib", + // Add other modules you want to externalize + ], +}); diff --git a/packages/plugin-bootstrap/package.json b/packages/plugin-bootstrap/package.json index 8d4adf2ca669..54e370a1e92c 100644 --- a/packages/plugin-bootstrap/package.json +++ b/packages/plugin-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-bootstrap", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-coinbase/package.json b/packages/plugin-coinbase/package.json index b78d9cb84f1c..be214da89c51 100644 --- a/packages/plugin-coinbase/package.json +++ b/packages/plugin-coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-coinbase", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-coingecko/package.json b/packages/plugin-coingecko/package.json index 3ace49624edf..0af87b08c225 100644 --- a/packages/plugin-coingecko/package.json +++ b/packages/plugin-coingecko/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-coingecko", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-coingecko/src/actions/getPricePerAddress.ts b/packages/plugin-coingecko/src/actions/getPricePerAddress.ts new file mode 100644 index 000000000000..ad07a3f057e5 --- /dev/null +++ b/packages/plugin-coingecko/src/actions/getPricePerAddress.ts @@ -0,0 +1,213 @@ +import { + ActionExample, + composeContext, + Content, + elizaLogger, + generateObject, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + type Action, +} from "@elizaos/core"; +import axios from "axios"; +import { z } from "zod"; +import { getApiConfig, validateCoingeckoConfig } from "../environment"; +import { getPriceByAddressTemplate } from "../templates/priceAddress"; + +// Schema definition for the token price request +export const GetTokenPriceSchema = z.object({ + chainId: z.string(), + tokenAddress: z.string(), +}); + +export type GetTokenPriceContent = z.infer & + Content; + +export const isGetTokenPriceContent = ( + obj: any +): obj is GetTokenPriceContent => { + return GetTokenPriceSchema.safeParse(obj).success; +}; + +interface TokenResponse { + id: string; + symbol: string; + name: string; + market_data: { + current_price: { + usd: number; + }; + market_cap: { + usd: number; + }; + }; +} + +export default { + name: "GET_TOKEN_PRICE_BY_ADDRESS", + similes: [ + "FETCH_TOKEN_PRICE_BY_ADDRESS", + "CHECK_TOKEN_PRICE_BY_ADDRESS", + "LOOKUP_TOKEN_BY_ADDRESS", + ], + validate: async (runtime: IAgentRuntime, message: Memory) => { + await validateCoingeckoConfig(runtime); + return true; + }, + description: + "Get the current USD price for a token using its blockchain address", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + elizaLogger.log("Starting GET_TOKEN_PRICE_BY_ADDRESS handler..."); + + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + try { + elizaLogger.log("Composing token price context..."); + const context = composeContext({ + state, + template: getPriceByAddressTemplate, + }); + + elizaLogger.log("Generating content from template..."); + const result = await generateObject({ + runtime, + context, + modelClass: ModelClass.SMALL, + schema: GetTokenPriceSchema, + }); + + if (!isGetTokenPriceContent(result.object)) { + elizaLogger.error("Invalid token price request format"); + return false; + } + + const content = result.object; + elizaLogger.log("Generated content:", content); + + // Get API configuration + const config = await validateCoingeckoConfig(runtime); + const { baseUrl, apiKey } = getApiConfig(config); + + // Fetch token data + elizaLogger.log("Fetching token data..."); + const response = await axios.get( + `${baseUrl}/coins/${content.chainId}/contract/${content.tokenAddress}`, + { + headers: { + accept: "application/json", + "x-cg-pro-api-key": apiKey, + }, + } + ); + + const tokenData = response.data; + if (!tokenData.market_data?.current_price?.usd) { + throw new Error( + `No price data available for token ${content.tokenAddress} on ${content.chainId}` + ); + } + + // Format response + const parts = [ + `${tokenData.name} (${tokenData.symbol.toUpperCase()})`, + `Address: ${content.tokenAddress}`, + `Chain: ${content.chainId}`, + `Price: $${tokenData.market_data.current_price.usd.toFixed(6)} USD`, + ]; + + if (tokenData.market_data.market_cap?.usd) { + parts.push( + `Market Cap: $${tokenData.market_data.market_cap.usd.toLocaleString()} USD` + ); + } + + const responseText = parts.join("\n"); + elizaLogger.success("Token price data retrieved successfully!"); + + if (callback) { + callback({ + text: responseText, + content: { + token: { + name: tokenData.name, + symbol: tokenData.symbol, + address: content.tokenAddress, + chain: content.chainId, + price: tokenData.market_data.current_price.usd, + marketCap: tokenData.market_data.market_cap?.usd, + }, + }, + }); + } + + return true; + } catch (error) { + elizaLogger.error( + "Error in GET_TOKEN_PRICE_BY_ADDRESS handler:", + error + ); + + let errorMessage; + if (error.response?.status === 429) { + errorMessage = "Rate limit exceeded. Please try again later."; + } else if (error.response?.status === 403) { + errorMessage = + "This endpoint requires a CoinGecko Pro API key. Please upgrade your plan to access this data."; + } else if (error.response?.status === 400) { + errorMessage = + "Invalid request parameters. Please check your input."; + } else { + errorMessage = + "Failed to fetch token price. Please try again later."; + } + + if (callback) { + callback({ + text: errorMessage, + content: { + error: error.message, + statusCode: error.response?.status, + requiresProPlan: error.response?.status === 403, + }, + }); + } + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "What's the price of the USDC token on Ethereum? The address is 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + }, + }, + { + user: "{{agent}}", + content: { + text: "I'll check the USDC token price for you.", + action: "GET_TOKEN_PRICE_BY_ADDRESS", + }, + }, + { + user: "{{agent}}", + content: { + text: "USD Coin (USDC)\nAddress: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\nChain: ethereum\nPrice: {{dynamic}} USD\nMarket Cap: ${{dynamic}} USD", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-coingecko/src/index.ts b/packages/plugin-coingecko/src/index.ts index 5aceca34b29b..0404c14f1317 100644 --- a/packages/plugin-coingecko/src/index.ts +++ b/packages/plugin-coingecko/src/index.ts @@ -1,6 +1,7 @@ import { Plugin } from "@elizaos/core"; import getMarkets from "./actions/getMarkets"; import getPrice from "./actions/getPrice"; +import getPricePerAddress from "./actions/getPricePerAddress"; import getTopGainersLosers from "./actions/getTopGainersLosers"; import getTrending from "./actions/getTrending"; import { categoriesProvider } from "./providers/categoriesProvider"; @@ -9,7 +10,13 @@ import { coinsProvider } from "./providers/coinsProvider"; export const coingeckoPlugin: Plugin = { name: "coingecko", description: "CoinGecko Plugin for Eliza", - actions: [getPrice, getTrending, getMarkets, getTopGainersLosers], + actions: [ + getPrice, + getPricePerAddress, + getTrending, + getMarkets, + getTopGainersLosers, + ], evaluators: [], providers: [categoriesProvider, coinsProvider], }; diff --git a/packages/plugin-coingecko/src/templates/priceAddress.ts b/packages/plugin-coingecko/src/templates/priceAddress.ts new file mode 100644 index 000000000000..429841374a78 --- /dev/null +++ b/packages/plugin-coingecko/src/templates/priceAddress.ts @@ -0,0 +1,52 @@ +export const getPriceByAddressTemplate = ` +Extract the following parameters for token price data: +- **chainId** (string): The blockchain network ID (e.g., "ethereum", "polygon", "binance-smart-chain") +- **tokenAddress** (string): The contract address of the token +- **include_market_cap** (boolean): Whether to include market cap data - defaults to true + +Normalize chain IDs to lowercase names: ethereum, polygon, binance-smart-chain, avalanche, fantom, arbitrum, optimism, etc. +Token address should be the complete address string, maintaining its original case. + +Provide the values in the following JSON format: + +\`\`\`json +{ + "chainId": "ethereum", + "tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "include_market_cap": true +} +\`\`\` + +Example request: "What's the price of USDC on Ethereum? Address: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +Example response: +\`\`\`json +{ + "chainId": "ethereum", + "tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "include_market_cap": true +} +\`\`\` + +Example request: "Check the price for this token on Polygon: 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" +Example response: +\`\`\`json +{ + "chainId": "polygon", + "tokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "include_market_cap": true +} +\`\`\` + +Example request: "Get price for BONK token on Solana with address HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC" +Example response: +\`\`\`json +{ + "chainId": "solana", + "tokenAddress": "HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} + +Based on the conversation above, use last question made and if the request is for token price data and includes both a chain and address, extract the appropriate parameters and respond with a JSON object. If the request is not related to token price data or missing required information, respond with null.`; diff --git a/packages/plugin-coinmarketcap/package.json b/packages/plugin-coinmarketcap/package.json index 2ad2a6e9ca33..bf07b1da675d 100644 --- a/packages/plugin-coinmarketcap/package.json +++ b/packages/plugin-coinmarketcap/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-coinmarketcap", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-conflux/package.json b/packages/plugin-conflux/package.json index e44b7596dccd..7ed6a8f8810a 100644 --- a/packages/plugin-conflux/package.json +++ b/packages/plugin-conflux/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-conflux", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-cosmos/package.json b/packages/plugin-cosmos/package.json index 83b92f47d7fc..1d25b8fb9152 100644 --- a/packages/plugin-cosmos/package.json +++ b/packages/plugin-cosmos/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-cosmos", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-cronoszkevm/package.json b/packages/plugin-cronoszkevm/package.json index d645f32dfbb9..85ca19f073cf 100644 --- a/packages/plugin-cronoszkevm/package.json +++ b/packages/plugin-cronoszkevm/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-cronoszkevm", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-depin/package.json b/packages/plugin-depin/package.json index a758a887d36c..377b6f1639c4 100644 --- a/packages/plugin-depin/package.json +++ b/packages/plugin-depin/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-depin", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-dexscreener/.npmignore b/packages/plugin-dexscreener/.npmignore new file mode 100644 index 000000000000..078562eceabb --- /dev/null +++ b/packages/plugin-dexscreener/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-dexscreener/eslint.config.mjs b/packages/plugin-dexscreener/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-dexscreener/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-dexscreener/package.json b/packages/plugin-dexscreener/package.json new file mode 100644 index 000000000000..e7975df48059 --- /dev/null +++ b/packages/plugin-dexscreener/package.json @@ -0,0 +1,19 @@ +{ + "name": "@elizaos/plugin-dexscreener", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-dexscreener/src/actions/index.ts b/packages/plugin-dexscreener/src/actions/index.ts new file mode 100644 index 000000000000..70232198dfc3 --- /dev/null +++ b/packages/plugin-dexscreener/src/actions/index.ts @@ -0,0 +1,2 @@ +export * from "./tokenAction"; +export * from "./trendsAction"; diff --git a/packages/plugin-dexscreener/src/actions/tokenAction.ts b/packages/plugin-dexscreener/src/actions/tokenAction.ts new file mode 100644 index 000000000000..0c5ec25dc1f4 --- /dev/null +++ b/packages/plugin-dexscreener/src/actions/tokenAction.ts @@ -0,0 +1,189 @@ +import { Action, IAgentRuntime, Memory, State, HandlerCallback } from "@elizaos/core"; +import { TokenPriceProvider } from "../providers/tokenProvider"; + +export const priceTemplate = `Determine if this is a token price request. If it is one of the specified situations, perform the corresponding action: + +Situation 1: "Get token price" +- Message contains: words like "price", "value", "cost", "worth" AND a token symbol/address +- Example: "What's the price of ETH?" or "How much is BTC worth?" +- Action: Get the current price of the token + +Previous conversation for context: +{{conversation}} + +You are replying to: {{message}} +`; + +export class TokenPriceAction implements Action { + name = "GET_TOKEN_PRICE"; + similes = ["FETCH_TOKEN_PRICE", "CHECK_TOKEN_PRICE", "TOKEN_PRICE"]; + description = "Fetches and returns token price information"; + suppressInitialMessage = true; + template = priceTemplate; + + async validate(runtime: IAgentRuntime, message: Memory): Promise { + const content = typeof message.content === 'string' + ? message.content + : message.content?.text; + + if (!content) return false; + + const hasPriceKeyword = /\b(price|value|worth|cost)\b/i.test(content); + const hasToken = ( + /0x[a-fA-F0-9]{40}/.test(content) || + /[$#]?[a-zA-Z0-9]+/i.test(content) + ); + + return hasPriceKeyword && hasToken; + } + + async handler( + runtime: IAgentRuntime, + message: Memory, + state?: State, + _options: { [key: string]: unknown } = {}, + callback?: HandlerCallback + ): Promise { + try { + // Get the provider + const provider = runtime.providers.find(p => p instanceof TokenPriceProvider); + if (!provider) { + throw new Error("Token price provider not found"); + } + + // Get price data + console.log("Fetching price data..."); + const priceData = await provider.get(runtime, message, state); + console.log("Received price data:", priceData); + + if (priceData.includes("Error")) { + throw new Error(priceData); + } + + // If we have a callback, use it to send the response + if (callback) { + await callback({ + text: priceData, + action: this.name + }); + } + + // Set the response in state to prevent further processing + if (state) { + state.responseData = { + text: priceData, + action: this.name + }; + } + + return true; + + } catch (error) { + console.error("Error in price action handler:", error); + + if (callback) { + await callback({ + text: `Sorry, I couldn't fetch the token price: ${error.message}`, + action: this.name + }); + } + + return false; + } + } + + examples = [ + [ + { + user: "{{user}}", + content: { + text: "check price of eth" + } + }, + { + user: "{{system}}", + content: { + text: "The current price of Ethereum (ETH) is $2,345.67 with a 24h trading volume of $9.87B. The liquidity pool holds $1.23B, and the price has changed +5.43% in the last 24 hours.", + action: "GET_TOKEN_PRICE" + } + } + ], + [ + { + user: "{{user}}", + content: { + text: "How much is BTC worth right now?" + } + }, + { + user: "{{system}}", + content: { + text: "Bitcoin (BTC) is currently trading at $42,567.89. There's $15.23B in liquidity, with a 24h volume of $25.87B. The price is up 2.15% in the last 24 hours.", + action: "GET_TOKEN_PRICE" + } + } + ], + [ + { + user: "{{user}}", + content: { + text: "what's the current value of $bnb" + } + }, + { + user: "{{system}}", + content: { + text: "Binance Coin (BNB) is priced at $345.67 with $5.23B in liquidity. The trading volume over the last 24h is $1.87B, and the price has decreased by 1.23% during this period.", + action: "GET_TOKEN_PRICE" + } + } + ], + [ + { + user: "{{user}}", + content: { + text: "can you tell me the price for USDT?" + } + }, + { + user: "{{system}}", + content: { + text: "Tether (USDT) is maintaining its peg at $1.00 with minimal change (+0.01%). The token has $25.23B in liquidity and has seen $45.87B in trading volume over the past 24 hours.", + action: "GET_TOKEN_PRICE" + } + } + ], + [ + { + user: "{{user}}", + content: { + text: "show me the cost of #SOL" + } + }, + { + user: "{{system}}", + content: { + text: "Solana (SOL) is trading at $123.45, showing strong momentum with an 8.75% increase in the last 24 hours. The liquidity stands at $3.23B with a 24h trading volume of $987.54M.", + action: "GET_TOKEN_PRICE" + } + } + ], + [ + { + user: "{{user}}", + content: { + text: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 price please" + } + }, + { + user: "{{system}}", + content: { + text: "The price of Polygon (MATIC) is currently $1.23, up 3.45% in the past 24 hours. The token has $2.23B in liquidity and has seen $567.54M in trading volume today.", + action: "GET_TOKEN_PRICE" + } + } + ] + ]; +} + +export const tokenPriceAction = new TokenPriceAction(); \ No newline at end of file diff --git a/packages/plugin-dexscreener/src/actions/trendsAction.ts b/packages/plugin-dexscreener/src/actions/trendsAction.ts new file mode 100644 index 000000000000..1e2cda301f99 --- /dev/null +++ b/packages/plugin-dexscreener/src/actions/trendsAction.ts @@ -0,0 +1,383 @@ +import { + Action, + IAgentRuntime, + Memory, + State, + HandlerCallback, + elizaLogger, + getEmbeddingZeroVector, +} from "@elizaos/core"; + +interface TokenProfile { + url: string; + description?: string; + chainId: string; + tokenAddress: string; +} + +const createTokenMemory = async ( + runtime: IAgentRuntime, + _message: Memory, + formattedOutput: string +) => { + const memory: Memory = { + userId: _message.userId, + agentId: _message.agentId, + roomId: _message.roomId, + content: { text: formattedOutput }, + createdAt: Date.now(), + embedding: getEmbeddingZeroVector(), + }; + await runtime.messageManager.createMemory(memory); +}; + +export const latestTokensTemplate = `Determine if this is a request for latest tokens. If it is one of the specified situations, perform the corresponding action: + +Situation 1: "Get latest tokens" +- Message contains: words like "latest", "new", "recent" AND "tokens" +- Example: "Show me the latest tokens" or "What are the new tokens?" +- Action: Get the most recent tokens listed + +Previous conversation for context: +{{conversation}} + +You are replying to: {{message}} +`; + +export class LatestTokensAction implements Action { + name = "GET_LATEST_TOKENS"; + similes = ["FETCH_NEW_TOKENS", "CHECK_RECENT_TOKENS", "LIST_NEW_TOKENS"]; + description = "Get the latest tokens from DexScreener API"; + suppressInitialMessage = true; + template = latestTokensTemplate; + + async validate(runtime: IAgentRuntime, message: Memory): Promise { + const content = + typeof message.content === "string" + ? message.content + : message.content?.text; + + if (!content) return false; + + const hasLatestKeyword = /\b(latest|new|recent)\b/i.test(content); + const hasTokensKeyword = /\b(tokens?|coins?|crypto)\b/i.test(content); + + return hasLatestKeyword && hasTokensKeyword; + } + + async handler( + runtime: IAgentRuntime, + message: Memory, + state?: State, + _options: { [key: string]: unknown } = {}, + callback?: HandlerCallback + ): Promise { + elizaLogger.log("Starting GET_LATEST_TOKENS handler..."); + + try { + const response = await fetch( + "https://api.dexscreener.com/token-profiles/latest/v1", + { + method: "GET", + headers: { + accept: "application/json", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const tokens: TokenProfile[] = await response.json(); + + const formattedOutput = tokens + .map((token) => { + const description = + token.description || "No description available"; + return `Chain: ${token.chainId}\nToken Address: ${token.tokenAddress}\nURL: ${token.url}\nDescription: ${description}\n\n`; + }) + .join(""); + + await createTokenMemory(runtime, message, formattedOutput); + + if (callback) { + await callback({ + text: formattedOutput, + action: this.name, + }); + } + + return true; + } catch (error) { + elizaLogger.error("Error fetching latest tokens:", error); + + if (callback) { + await callback({ + text: `Failed to fetch latest tokens: ${error.message}`, + action: this.name, + }); + } + + return false; + } + } + + examples = [ + [ + { + user: "{{user}}", + content: { + text: "show me the latest tokens", + }, + }, + { + user: "{{system}}", + content: { + text: "Here are the latest tokens added to DexScreener...", + action: "GET_LATEST_TOKENS", + }, + }, + ], + ]; +} + +export const latestBoostedTemplate = `Determine if this is a request for latest boosted tokens. If it is one of the specified situations, perform the corresponding action: + +Situation 1: "Get latest boosted tokens" +- Message contains: words like "latest", "new", "recent" AND "boosted tokens" +- Example: "Show me the latest boosted tokens" or "What are the new promoted tokens?" +- Action: Get the most recent boosted tokens + +Previous conversation for context: +{{conversation}} + +You are replying to: {{message}} +`; + +export class LatestBoostedTokensAction implements Action { + name = "GET_LATEST_BOOSTED_TOKENS"; + similes = [ + "FETCH_NEW_BOOSTED_TOKENS", + "CHECK_RECENT_BOOSTED_TOKENS", + "LIST_NEW_BOOSTED_TOKENS", + ]; + description = "Get the latest boosted tokens from DexScreener API"; + suppressInitialMessage = true; + template = latestBoostedTemplate; + + async validate(runtime: IAgentRuntime, message: Memory): Promise { + const content = + typeof message.content === "string" + ? message.content + : message.content?.text; + + if (!content) return false; + + const hasLatestKeyword = /\b(latest|new|recent)\b/i.test(content); + const hasBoostedKeyword = /\b(boosted|promoted|featured)\b/i.test( + content + ); + const hasTokensKeyword = /\b(tokens?|coins?|crypto)\b/i.test(content); + + return hasLatestKeyword && (hasBoostedKeyword || hasTokensKeyword); + } + + async handler( + runtime: IAgentRuntime, + message: Memory, + state?: State, + _options: { [key: string]: unknown } = {}, + callback?: HandlerCallback + ): Promise { + elizaLogger.log("Starting GET_LATEST_BOOSTED_TOKENS handler..."); + + try { + const response = await fetch( + "https://api.dexscreener.com/token-boosts/latest/v1", + { + method: "GET", + headers: { + accept: "application/json", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const tokens: TokenProfile[] = await response.json(); + + const formattedOutput = tokens + .map((token) => { + const description = + token.description || "No description available"; + return `Chain: ${token.chainId}\nToken Address: ${token.tokenAddress}\nURL: ${token.url}\nDescription: ${description}\n\n`; + }) + .join(""); + + await createTokenMemory(runtime, message, formattedOutput); + + if (callback) { + await callback({ + text: formattedOutput, + action: this.name, + }); + } + + return true; + } catch (error) { + elizaLogger.error("Error fetching latest boosted tokens:", error); + + if (callback) { + await callback({ + text: `Failed to fetch latest boosted tokens: ${error.message}`, + action: this.name, + }); + } + + return false; + } + } + + examples = [ + [ + { + user: "{{user}}", + content: { + text: "show me the latest boosted tokens", + }, + }, + { + user: "{{system}}", + content: { + text: "Here are the latest boosted tokens on DexScreener...", + action: "GET_LATEST_BOOSTED_TOKENS", + }, + }, + ], + ]; +} + +export const topBoostedTemplate = `Determine if this is a request for top boosted tokens. If it is one of the specified situations, perform the corresponding action: + +Situation 1: "Get top boosted tokens" +- Message contains: words like "top", "best", "most" AND "boosted tokens" +- Example: "Show me the top boosted tokens" or "What are the most promoted tokens?" +- Action: Get the tokens with most active boosts + +Previous conversation for context: +{{conversation}} + +You are replying to: {{message}} +`; + +export class TopBoostedTokensAction implements Action { + name = "GET_TOP_BOOSTED_TOKENS"; + similes = [ + "FETCH_MOST_BOOSTED_TOKENS", + "CHECK_HIGHEST_BOOSTED_TOKENS", + "LIST_TOP_BOOSTED_TOKENS", + ]; + description = "Get tokens with most active boosts from DexScreener API"; + suppressInitialMessage = true; + template = topBoostedTemplate; + + async validate(runtime: IAgentRuntime, message: Memory): Promise { + const content = + typeof message.content === "string" + ? message.content + : message.content?.text; + + if (!content) return false; + + const hasTopKeyword = /\b(top|best|most)\b/i.test(content); + const hasBoostedKeyword = /\b(boosted|promoted|featured)\b/i.test( + content + ); + const hasTokensKeyword = /\b(tokens?|coins?|crypto)\b/i.test(content); + + return hasTopKeyword && (hasBoostedKeyword || hasTokensKeyword); + } + + async handler( + runtime: IAgentRuntime, + message: Memory, + state?: State, + _options: { [key: string]: unknown } = {}, + callback?: HandlerCallback + ): Promise { + elizaLogger.log("Starting GET_TOP_BOOSTED_TOKENS handler..."); + + try { + const response = await fetch( + "https://api.dexscreener.com/token-boosts/top/v1", + { + method: "GET", + headers: { + accept: "application/json", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const tokens: TokenProfile[] = await response.json(); + + const formattedOutput = tokens + .map((token) => { + const description = + token.description || "No description available"; + return `Chain: ${token.chainId}\nToken Address: ${token.tokenAddress}\nURL: ${token.url}\nDescription: ${description}\n\n`; + }) + .join(""); + + await createTokenMemory(runtime, message, formattedOutput); + + if (callback) { + await callback({ + text: formattedOutput, + action: this.name, + }); + } + + return true; + } catch (error) { + elizaLogger.error("Error fetching top boosted tokens:", error); + + if (callback) { + await callback({ + text: `Failed to fetch top boosted tokens: ${error.message}`, + action: this.name, + }); + } + + return false; + } + } + + examples = [ + [ + { + user: "{{user}}", + content: { + text: "show me the top boosted tokens", + }, + }, + { + user: "{{system}}", + content: { + text: "Here are the tokens with the most active boosts on DexScreener...", + action: "GET_TOP_BOOSTED_TOKENS", + }, + }, + ], + ]; +} + +export const latestTokensAction = new LatestTokensAction(); +export const latestBoostedTokensAction = new LatestBoostedTokensAction(); +export const topBoostedTokensAction = new TopBoostedTokensAction(); diff --git a/packages/plugin-dexscreener/src/evaluators/index.ts b/packages/plugin-dexscreener/src/evaluators/index.ts new file mode 100644 index 000000000000..c915e8faf68e --- /dev/null +++ b/packages/plugin-dexscreener/src/evaluators/index.ts @@ -0,0 +1 @@ +export * from "./tokenEvaluator.ts"; \ No newline at end of file diff --git a/packages/plugin-dexscreener/src/evaluators/tokenEvaluator.ts b/packages/plugin-dexscreener/src/evaluators/tokenEvaluator.ts new file mode 100644 index 000000000000..44e293d519ce --- /dev/null +++ b/packages/plugin-dexscreener/src/evaluators/tokenEvaluator.ts @@ -0,0 +1,78 @@ +import { Evaluator, IAgentRuntime, Memory, State } from "@elizaos/core"; + +export class TokenPriceEvaluator implements Evaluator { + name = "TOKEN_PRICE_EVALUATOR"; + similes = ["price", "token price", "check price"]; + description = "Evaluates messages for token price requests"; + + async validate(runtime: IAgentRuntime, message: Memory): Promise { + const content = typeof message.content === 'string' + ? message.content + : message.content?.text; + + if (!content) return false; + + // Check for price-related keywords + const hasPriceKeyword = /\b(price|value|worth|cost)\b/i.test(content); + + // Look for either: + // 1. Ethereum address + // 2. Token symbol starting with $ or # + // 3. Token symbol after "of" or "for" (case insensitive) + const hasToken = ( + /0x[a-fA-F0-9]{40}/.test(content) || // Ethereum address + /[$#][a-zA-Z]+/.test(content) || // $TOKEN or #TOKEN format + /\b(of|for)\s+[a-zA-Z0-9]+\b/i.test(content) // "price of TOKEN" format + ); + + return hasPriceKeyword && hasToken; + } + + async handler(_runtime: IAgentRuntime, _message: Memory, _state?: State): Promise { + return "GET_TOKEN_PRICE"; + } + + examples = [ + { + context: "User asking for token price with address", + messages: [ + { + user: "{{user}}", + content: { + text: "What's the price of 0x1234567890123456789012345678901234567890?", + action: "GET_TOKEN_PRICE" + } + } + ], + outcome: "GET_TOKEN_PRICE" + }, + { + context: "User checking token price with $ symbol", + messages: [ + { + user: "{{user}}", + content: { + text: "Check price of $eth", + action: "GET_TOKEN_PRICE" + } + } + ], + outcome: "GET_TOKEN_PRICE" + }, + { + context: "User checking token price with plain symbol", + messages: [ + { + user: "{{user}}", + content: { + text: "What's the value for btc", + action: "GET_TOKEN_PRICE" + } + } + ], + outcome: "GET_TOKEN_PRICE" + } + ]; +} + +export const tokenPriceEvaluator = new TokenPriceEvaluator(); \ No newline at end of file diff --git a/packages/plugin-dexscreener/src/index.ts b/packages/plugin-dexscreener/src/index.ts new file mode 100644 index 000000000000..b5d3508da884 --- /dev/null +++ b/packages/plugin-dexscreener/src/index.ts @@ -0,0 +1,27 @@ +import { Plugin } from "@elizaos/core"; +import { TokenPriceAction } from "./actions/tokenAction"; +import { TokenPriceEvaluator } from "./evaluators/tokenEvaluator"; +import { TokenPriceProvider } from "./providers/tokenProvider"; +import { + LatestTokensAction, + LatestBoostedTokensAction, + TopBoostedTokensAction, +} from "./actions/trendsAction"; + +export * as actions from "./actions"; +export * as evaluators from "./evaluators"; +export * as providers from "./providers"; + +export const dexScreenerPlugin: Plugin = { + name: "dexscreener", + description: + "Dex Screener Plugin with Token Price Action, Token Trends, Evaluators and Providers", + actions: [ + new TokenPriceAction(), + new LatestTokensAction(), + new LatestBoostedTokensAction(), + new TopBoostedTokensAction(), + ], + evaluators: [new TokenPriceEvaluator()], + providers: [new TokenPriceProvider()], +}; diff --git a/packages/plugin-dexscreener/src/providers/index.ts b/packages/plugin-dexscreener/src/providers/index.ts new file mode 100644 index 000000000000..c1f33c3c2093 --- /dev/null +++ b/packages/plugin-dexscreener/src/providers/index.ts @@ -0,0 +1 @@ +export * from "./tokenProvider.ts"; \ No newline at end of file diff --git a/packages/plugin-dexscreener/src/providers/tokenProvider.ts b/packages/plugin-dexscreener/src/providers/tokenProvider.ts new file mode 100644 index 000000000000..49e8e495b49e --- /dev/null +++ b/packages/plugin-dexscreener/src/providers/tokenProvider.ts @@ -0,0 +1,117 @@ +import { Provider, IAgentRuntime, Memory, State } from "@elizaos/core"; + +/* +interface TokenPriceData { + baseToken: { + name: string; + symbol: string; + address: string; + decimals: number; + }; + priceUsd: string; + priceChange: { + h1: number; + h24: number; + }; + liquidityUsd: string; + volume: { + h24: number; + }; +} +*/ + +export class TokenPriceProvider implements Provider { + async get( + runtime: IAgentRuntime, + message: Memory, + _state?: State + ): Promise { + try { + const content = + typeof message.content === "string" + ? message.content + : message.content?.text; + + if (!content) { + throw new Error("No message content provided"); + } + + // Extract token from content + const tokenIdentifier = this.extractToken(content); + if (!tokenIdentifier) { + throw new Error("Could not identify token in message"); + } + + console.log(`Fetching price for token: ${tokenIdentifier}`); + + // Make API request + const isAddress = + /^0x[a-fA-F0-9]{40}$/.test(tokenIdentifier) || + /^[1-9A-HJ-NP-Za-km-z]{43,44}$/.test(tokenIdentifier); // validates for ethAddress and solAddress + const endpoint = isAddress + ? `https://api.dexscreener.com/latest/dex/tokens/${tokenIdentifier}` + : `https://api.dexscreener.com/latest/dex/search?q=${tokenIdentifier}`; + + const response = await fetch(endpoint); + if (!response.ok) { + throw new Error(`API request failed: ${response.statusText}`); + } + + const data = await response.json(); + if (!data.pairs || data.pairs.length === 0) { + throw new Error(`No pricing data found for ${tokenIdentifier}`); + } + + // Get best pair by liquidity + const bestPair = this.getBestPair(data.pairs); + return this.formatPriceData(bestPair); + } catch (error) { + console.error("TokenPriceProvider error:", error); + return `Error: ${error.message}`; + } + } + + private extractToken(content: string): string | null { + // Try different patterns in order of specificity + const patterns = [ + /0x[a-fA-F0-9]{40}/, // ETH address + /[$#]([a-zA-Z0-9]+)/, // $TOKEN or #TOKEN + /(?:price|value|worth|cost)\s+(?:of|for)\s+([a-zA-Z0-9]+)/i, // "price of TOKEN" + /\b(?:of|for)\s+([a-zA-Z0-9]+)\b/i, // "of TOKEN" + ]; + + for (const pattern of patterns) { + const match = content.match(pattern); + if (match) { + // Use captured group if it exists, otherwise use full match + const token = match[1] || match[0]; + // Clean up the token identifier + return token.replace(/[$#]/g, "").toLowerCase().trim(); + } + } + + return null; + } + + private getBestPair(pairs: any[]): any { + return pairs.reduce((best, current) => { + const bestLiquidity = parseFloat(best.liquidity?.usd || "0"); + const currentLiquidity = parseFloat(current.liquidity?.usd || "0"); + return currentLiquidity > bestLiquidity ? current : best; + }, pairs[0]); + } + + private formatPriceData(pair: any): string { + const price = parseFloat(pair.priceUsd).toFixed(6); + //const change24h = pair.priceChange?.h24?.toFixed(2) || "0.00"; + const liquidity = parseFloat( + pair.liquidity?.usd || "0" + ).toLocaleString(); + const volume = parseFloat(pair.volume?.h24 || "0").toLocaleString(); + + return ` + The price of ${pair.baseToken.symbol} is $${price} USD, with liquidity of $${liquidity} and 24h volume of $${volume}.`; + } +} + +export const tokenPriceProvider = new TokenPriceProvider(); diff --git a/packages/plugin-dexscreener/tsconfig.json b/packages/plugin-dexscreener/tsconfig.json new file mode 100644 index 000000000000..834c4dce2695 --- /dev/null +++ b/packages/plugin-dexscreener/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-dexscreener/tsup.config.ts b/packages/plugin-dexscreener/tsup.config.ts new file mode 100644 index 000000000000..e42bf4efeae2 --- /dev/null +++ b/packages/plugin-dexscreener/tsup.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + // Add other modules you want to externalize + ], +}); diff --git a/packages/plugin-echochambers/package.json b/packages/plugin-echochambers/package.json index aa14402ceb1b..efa2d839006f 100644 --- a/packages/plugin-echochambers/package.json +++ b/packages/plugin-echochambers/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-echochambers", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-echochambers/src/echoChamberClient.ts b/packages/plugin-echochambers/src/echoChamberClient.ts index 111985334a4b..72556500a78e 100644 --- a/packages/plugin-echochambers/src/echoChamberClient.ts +++ b/packages/plugin-echochambers/src/echoChamberClient.ts @@ -18,8 +18,7 @@ export class EchoChamberClient { private config: EchoChamberConfig; private apiUrl: string; private modelInfo: ModelInfo; - private pollInterval: NodeJS.Timeout | null = null; - private watchedRoom: string | null = null; + private watchedRooms: Set = new Set(); constructor(runtime: IAgentRuntime, config: EchoChamberConfig) { this.runtime = runtime; @@ -50,9 +49,8 @@ export class EchoChamberClient { }; } - public async setWatchedRoom(roomId: string): Promise { + public async addWatchedRoom(roomId: string): Promise { try { - // Verify room exists const rooms = await this.listRooms(); const room = rooms.find((r) => r.id === roomId); @@ -60,18 +58,21 @@ export class EchoChamberClient { throw new Error(`Room ${roomId} not found`); } - // Set new watched room - this.watchedRoom = roomId; - + this.watchedRooms.add(roomId); elizaLogger.success(`Now watching room: ${room.name}`); } catch (error) { - elizaLogger.error("Error setting watched room:", error); + elizaLogger.error("Error adding watched room:", error); throw error; } } - public getWatchedRoom(): string | null { - return this.watchedRoom; + public removeWatchedRoom(roomId: string): void { + this.watchedRooms.delete(roomId); + elizaLogger.success(`Stopped watching room: ${roomId}`); + } + + public getWatchedRooms(): string[] { + return Array.from(this.watchedRooms); } private async retryOperation( @@ -94,16 +95,18 @@ export class EchoChamberClient { public async start(): Promise { elizaLogger.log("🚀 Starting EchoChamber client..."); try { - // Verify connection by listing rooms await this.retryOperation(() => this.listRooms()); - elizaLogger.success( - `✅ EchoChamber client successfully started for ${this.modelInfo.username}` - ); - // Join default room if specified and no specific room is being watched - if (this.config.defaultRoom && !this.watchedRoom) { - await this.setWatchedRoom(this.config.defaultRoom); + for (const room of this.config.rooms) { + await this.addWatchedRoom(room); } + + elizaLogger.success( + `✅ EchoChamber client started for ${this.modelInfo.username}` + ); + elizaLogger.info( + `Watching rooms: ${Array.from(this.watchedRooms).join(", ")}` + ); } catch (error) { elizaLogger.error("❌ Failed to start EchoChamber client:", error); throw error; @@ -111,23 +114,7 @@ export class EchoChamberClient { } public async stop(): Promise { - if (this.pollInterval) { - clearInterval(this.pollInterval); - this.pollInterval = null; - } - - // Leave watched room if any - if (this.watchedRoom) { - try { - this.watchedRoom = null; - } catch (error) { - elizaLogger.error( - `Error leaving room ${this.watchedRoom}:`, - error - ); - } - } - + this.watchedRooms.clear(); elizaLogger.log("Stopping EchoChamber client..."); } @@ -189,4 +176,43 @@ export class EchoChamberClient { return data.message; }); } + + public async shouldInitiateConversation(room: ChatRoom): Promise { + try { + const history = await this.getRoomHistory(room.id); + if (!history?.length) return true; // Empty room is good to start + + const recentMessages = history + .filter((msg) => msg != null) // Filter out null messages + .sort( + (a, b) => + new Date(b.timestamp).getTime() - + new Date(a.timestamp).getTime() + ); + + if (!recentMessages.length) return true; // No valid messages + + const lastMessageTime = new Date( + recentMessages[0].timestamp + ).getTime(); + const timeSinceLastMessage = Date.now() - lastMessageTime; + + const quietPeriodSeconds = Number( + this.runtime.getSetting("ECHOCHAMBERS_QUIET_PERIOD") || 300 // 5 minutes in seconds + ); + const quietPeriod = quietPeriodSeconds * 1000; // Convert to milliseconds + + if (timeSinceLastMessage < quietPeriod) { + elizaLogger.debug( + `Room ${room.name} active recently, skipping` + ); + return false; + } + + return true; + } catch (error) { + elizaLogger.error(`Error checking conversation state: ${error}`); + return false; + } + } } diff --git a/packages/plugin-echochambers/src/environment.ts b/packages/plugin-echochambers/src/environment.ts index 9bb60ac2b687..b8a852b09e08 100644 --- a/packages/plugin-echochambers/src/environment.ts +++ b/packages/plugin-echochambers/src/environment.ts @@ -34,8 +34,9 @@ export async function validateEchoChamberConfig( const username = runtime.getSetting("ECHOCHAMBERS_USERNAME") || `agent-${runtime.agentId}`; - const defaultRoom = - runtime.getSetting("ECHOCHAMBERS_DEFAULT_ROOM") || "general"; + // Change from DEFAULT_ROOM to ROOMS + const rooms = runtime.getSetting("ECHOCHAMBERS_ROOMS")?.split(",").map(r => r.trim()) || ["general"]; + const pollInterval = Number( runtime.getSetting("ECHOCHAMBERS_POLL_INTERVAL") || 120 ); @@ -50,6 +51,6 @@ export async function validateEchoChamberConfig( elizaLogger.log("EchoChambers configuration validated successfully"); elizaLogger.log(`API URL: ${apiUrl}`); elizaLogger.log(`Username: ${username}`); - elizaLogger.log(`Default Room: ${defaultRoom}`); + elizaLogger.log(`Watching Rooms: ${rooms.join(", ")}`); elizaLogger.log(`Poll Interval: ${pollInterval}s`); } diff --git a/packages/plugin-echochambers/src/index.ts b/packages/plugin-echochambers/src/index.ts index b4b11989bb4c..cc2cbbc617aa 100644 --- a/packages/plugin-echochambers/src/index.ts +++ b/packages/plugin-echochambers/src/index.ts @@ -26,9 +26,10 @@ export const EchoChamberClientInterface: Client = { runtime.getSetting("ECHOCHAMBERS_USERNAME") || `agent-${runtime.agentId}`, model: runtime.modelProvider, - defaultRoom: - runtime.getSetting("ECHOCHAMBERS_DEFAULT_ROOM") || - "general", + rooms: runtime + .getSetting("ECHOCHAMBERS_ROOMS") + ?.split(",") + .map((r) => r.trim()) || ["general"], }; elizaLogger.log("Starting EchoChambers client..."); diff --git a/packages/plugin-echochambers/src/interactions.ts b/packages/plugin-echochambers/src/interactions.ts index 9c5ea938b014..5e9be716d621 100644 --- a/packages/plugin-echochambers/src/interactions.ts +++ b/packages/plugin-echochambers/src/interactions.ts @@ -15,7 +15,7 @@ import { getEmbeddingZeroVector, } from "@elizaos/core"; import { EchoChamberClient } from "./echoChamberClient"; -import { ChatMessage } from "./types"; +import { ChatMessage, ChatRoom } from "./types"; function createMessageTemplate(currentRoom: string, roomTopic: string) { return ( @@ -100,6 +100,30 @@ Consider: ); } +function createConversationStarterTemplate( + currentRoom: string, + roomTopic: string +) { + return ` +# Room Context: +Room: ${currentRoom} +Topic: ${roomTopic} + +# About {{agentName}}: +{{bio}} +{{lore}} +{{knowledge}} + +# Task: Generate a conversation starter that: +1. Is specifically relevant to the room's topic +2. Draws from {{agentName}}'s knowledge +3. Encourages discussion and engagement +4. Is natural and conversational + +Keep it concise and focused on the room's topic. +${messageCompletionFooter}`; +} + export class InteractionClient { private client: EchoChamberClient; private runtime: IAgentRuntime; @@ -111,6 +135,7 @@ export class InteractionClient { { message: ChatMessage; response: ChatMessage | null }[] > = new Map(); private pollInterval: NodeJS.Timeout | null = null; + private conversationStarterInterval: NodeJS.Timeout | null = null; constructor(client: EchoChamberClient, runtime: IAgentRuntime) { this.client = client; @@ -122,6 +147,13 @@ export class InteractionClient { this.runtime.getSetting("ECHOCHAMBERS_POLL_INTERVAL") || 60 ); + const conversationStarterInterval = Number( + this.runtime.getSetting( + "ECHOCHAMBERS_CONVERSATION_STARTER_INTERVAL" + ) || 300 + ); + + // Reactive message handling loop const handleInteractionsLoop = () => { this.handleInteractions(); this.pollInterval = setTimeout( @@ -130,7 +162,17 @@ export class InteractionClient { ); }; + // Proactive conversation loop + const conversationStarterLoop = () => { + this.checkForDeadRooms(); + this.conversationStarterInterval = setTimeout( + conversationStarterLoop, + conversationStarterInterval * 1000 + ); + }; + handleInteractionsLoop(); + conversationStarterLoop(); } async stop() { @@ -138,6 +180,11 @@ export class InteractionClient { clearTimeout(this.pollInterval); this.pollInterval = null; } + + if (this.conversationStarterInterval) { + clearTimeout(this.conversationStarterInterval); + this.conversationStarterInterval = null; + } } private async buildMessageThread( @@ -216,14 +263,13 @@ export class InteractionClient { elizaLogger.log("Checking EchoChambers interactions"); try { - const defaultRoom = this.runtime.getSetting( - "ECHOCHAMBERS_DEFAULT_ROOM" - ); + // Get all watched rooms from the client + const watchedRooms = this.client.getWatchedRooms(); const rooms = await this.client.listRooms(); for (const room of rooms) { - // Only process messages from the default room if specified - if (defaultRoom && room.id !== defaultRoom) { + // Only process messages from watched rooms + if (!watchedRooms.includes(room.id)) { continue; } @@ -232,7 +278,7 @@ export class InteractionClient { // Get only the most recent message that we should process const latestMessages = messages - .filter((msg) => !this.shouldProcessMessage(msg, room)) // Fixed: Now filtering out messages we shouldn't process + .filter((msg) => this.shouldProcessMessage(msg, room)) .sort( (a, b) => new Date(b.timestamp).getTime() - @@ -247,7 +293,7 @@ export class InteractionClient { const roomHistory = this.messageHistory.get(room.id) || []; roomHistory.push({ message: latestMessage, - response: null, // Will be updated when we respond + response: null, }); this.messageHistory.set(room.id, roomHistory); @@ -275,9 +321,18 @@ export class InteractionClient { private async handleMessage(message: ChatMessage, roomTopic: string) { try { + elizaLogger.debug("Processing message:", { + id: message.id, + room: message.roomId, + sender: message?.sender?.username, + content: message.content?.substring(0, 50) + "...", // First 50 chars + }); + const roomId = stringToUuid(message.roomId); const userId = stringToUuid(message.sender.username); + elizaLogger.debug("Converted IDs:", { roomId, userId }); + // Ensure connection exists await this.runtime.ensureConnection( userId, @@ -423,6 +478,150 @@ export class InteractionClient { await this.runtime.evaluate(memory, state, true); } catch (error) { elizaLogger.error("Error handling message:", error); + elizaLogger.debug("Message that caused error:", { + message, + roomTopic, + }); + } + } + + private async checkForDeadRooms() { + try { + const watchedRooms = this.client.getWatchedRooms(); + elizaLogger.debug( + "Starting dead room check. Watched rooms:", + watchedRooms + ); + + const rooms = await this.client.listRooms(); + elizaLogger.debug( + "Available rooms:", + rooms.map((r) => ({ id: r.id, name: r.name })) + ); + + for (const roomId of watchedRooms) { + try { + elizaLogger.debug(`Checking room ${roomId}`); + + const room = rooms.find((r) => r.id === roomId); + if (!room) { + elizaLogger.debug(`Room ${roomId} not found, skipping`); + continue; + } + + // Log room details + elizaLogger.debug("Room details:", { + id: room.id, + name: room.name, + topic: room.topic, + }); + + // Random check with logging + const randomCheck = Math.random(); + elizaLogger.debug( + `Random check for ${room.name}: ${randomCheck}` + ); + + if (randomCheck > 0.8) { + elizaLogger.debug( + `Checking conversation state for ${room.name}` + ); + + const shouldInitiate = + await this.client.shouldInitiateConversation(room); + elizaLogger.debug( + `Should initiate conversation in ${room.name}:`, + shouldInitiate + ); + + if (shouldInitiate) { + elizaLogger.debug( + `Starting conversation initiation in ${room.name}` + ); + await this.initiateConversation(room); + elizaLogger.debug( + `Completed conversation initiation in ${room.name}` + ); + } + } + } catch (roomError: any) { + // Log individual room errors without stopping the loop + elizaLogger.error(`Error processing room ${roomId}:`, { + error: roomError?.message || roomError, + stack: roomError?.stack, + }); + } + } + } catch (error: any) { + elizaLogger.error( + "Error in checkForDeadRooms:", + error?.message || error || "Unknown error" + ); + elizaLogger.debug("Full error details:", { + error, + stack: error?.stack, + type: typeof error, + }); + } + } + + private async initiateConversation(room: ChatRoom) { + try { + elizaLogger.debug(`Starting initiateConversation for ${room.name}`); + + // Create a dummy memory instead of passing null + const dummyMemory: Memory = { + id: stringToUuid("conversation-starter"), + userId: this.runtime.agentId, + agentId: this.runtime.agentId, + roomId: stringToUuid(room.id), + content: { + text: "", + source: "echochambers", + thread: [], + }, + createdAt: Date.now(), + embedding: getEmbeddingZeroVector(), + }; + + const state = await this.runtime.composeState(dummyMemory); + elizaLogger.debug("Composed state for conversation"); + + const context = composeContext({ + state, + template: createConversationStarterTemplate( + room.name, + room.topic + ), + }); + elizaLogger.debug("Created conversation context"); + + const content = await generateMessageResponse({ + runtime: this.runtime, + context, + modelClass: ModelClass.SMALL, + }); + elizaLogger.debug("Generated response content:", { + hasContent: !!content, + textLength: content?.text?.length, + }); + + if (content?.text) { + elizaLogger.debug(`Sending message to ${room.name}`); + await this.client.sendMessage(room.id, content.text); + elizaLogger.info( + `Started conversation in ${room.name} (Topic: ${room.topic})` + ); + } + } catch (error: any) { + elizaLogger.error( + `Error in initiateConversation for ${room.name}:`, + { + error: error?.message || error, + stack: error?.stack, + } + ); + throw error; // Re-throw to be caught by parent } } } diff --git a/packages/plugin-echochambers/src/types.ts b/packages/plugin-echochambers/src/types.ts index 887758813eb0..b8392c75b771 100644 --- a/packages/plugin-echochambers/src/types.ts +++ b/packages/plugin-echochambers/src/types.ts @@ -24,7 +24,7 @@ export interface ChatRoom { export interface EchoChamberConfig { apiUrl: string; // Base URL for the EchoChambers API apiKey: string; // Required API key for authenticated endpoints - defaultRoom?: string; // Optional default room to join on startup + rooms: string[]; // list of rooms to listen on startup username?: string; // Optional custom username (defaults to agent-{agentId}) model?: string; // Optional model name (defaults to runtime.modelProvider) } diff --git a/packages/plugin-evm/README.md b/packages/plugin-evm/README.md index 107484b4b1ec..2f6b0d71fbf1 100644 --- a/packages/plugin-evm/README.md +++ b/packages/plugin-evm/README.md @@ -111,6 +111,71 @@ Swap tokens on the same chain using LiFi: Swap 1 ETH for USDC on Base ``` +### 4. Propose + +Propose a proposal to a governor on a specific chain. + +- **Proposal** + - **Targets** + - **Values** + - **Calldatas** + - **Description** +- **Chain** +- **Governor** + +**Example usage:** + +```bash +Propose a proposal to the 0xdeadbeef00000000000000000000000000000000 governor on Ethereum to transfer 1 ETH to 0xRecipient. +``` + +### 5. Vote + +Vote on a proposal to a governor on a specific chain. + +- **Proposal ID** +- **Support** +- **Chain** +- **Governor** + +**Example usage:** + +```bash +Vote on the proposal with ID 1 to support the proposal on the 0xdeadbeef00000000000000000000000000000000 governor on Ethereum. +``` + +### 6. Queue + +Queue a proposal to a governor on a specific chain. + +- **Proposal** + - **Targets** + - **Values** + - **Calldatas** + - **Description** +- **Chain** +- **Governor** + +**Example usage:** + +```bash +Queue the proposal to the 0xdeadbeef00000000000000000000000000000000 governor on Ethereum. +``` + +### 7. Execute + +Execute a proposal to a governor on a specific chain. + +- **Proposal ID** +- **Chain** +- **Governor** + +**Example usage:** + +```bash +Execute the proposal with ID 1 on the 0xdeadbeef00000000000000000000000000000000 governor on Ethereum. +``` + ## Development 1. Clone the repository diff --git a/packages/plugin-evm/package.json b/packages/plugin-evm/package.json index 71705165091d..af16ae692adc 100644 --- a/packages/plugin-evm/package.json +++ b/packages/plugin-evm/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-evm", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-evm/src/actions/gov-execute.ts b/packages/plugin-evm/src/actions/gov-execute.ts new file mode 100644 index 000000000000..2aa52807168b --- /dev/null +++ b/packages/plugin-evm/src/actions/gov-execute.ts @@ -0,0 +1,127 @@ +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { executeProposalTemplate } from "../templates"; +import type { ExecuteProposalParams, Transaction } from "../types"; +import governorArtifacts from "../contracts/artifacts/OZGovernor.json"; +import { + ByteArray, + Hex, + encodeFunctionData, + keccak256, + stringToHex, +} from "viem"; + +export { executeProposalTemplate }; + +export class ExecuteAction { + constructor(private walletProvider: WalletProvider) { + this.walletProvider = walletProvider; + } + + async execute(params: ExecuteProposalParams): Promise { + const walletClient = this.walletProvider.getWalletClient(params.chain); + + const descriptionHash = keccak256(stringToHex(params.description)); + + const txData = encodeFunctionData({ + abi: governorArtifacts.abi, + functionName: "execute", + args: [ + params.targets, + params.values, + params.calldatas, + descriptionHash, + ], + }); + + try { + const chainConfig = this.walletProvider.getChainConfigs( + params.chain + ); + + // Log current block before sending transaction + const publicClient = this.walletProvider.getPublicClient( + params.chain + ); + + const hash = await walletClient.sendTransaction({ + account: walletClient.account, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chain: chainConfig, + kzg: { + blobToKzgCommitment: function (_blob: ByteArray): ByteArray { + throw new Error("Function not implemented."); + }, + computeBlobKzgProof: function ( + _blob: ByteArray, + _commitment: ByteArray + ): ByteArray { + throw new Error("Function not implemented."); + }, + }, + }); + + const receipt = await publicClient.waitForTransactionReceipt({ + hash, + }); + + return { + hash, + from: walletClient.account.address, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chainId: this.walletProvider.getChainConfigs(params.chain).id, + logs: receipt.logs, + }; + } catch (error) { + throw new Error(`Vote failed: ${error.message}`); + } + } +} + +export const executeAction = { + name: "execute", + description: "Execute a DAO governance proposal", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback?: any + ) => { + try { + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); + const action = new ExecuteAction(walletProvider); + return await action.execute(options); + } catch (error) { + console.error("Error in vote handler:", error.message); + if (callback) { + callback({ text: `Error: ${error.message}` }); + } + return false; + } + }, + template: executeProposalTemplate, + validate: async (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + return typeof privateKey === "string" && privateKey.startsWith("0x"); + }, + examples: [ + [ + { + user: "user", + content: { + text: "Execute proposal 123 on the governor at 0x1234567890123456789012345678901234567890 on Ethereum", + action: "EXECUTE_PROPOSAL", + }, + }, + ], + ], + similes: ["EXECUTE_PROPOSAL", "GOVERNANCE_EXECUTE"], +}; // TODO: add more examples diff --git a/packages/plugin-evm/src/actions/gov-propose.ts b/packages/plugin-evm/src/actions/gov-propose.ts new file mode 100644 index 000000000000..bc6e618990b7 --- /dev/null +++ b/packages/plugin-evm/src/actions/gov-propose.ts @@ -0,0 +1,123 @@ +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { proposeTemplate } from "../templates"; +import type { ProposeProposalParams, Transaction } from "../types"; +import governorArtifacts from "../contracts/artifacts/OZGovernor.json"; +import { + ByteArray, + Hex, + encodeFunctionData, +} from "viem"; + +export { proposeTemplate }; + +export class ProposeAction { + constructor(private walletProvider: WalletProvider) { + this.walletProvider = walletProvider; + } + + async propose(params: ProposeProposalParams): Promise { + const walletClient = this.walletProvider.getWalletClient(params.chain); + + const txData = encodeFunctionData({ + abi: governorArtifacts.abi, + functionName: "propose", + args: [ + params.targets, + params.values, + params.calldatas, + params.description, + ], + }); + + try { + const chainConfig = this.walletProvider.getChainConfigs( + params.chain + ); + + // Log current block before sending transaction + const publicClient = this.walletProvider.getPublicClient( + params.chain + ); + + const hash = await walletClient.sendTransaction({ + account: walletClient.account, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chain: chainConfig, + kzg: { + blobToKzgCommitment: function (_blob: ByteArray): ByteArray { + throw new Error("Function not implemented."); + }, + computeBlobKzgProof: function ( + _blob: ByteArray, + _commitment: ByteArray + ): ByteArray { + throw new Error("Function not implemented."); + }, + }, + }); + + const receipt = await publicClient.waitForTransactionReceipt({ + hash, + }); + + return { + hash, + from: walletClient.account.address, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chainId: this.walletProvider.getChainConfigs(params.chain).id, + logs: receipt.logs, + }; + } catch (error) { + throw new Error(`Vote failed: ${error.message}`); + } + } +} + +export const proposeAction = { + name: "propose", + description: "Execute a DAO governance proposal", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback?: any + ) => { + try { + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); + const action = new ProposeAction(walletProvider); + return await action.propose(options); + } catch (error) { + console.error("Error in vote handler:", error.message); + if (callback) { + callback({ text: `Error: ${error.message}` }); + } + return false; + } + }, + template: proposeTemplate, + validate: async (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + return typeof privateKey === "string" && privateKey.startsWith("0x"); + }, + examples: [ + [ + { + user: "user", + content: { + text: "Propose transferring 1e18 tokens on the governor at 0x1234567890123456789012345678901234567890 on Ethereum", + action: "PROPOSE", + }, + }, + ], + ], + similes: ["PROPOSE", "GOVERNANCE_PROPOSE"], +}; // TODO: add more examples diff --git a/packages/plugin-evm/src/actions/gov-queue.ts b/packages/plugin-evm/src/actions/gov-queue.ts new file mode 100644 index 000000000000..c54816185d69 --- /dev/null +++ b/packages/plugin-evm/src/actions/gov-queue.ts @@ -0,0 +1,127 @@ +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { queueProposalTemplate } from "../templates"; +import type { QueueProposalParams, Transaction } from "../types"; +import governorArtifacts from "../contracts/artifacts/OZGovernor.json"; +import { + ByteArray, + Hex, + encodeFunctionData, + keccak256, + stringToHex, +} from "viem"; + +export { queueProposalTemplate }; + +export class QueueAction { + constructor(private walletProvider: WalletProvider) { + this.walletProvider = walletProvider; + } + + async queue(params: QueueProposalParams): Promise { + const walletClient = this.walletProvider.getWalletClient(params.chain); + + const descriptionHash = keccak256(stringToHex(params.description)); + + const txData = encodeFunctionData({ + abi: governorArtifacts.abi, + functionName: "queue", + args: [ + params.targets, + params.values, + params.calldatas, + descriptionHash, + ], + }); + + try { + const chainConfig = this.walletProvider.getChainConfigs( + params.chain + ); + + // Log current block before sending transaction + const publicClient = this.walletProvider.getPublicClient( + params.chain + ); + + const hash = await walletClient.sendTransaction({ + account: walletClient.account, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chain: chainConfig, + kzg: { + blobToKzgCommitment: function (_blob: ByteArray): ByteArray { + throw new Error("Function not implemented."); + }, + computeBlobKzgProof: function ( + _blob: ByteArray, + _commitment: ByteArray + ): ByteArray { + throw new Error("Function not implemented."); + }, + }, + }); + + const receipt = await publicClient.waitForTransactionReceipt({ + hash, + }); + + return { + hash, + from: walletClient.account.address, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chainId: this.walletProvider.getChainConfigs(params.chain).id, + logs: receipt.logs, + }; + } catch (error) { + throw new Error(`Vote failed: ${error.message}`); + } + } +} + +export const queueAction = { + name: "queue", + description: "Queue a DAO governance proposal for execution", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback?: any + ) => { + try { + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); + const action = new QueueAction(walletProvider); + return await action.queue(options); + } catch (error) { + console.error("Error in vote handler:", error.message); + if (callback) { + callback({ text: `Error: ${error.message}` }); + } + return false; + } + }, + template: queueProposalTemplate, + validate: async (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + return typeof privateKey === "string" && privateKey.startsWith("0x"); + }, + examples: [ + [ + { + user: "user", + content: { + text: "Queue proposal 123 on the governor at 0x1234567890123456789012345678901234567890 on Ethereum", + action: "QUEUE_PROPOSAL", + }, + }, + ], + ], + similes: ["QUEUE_PROPOSAL", "GOVERNANCE_QUEUE"], +}; // TODO: add more examples diff --git a/packages/plugin-evm/src/actions/gov-vote.ts b/packages/plugin-evm/src/actions/gov-vote.ts new file mode 100644 index 000000000000..becd1319cdfc --- /dev/null +++ b/packages/plugin-evm/src/actions/gov-vote.ts @@ -0,0 +1,135 @@ +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { voteTemplate } from "../templates"; +import type { Transaction, VoteParams } from "../types"; +import governorArtifacts from "../contracts/artifacts/OZGovernor.json"; +import { ByteArray, Hex, encodeFunctionData } from "viem"; + +export { voteTemplate }; + +export class VoteAction { + constructor(private walletProvider: WalletProvider) { + this.walletProvider = walletProvider; + } + + async vote(params: VoteParams): Promise { + const walletClient = this.walletProvider.getWalletClient(params.chain); + + const proposalId = BigInt(params.proposalId.toString()); + const support = BigInt(params.support.toString()); + + const txData = encodeFunctionData({ + abi: governorArtifacts.abi, + functionName: "castVote", + args: [proposalId, support], + }); + + try { + const chainConfig = this.walletProvider.getChainConfigs( + params.chain + ); + + // Log current block before sending transaction + const publicClient = this.walletProvider.getPublicClient( + params.chain + ); + + const hash = await walletClient.sendTransaction({ + account: walletClient.account, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chain: chainConfig, + kzg: { + blobToKzgCommitment: function (_blob: ByteArray): ByteArray { + throw new Error("Function not implemented."); + }, + computeBlobKzgProof: function ( + _blob: ByteArray, + _commitment: ByteArray + ): ByteArray { + throw new Error("Function not implemented."); + }, + }, + }); + + const receipt = await publicClient.waitForTransactionReceipt({ + hash, + }); + + return { + hash, + from: walletClient.account.address, + to: params.governor, + value: BigInt(0), + data: txData as Hex, + chainId: this.walletProvider.getChainConfigs(params.chain).id, + logs: receipt.logs, + }; + } catch (error) { + throw new Error(`Vote failed: ${error.message}`); + } + } +} + +export const voteAction = { + name: "vote", + description: "Vote for a DAO governance proposal", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback?: any + ) => { + try { + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); + const action = new VoteAction(walletProvider); + return await action.vote(options); + } catch (error) { + console.error("Error in vote handler:", error.message); + if (callback) { + callback({ text: `Error: ${error.message}` }); + } + return false; + } + }, + template: voteTemplate, + validate: async (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + return typeof privateKey === "string" && privateKey.startsWith("0x"); + }, + examples: [ + [ + { + user: "user", + content: { + text: "Vote yes on proposal 123 on the governor at 0x1234567890123456789012345678901234567890 on Ethereum", + action: "GOVERNANCE_VOTE", + }, + }, + ], + [ + { + user: "user", + content: { + text: "Vote no on proposal 456 on the governor at 0xabcdef1111111111111111111111111111111111 on Ethereum", + action: "GOVERNANCE_VOTE", + }, + }, + ], + [ + { + user: "user", + content: { + text: "Abstain from voting on proposal 789 on the governor at 0x0000111122223333444455556666777788889999 on Ethereum", + action: "GOVERNANCE_VOTE", + }, + }, + ], + ], + similes: ["VOTE", "GOVERNANCE_VOTE", "CAST_VOTE"], +}; // TODO: add more examples diff --git a/packages/plugin-evm/src/contracts/artifacts/OZGovernor.json b/packages/plugin-evm/src/contracts/artifacts/OZGovernor.json new file mode 100644 index 000000000000..0a8d87811296 --- /dev/null +++ b/packages/plugin-evm/src/contracts/artifacts/OZGovernor.json @@ -0,0 +1,1707 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OZGovernor", + "sourceName": "src/OZGovernor.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IVotes", + "name": "_token", + "type": "address" + }, + { + "internalType": "contract TimelockController", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "uint48", + "name": "_votingDelay", + "type": "uint48" + }, + { + "internalType": "uint32", + "name": "_votingPeriod", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "_proposalThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quorumPercent", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CheckpointUnorderedInsertion", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "voter", + "type": "address" + } + ], + "name": "GovernorAlreadyCastVote", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "GovernorAlreadyQueuedProposal", + "type": "error" + }, + { + "inputs": [], + "name": "GovernorDisabledDeposit", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "proposer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "votes", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "GovernorInsufficientProposerVotes", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "targets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "calldatas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "values", + "type": "uint256" + } + ], + "name": "GovernorInvalidProposalLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quorumNumerator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quorumDenominator", + "type": "uint256" + } + ], + "name": "GovernorInvalidQuorumFraction", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "voter", + "type": "address" + } + ], + "name": "GovernorInvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "GovernorInvalidVoteParams", + "type": "error" + }, + { + "inputs": [], + "name": "GovernorInvalidVoteType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "votingPeriod", + "type": "uint256" + } + ], + "name": "GovernorInvalidVotingPeriod", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "GovernorNonexistentProposal", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "GovernorNotQueuedProposal", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "GovernorOnlyExecutor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "GovernorOnlyProposer", + "type": "error" + }, + { + "inputs": [], + "name": "GovernorQueueNotImplemented", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "proposer", + "type": "address" + } + ], + "name": "GovernorRestrictedProposer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "enum IGovernor.ProposalState", + "name": "current", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "expectedStates", + "type": "bytes32" + } + ], + "name": "GovernorUnexpectedProposalState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "InvalidAccountNonce", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "signatures", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteStart", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteEnd", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "etaSeconds", + "type": "uint256" + } + ], + "name": "ProposalQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldProposalThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newProposalThreshold", + "type": "uint256" + } + ], + "name": "ProposalThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldQuorumNumerator", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newQuorumNumerator", + "type": "uint256" + } + ], + "name": "QuorumNumeratorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldTimelock", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newTimelock", + "type": "address" + } + ], + "name": "TimelockChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "VoteCast", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "reason", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "VoteCastWithParams", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldVotingDelay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVotingDelay", + "type": "uint256" + } + ], + "name": "VotingDelaySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldVotingPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVotingPeriod", + "type": "uint256" + } + ], + "name": "VotingPeriodSet", + "type": "event" + }, + { + "inputs": [], + "name": "BALLOT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COUNTING_MODE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "EXTENDED_BALLOT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "descriptionHash", + "type": "bytes32" + } + ], + "name": "cancel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support", + "type": "uint8" + } + ], + "name": "castVote", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "castVoteBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "castVoteWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "internalType": "string", + "name": "reason", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "castVoteWithReasonAndParams", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "internalType": "string", + "name": "reason", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "castVoteWithReasonAndParamsBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "descriptionHash", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "getVotesWithParams", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "descriptionHash", + "type": "bytes32" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalDeadline", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalEta", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalNeedsQueuing", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalProposer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposalVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "againstVotes", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "forVotes", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "abstainVotes", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "propose", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "descriptionHash", + "type": "bytes32" + } + ], + "name": "queue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "quorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quorumDenominator", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + } + ], + "name": "quorumNumerator", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quorumNumerator", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "quorumReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "relay", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newProposalThreshold", + "type": "uint256" + } + ], + "name": "setProposalThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint48", + "name": "newVotingDelay", + "type": "uint48" + } + ], + "name": "setVotingDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "newVotingPeriod", + "type": "uint32" + } + ], + "name": "setVotingPeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "state", + "outputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timelock", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "descriptionHash", + "type": "bytes32" + } + ], + "name": "timelockSalt", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC5805", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newQuorumNumerator", + "type": "uint256" + } + ], + "name": "updateQuorumNumerator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract TimelockController", + "name": "newTimelock", + "type": "address" + } + ], + "name": "updateTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "voteSucceeded", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x6101806040523480156200001257600080fd5b5060405162004f5738038062004f57833981016040819052620000359162000799565b8481878686866040518060400160405280600b81526020016a27ad1023b7bb32b93737b960a91b81525080620000706200018b60201b60201c565b6200007d826000620001a6565b610120526200008e816001620001a6565b61014052815160208084019190912060e052815190820120610100524660a0526200011c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526003620001338282620008be565b5062000141905083620001df565b6200014c8262000245565b6200015781620002ec565b5050506001600160a01b03166101605262000172816200032d565b506200017e81620003cd565b5050505050505062000a3f565b6040805180820190915260018152603160f81b602082015290565b6000602083511015620001c657620001be8362000436565b9050620001d9565b81620001d38482620008be565b5060ff90505b92915050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b8063ffffffff16600003620002755760405163f1cfbf0560e01b8152600060048201526024015b60405180910390fd5b6008546040805163ffffffff66010000000000009093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff90921666010000000000000263ffffffff60301b19909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b6064808211156200035c5760405163243e544560e01b815260048101839052602481018290526044016200026c565b60006200036862000479565b90506200038d6200037862000495565b620003838562000517565b600a919062000551565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b600b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600080829050601f8151111562000464578260405163305a27a960e01b81526004016200026c91906200098a565b80516200047182620009da565b179392505050565b600062000487600a6200056e565b6001600160d01b0316905090565b6000620004a26101605190565b6001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620004fe575060408051601f3d908101601f19168201909252620004fb91810190620009ff565b60015b62000512576200050d620005be565b905090565b919050565b60006001600160d01b038211156200054d576040516306dfcc6560e41b815260d06004820152602481018390526044016200026c565b5090565b60008062000561858585620005cb565b915091505b935093915050565b80546000908015620005b4576200059a836200058c60018462000a1d565b600091825260209091200190565b54660100000000000090046001600160d01b0316620005b7565b60005b9392505050565b60006200050d4362000734565b825460009081908015620006d5576000620005ed876200058c60018562000a1d565b805490915065ffffffffffff80821691660100000000000090046001600160d01b03169088168211156200063457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036200067257825465ffffffffffff1666010000000000006001600160d01b03891602178355620006c6565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f815291909120945191519092166601000000000000029216919091179101555b94508593506200056692505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316660100000000000002919093161792019190915590508162000566565b600065ffffffffffff8211156200054d576040516306dfcc6560e41b815260306004820152602481018390526044016200026c565b6001600160a01b03811681146200077f57600080fd5b50565b805165ffffffffffff811681146200051257600080fd5b60008060008060008060c08789031215620007b357600080fd5b8651620007c08162000769565b6020880151909650620007d38162000769565b9450620007e36040880162000782565b9350606087015163ffffffff81168114620007fd57600080fd5b809350506080870151915060a087015190509295509295509295565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200084457607f821691505b6020821081036200086557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b957600081815260208120601f850160051c81016020861015620008945750805b601f850160051c820191505b81811015620008b557828155600101620008a0565b5050505b505050565b81516001600160401b03811115620008da57620008da62000819565b620008f281620008eb84546200082f565b846200086b565b602080601f8311600181146200092a5760008415620009115750858301515b600019600386901b1c1916600185901b178555620008b5565b600085815260208120601f198616915b828110156200095b578886015182559484019460019091019084016200093a565b50858210156200097a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620009b9578581018301518582016040015282016200099b565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620008655760001960209190910360031b1b16919050565b60006020828403121562000a1257600080fd5b620005b78262000782565b81810381811115620001d957634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516101605161448f62000ac860003960008181610a9c01528181610f0e0152818161148101528181611562015281816121df0152612470015260006121aa0152600061217d01526000612aa901526000612a81015260006129dc01526000612a0601526000612a30015261448f6000f3fe6080604052600436106102e85760003560e01c80637ecebe0011610190578063c01f9e37116100dc578063deaaa7cc11610095578063ece40cc11161006f578063ece40cc114610a2d578063f23a6e6114610a4d578063f8ce560a14610a6d578063fc0c546a14610a8d57600080fd5b8063deaaa7cc146109b9578063e540d01d146109ed578063eb9019d414610a0d57600080fd5b8063c01f9e37146108e2578063c28bc2fa14610902578063c59057e414610915578063d33219b414610935578063d4a8dd9814610953578063dd4e2ba51461097357600080fd5b80639a802a6d11610149578063a9a9529411610123578063a9a9529414610855578063ab58fb8e14610875578063b58131b0146108ad578063bc197c81146108c257600080fd5b80639a802a6d14610800578063a7713a7014610820578063a890c9101461083557600080fd5b80637ecebe001461072257806384b0196e146107585780638d73b031146107805780638ff262e3146107a057806391ddadf4146107c057806397c3d334146107ec57600080fd5b8063438596321161024f5780635b8d0e0d1161020857806360c4247f116101e257806360c4247f146106a257806379051887146106c25780637b3c71d3146106e25780637d5e81e21461070257600080fd5b80635b8d0e0d146106355780635c573d44146106555780635f398a141461068257600080fd5b80634385963214610517578063452115d6146105615780634bf5d7e914610581578063544ffc9c1461059657806354fd4d50146105eb578063567813881461061557600080fd5b8063160cbed7116102a1578063160cbed71461044e5780632656227d1461046e5780632d63f693146104815780632fe3e261146104a15780633932abb1146104d55780633e4f49e6146104ea57600080fd5b806301ffc9a71461032457806302a251a31461035957806306f3f9e61461038557806306fdde03146103a5578063143489d0146103c7578063150b7a021461041557600080fd5b3661031f57306102f6610ac0565b6001600160a01b03161461031d57604051637485328f60e11b815260040160405180910390fd5b005b600080fd5b34801561033057600080fd5b5061034461033f3660046133cd565b610ad9565b60405190151581526020015b60405180910390f35b34801561036557600080fd5b50600854600160301b900463ffffffff165b604051908152602001610350565b34801561039157600080fd5b5061031d6103a03660046133f7565b610b2b565b3480156103b157600080fd5b506103ba610b3f565b6040516103509190613460565b3480156103d357600080fd5b506103fd6103e23660046133f7565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610350565b34801561042157600080fd5b50610435610430366004613553565b610bd1565b6040516001600160e01b03199091168152602001610350565b34801561045a57600080fd5b5061037761046936600461372a565b610c14565b61037761047c36600461372a565b610ce3565b34801561048d57600080fd5b5061037761049c3660046133f7565b610e57565b3480156104ad57600080fd5b506103777f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b3480156104e157600080fd5b50610377610e78565b3480156104f657600080fd5b5061050a6105053660046133f7565b610e8b565b60405161035091906137f1565b34801561052357600080fd5b506103446105323660046137ff565b60008281526009602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561056d57600080fd5b5061037761057c36600461372a565b610e96565b34801561058d57600080fd5b506103ba610f0a565b3480156105a257600080fd5b506105d06105b13660046133f7565b6000908152600960205260409020805460018201546002909201549092565b60408051938452602084019290925290820152606001610350565b3480156105f757600080fd5b506040805180820190915260018152603160f81b60208201526103ba565b34801561062157600080fd5b50610377610630366004613840565b610fcc565b34801561064157600080fd5b506103776106503660046138b4565b610ff5565b34801561066157600080fd5b506103776106703660046133f7565b6001600160601b03193060601b161890565b34801561068e57600080fd5b5061037761069d36600461396e565b611154565b3480156106ae57600080fd5b506103776106bd3660046133f7565b6111a9565b3480156106ce57600080fd5b5061031d6106dd366004613a05565b611237565b3480156106ee57600080fd5b506103776106fd366004613a22565b611248565b34801561070e57600080fd5b5061037761071d366004613a7b565b611290565b34801561072e57600080fd5b5061037761073d366004613b2f565b6001600160a01b031660009081526002602052604090205490565b34801561076457600080fd5b5061076d611349565b6040516103509796959493929190613b87565b34801561078c57600080fd5b5061034461079b3660046133f7565b61138f565b3480156107ac57600080fd5b506103776107bb366004613bf7565b6113ab565b3480156107cc57600080fd5b506107d561147d565b60405165ffffffffffff9091168152602001610350565b3480156107f857600080fd5b506064610377565b34801561080c57600080fd5b5061037761081b366004613c48565b611505565b34801561082c57600080fd5b5061037761151c565b34801561084157600080fd5b5061031d610850366004613b2f565b611536565b34801561086157600080fd5b506103446108703660046133f7565b611547565b34801561088157600080fd5b506103776108903660046133f7565b60009081526004602052604090206001015465ffffffffffff1690565b3480156108b957600080fd5b50610377611550565b3480156108ce57600080fd5b506104356108dd366004613ca0565b611642565b3480156108ee57600080fd5b506103776108fd3660046133f7565b611686565b61031d610910366004613d33565b6116c9565b34801561092157600080fd5b5061037761093036600461372a565b611749565b34801561094157600080fd5b50600b546001600160a01b03166103fd565b34801561095f57600080fd5b5061034461096e3660046133f7565b611783565b34801561097f57600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e908201526103ba565b3480156109c557600080fd5b506103777ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b3480156109f957600080fd5b5061031d610a08366004613d76565b61178e565b348015610a1957600080fd5b50610377610a28366004613d9c565b61179f565b348015610a3957600080fd5b5061031d610a483660046133f7565b6117c0565b348015610a5957600080fd5b50610435610a68366004613dc8565b6117d1565b348015610a7957600080fd5b50610377610a883660046133f7565b611815565b348015610a9957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103fd565b6000610ad4600b546001600160a01b031690565b905090565b60006001600160e01b031982166332a2ad4360e11b1480610b0a57506001600160e01b03198216630271189760e51b145b80610b2557506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b33611820565b610b3c8161189a565b50565b606060038054610b4e90613e30565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90613e30565b8015610bc75780601f10610b9c57610100808354040283529160200191610bc7565b820191906000526020600020905b815481529060010190602001808311610baa57829003601f168201915b5050505050905090565b600030610bdc610ac0565b6001600160a01b031614610c0357604051637485328f60e11b815260040160405180910390fd5b50630a85bd0160e11b949350505050565b600080610c2386868686611749565b9050610c3881610c336004611930565b611953565b506000610c488288888888611992565b905065ffffffffffff811615610cc057600082815260046020908152604091829020600101805465ffffffffffff191665ffffffffffff85169081179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a1610cd9565b604051634844252360e11b815260040160405180910390fd5b5095945050505050565b600080610cf286868686611749565b9050610d1281610d026005611930565b610d0c6004611930565b17611953565b506000818152600460205260409020805460ff60f01b1916600160f01b17905530610d3b610ac0565b6001600160a01b031614610dcd5760005b8651811015610dcb57306001600160a01b0316878281518110610d7157610d71613e6a565b60200260200101516001600160a01b031603610dbb57610dbb858281518110610d9c57610d9c613e6a565b60200260200101518051906020012060056119a190919063ffffffff16565b610dc481613e96565b9050610d4c565b505b610dda8187878787611a03565b30610de3610ac0565b6001600160a01b031614158015610e0f57506005546001600160801b03808216600160801b9092041614155b15610e1a5760006005555b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a195945050505050565b600090815260046020526040902054600160a01b900465ffffffffffff1690565b6000610ad460085465ffffffffffff1690565b6000610b2582611a17565b600080610ea586868686611749565b9050610eb581610c336000611930565b506000818152600460205260409020546001600160a01b03163314610ef45760405163233d98e360e01b81523360048201526024015b60405180910390fd5b610f0086868686611b56565b9695505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015610f8b57506040513d6000823e601f3d908101601f19168201604052610f889190810190613eaf565b60015b610fc7575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b600080339050610fed84828560405180602001604052806000815250611b6d565b949350505050565b6000806110d8876110d27f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c61104a8e6001600160a01b0316600090815260026020526040902080546001810190915590565b8d8d60405161105a929190613f1c565b60405180910390208c805190602001206040516020016110b79796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b60405160208183030381529060405280519060200120611b90565b85611bbd565b905080611103576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610eeb565b61114789888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250611c31915050565b9998505050505050505050565b60008033905061119e87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611c31915050565b979650505050505050565b600a805460009182906111bd600184613f2c565b815481106111cd576111cd613e6a565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316858211611210576001600160d01b031695945050505050565b61122461121c87611d13565b600a90611d4a565b6001600160d01b03169695505050505050565b61123f611820565b610b3c81611dff565b600080339050610f0086828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b6d92505050565b60003361129d8184611e65565b6112c55760405163d9b3955760e01b81526001600160a01b0382166004820152602401610eeb565b60006112cf611550565b9050801561133c5760006112fe8360016112e761147d565b6112f19190613f3f565b65ffffffffffff1661179f565b90508181101561133a57604051636121770b60e11b81526001600160a01b03841660048201526024810182905260448101839052606401610eeb565b505b61119e8787878786611f56565b60006060806000806000606061135d612176565b6113656121a3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000818152600960205260408120805460019091015411610b25565b600080611437846110d27ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d78989896114008b6001600160a01b0316600090815260026020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0016110b7565b905080611462576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610eeb565b610f0086858760405180602001604052806000815250611b6d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114f9575060408051601f3d908101601f191682019092526114f691810190613f65565b60015b610fc757610ad46121d0565b60006115128484846121db565b90505b9392505050565b6000611528600a612271565b6001600160d01b0316905090565b61153e611820565b610b3c816122aa565b60006001610b25565b60008061155c60075490565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638e539e8c600161159961147d565b6115a39190613f3f565b6040516001600160e01b031960e084901b16815265ffffffffffff9091166004820152602401602060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190613f82565b9050670de0b6b3a764000061161f8284613f9b565b61163190670de0b6b3a763ffff613fb2565b61163b9190613fdb565b9250505090565b60003061164d610ac0565b6001600160a01b03161461167457604051637485328f60e11b815260040160405180910390fd5b5063bc197c8160e01b95945050505050565b6000818152600460205260408120546116bb90600160d01b810463ffffffff1690600160a01b900465ffffffffffff16613ffd565b65ffffffffffff1692915050565b6116d1611820565b600080856001600160a01b03168585856040516116ef929190613f1c565b60006040518083038185875af1925050503d806000811461172c576040519150601f19603f3d011682016040523d82523d6000602084013e611731565b606091505b50915091506117408282612313565b50505050505050565b60008484848460405160200161176294939291906140aa565b60408051601f19818403018152919052805160209091012095945050505050565b6000610b258261232f565b611796611820565b610b3c81612366565b600061151583836117bb60408051602081019091526000815290565b6121db565b6117c8611820565b610b3c81612404565b6000306117dc610ac0565b6001600160a01b03161461180357604051637485328f60e11b815260040160405180910390fd5b5063f23a6e6160e01b95945050505050565b6000610b2582612445565b33611829610ac0565b6001600160a01b031614611852576040516347096e4760e01b8152336004820152602401610eeb565b3061185b610ac0565b6001600160a01b031614611898576000803660405161187b929190613f1c565b604051809103902090505b8061189160056124ef565b0361188657505b565b6064808211156118c75760405163243e544560e01b81526004810183905260248101829052604401610eeb565b60006118d161151c565b90506118f06118de61147d565b6118e78561255e565b600a9190612592565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b6000816007811115611944576119446137b9565b600160ff919091161b92915050565b60008061195f84610e8b565b905060008361196d83611930565b1603611515578381846040516331b75e4d60e01b8152600401610eeb939291906140f5565b6000610f0086868686866125ad565b81546001600160801b03600160801b8204811691811660018301909116036119cd576119cd6041612753565b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b611a108585858585612765565b5050505050565b600080611a23836127f6565b90506005816007811115611a3957611a396137b9565b14611a445792915050565b6000838152600c60205260409081902054600b549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa158015611a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac19190614117565b15611ad0575060059392505050565b600b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190614117565b15611b4c575060079392505050565b5060029392505050565b6000611b6485858585612930565b95945050505050565b6000611b6485858585611b8b60408051602081019091526000815290565b611c31565b6000610b25611b9d6129cf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000836001600160a01b03163b600003611c1f57600080611bde8585612afa565b5090925090506000816003811115611bf857611bf86137b9565b148015611c165750856001600160a01b0316826001600160a01b0316145b92505050611515565b611c2a848484612b47565b9050611515565b6000611c4186610c336001611930565b506000611c5786611c5189610e57565b856121db565b90506000611c688888888588612c22565b90508351600003611cbf57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051611cb29493929190614139565b60405180910390a261119e565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051611d00959493929190614161565b60405180910390a2979650505050505050565b600065ffffffffffff821115611d46576040516306dfcc6560e41b81526030600482015260248101839052604401610eeb565b5090565b815460009081816005811115611da9576000611d6584612d25565b611d6f9085613f2c565b60008881526020902090915081015465ffffffffffff9081169087161015611d9957809150611da7565b611da4816001613fb2565b92505b505b6000611db787878585612e7e565b90508015611df257611ddc87611dce600184613f2c565b600091825260209091200190565b54600160301b90046001600160d01b031661119e565b6000979650505050505050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b80516000906034811015611e7d576001915050610b25565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14611eb057600192505050610b25565b600080611ebe602885613f2c565b90505b83811015611f3557600080611ef5888481518110611ee157611ee1613e6a565b01602001516001600160f81b031916612ee0565b9150915081611f0d5760019650505050505050610b25565b8060ff166004856001600160a01b0316901b179350505080611f2e90613e96565b9050611ec1565b50856001600160a01b0316816001600160a01b031614935050505092915050565b6000611f6b8686868680519060200120611749565b905084518651141580611f8057508351865114155b80611f8a57508551155b15611fbf57855184518651604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610eeb565b600081815260046020526040902054600160a01b900465ffffffffffff161561200a5780611fec82610e8b565b6040516331b75e4d60e01b8152610eeb9291906000906004016140f5565b6000612014610e78565b61201c61147d565b65ffffffffffff1661202e9190613fb2565b9050600061204960085463ffffffff600160301b9091041690565b600084815260046020526040902080546001600160a01b0319166001600160a01b03871617815590915061207c83611d13565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b199091161781556120a982612f72565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b0381111561210c5761210c613488565b60405190808252806020026020018201604052801561213f57816020015b606081526020019060019003908161212a5790505b508c8961214c8a82613fb2565b8e6040516121629998979695949392919061419b565b60405180910390a150505095945050505050565b6060610ad47f00000000000000000000000000000000000000000000000000000000000000006000612fa3565b6060610ad47f00000000000000000000000000000000000000000000000000000000000000006001612fa3565b6000610ad443611d13565b60007f0000000000000000000000000000000000000000000000000000000000000000604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa15801561224d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190613f82565b805460009080156122a15761228b83611dce600184613f2c565b54600160301b90046001600160d01b0316611515565b60009392505050565b600b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606082612328576123238261304e565b610b25565b5080610b25565b6000818152600960205260408120600281015460018201546123519190613fb2565b61235d610a8885610e57565b11159392505050565b8063ffffffff166000036123905760405163f1cfbf0560e01b815260006004820152602401610eeb565b6008546040805163ffffffff600160301b9093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b60006064612452836111a9565b604051632394e7a360e21b8152600481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e539e8c90602401602060405180830381865afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124db9190613f82565b6124e59190613f9b565b610b259190613fdb565b80546000906001600160801b0380821691600160801b9004168103612518576125186031612753565b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b03821115611d46576040516306dfcc6560e41b815260d0600482015260248101839052604401610eeb565b6000806125a0858585613077565b915091505b935093915050565b600080600b60009054906101000a90046001600160a01b03166001600160a01b031663f27a0c926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126279190613f82565b905060003060601b6001600160601b0319168418600b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790612675908a908a908a906000908890600401614272565b602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190613f82565b6000898152600c602052604080822092909255600b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091612701918b918b918b919088908a906004016142c0565b600060405180830381600087803b15801561271b57600080fd5b505af115801561272f573d6000803e3d6000fd5b5050505061274782426127429190613fb2565b611d13565b98975050505050505050565b634e487b71600052806020526024601cfd5b600b546001600160a01b031663e38335e53486868660003060601b6001600160601b03191688186040518763ffffffff1660e01b81526004016127ac959493929190614272565b6000604051808303818588803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50505060009687525050600c602052505060408320929092555050565b6000818152600460205260408120805460ff600160f01b8204811691600160f81b900416811561282b57506007949350505050565b801561283c57506002949350505050565b600061284786610e57565b90508060000361286d57604051636ad0607560e01b815260048101879052602401610eeb565b600061287761147d565b65ffffffffffff169050808210612895575060009695505050505050565b60006128a088611686565b90508181106128b757506001979650505050505050565b6128c08861232f565b15806128e057506000888152600960205260409020805460019091015411155b156128f357506003979650505050505050565b60008881526004602052604090206001015465ffffffffffff1660000361292257506004979650505050505050565b506005979650505050505050565b60008061293f868686866131cb565b6000818152600c60205260409020549091508015610cd957600b5460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b15801561299d57600080fd5b505af11580156129b1573d6000803e3d6000fd5b5050506000838152600c602052604081205550509050949350505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612a2857507f000000000000000000000000000000000000000000000000000000000000000046145b15612a5257507f000000000000000000000000000000000000000000000000000000000000000090565b610ad4604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103612b345760208401516040850151606086015160001a612b268882858561327c565b955095509550505050612b40565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401612b69929190614318565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612b9e9190614331565b600060405180830381855afa9150503d8060008114612bd9576040519150601f19603f3d011682016040523d82523d6000602084013e612bde565b606091505b5091509150818015612bf257506020815110155b8015610f0057508051630b135d3f60e11b90612c179083016020908101908401613f82565b149695505050505050565b60008581526009602090815260408083206001600160a01b03881684526003810190925282205460ff1615612c75576040516371c6af4960e01b81526001600160a01b0387166004820152602401610eeb565b6001600160a01b03861660009081526003820160205260409020805460ff1916600117905560ff8516612cc15783816000016000828254612cb69190613fb2565b90915550612d1a9050565b60001960ff861601612ce15783816001016000828254612cb69190613fb2565b60011960ff861601612d015783816002016000828254612cb69190613fb2565b6040516303599be160e11b815260040160405180910390fd5b509195945050505050565b600060018211612d33575090565b816001600160801b8210612d4c5760809190911c9060401b5b680100000000000000008210612d675760409190911c9060201b5b6401000000008210612d7e5760209190911c9060101b5b620100008210612d935760109190911c9060081b5b6101008210612da75760089190911c9060041b5b60108210612dba5760049190911c9060021b5b60048210612dc65760011b5b600302600190811c90818581612dde57612dde613fc5565b048201901c90506001818581612df657612df6613fc5565b048201901c90506001818581612e0e57612e0e613fc5565b048201901c90506001818581612e2657612e26613fc5565b048201901c90506001818581612e3e57612e3e613fc5565b048201901c90506001818581612e5657612e56613fc5565b048201901c9050612e75818581612e6f57612e6f613fc5565b04821190565b90039392505050565b60005b81831015612ed8576000612e95848461334b565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612ec457809250612ed2565b612ecf816001613fb2565b93505b50612e81565b509392505050565b60008060f883901c602f81118015612efb5750603a8160ff16105b15612f1057600194602f199091019350915050565b8060ff166040108015612f26575060478160ff16105b15612f3b576001946036199091019350915050565b8060ff166060108015612f51575060678160ff16105b15612f66576001946056199091019350915050565b50600093849350915050565b600063ffffffff821115611d46576040516306dfcc6560e41b81526020600482015260248101839052604401610eeb565b606060ff8314612fbd57612fb683613366565b9050610b25565b818054612fc990613e30565b80601f0160208091040260200160405190810160405280929190818152602001828054612ff590613e30565b80156130425780601f1061301757610100808354040283529160200191613042565b820191906000526020600020905b81548152906001019060200180831161302557829003601f168201915b50505050509050610b25565b80511561305e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b82546000908190801561317057600061309587611dce600185613f2c565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156130d857604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361311157825465ffffffffffff16600160301b6001600160d01b03891602178355613162565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b94508593506125a592505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816125a5565b6000806131da86868686611749565b9050613228816131ea6007611930565b6131f46006611930565b6131fe6002611930565b600161320b60078261434d565b61321690600261444a565b6132209190613f2c565b181818611953565b506000818152600460205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610e469083815260200190565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156132b75750600091506003905082613341565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561330b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661333757506000925060019150829050613341565b9250600091508190505b9450945094915050565b600061335a6002848418613fdb565b61151590848416613fb2565b60606000613373836133a5565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f811115610b2557604051632cd44ac360e21b815260040160405180910390fd5b6000602082840312156133df57600080fd5b81356001600160e01b03198116811461151557600080fd5b60006020828403121561340957600080fd5b5035919050565b60005b8381101561342b578181015183820152602001613413565b50506000910152565b6000815180845261344c816020860160208601613410565b601f01601f19169290920160200192915050565b6020815260006115156020830184613434565b6001600160a01b0381168114610b3c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134c6576134c6613488565b604052919050565b60006001600160401b038211156134e7576134e7613488565b50601f01601f191660200190565b6000613508613503846134ce565b61349e565b905082815283838301111561351c57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261354457600080fd5b611515838335602085016134f5565b6000806000806080858703121561356957600080fd5b843561357481613473565b9350602085013561358481613473565b92506040850135915060608501356001600160401b038111156135a657600080fd5b6135b287828801613533565b91505092959194509250565b60006001600160401b038211156135d7576135d7613488565b5060051b60200190565b600082601f8301126135f257600080fd5b81356020613602613503836135be565b82815260059290921b8401810191818101908684111561362157600080fd5b8286015b8481101561364557803561363881613473565b8352918301918301613625565b509695505050505050565b600082601f83011261366157600080fd5b81356020613671613503836135be565b82815260059290921b8401810191818101908684111561369057600080fd5b8286015b848110156136455780358352918301918301613694565b600082601f8301126136bc57600080fd5b813560206136cc613503836135be565b82815260059290921b840181019181810190868411156136eb57600080fd5b8286015b848110156136455780356001600160401b0381111561370e5760008081fd5b61371c8986838b0101613533565b8452509183019183016136ef565b6000806000806080858703121561374057600080fd5b84356001600160401b038082111561375757600080fd5b613763888389016135e1565b9550602087013591508082111561377957600080fd5b61378588838901613650565b9450604087013591508082111561379b57600080fd5b506137a8878288016136ab565b949793965093946060013593505050565b634e487b7160e01b600052602160045260246000fd5b600881106137ed57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610b2582846137cf565b6000806040838503121561381257600080fd5b82359150602083013561382481613473565b809150509250929050565b803560ff81168114610fc757600080fd5b6000806040838503121561385357600080fd5b823591506138636020840161382f565b90509250929050565b60008083601f84011261387e57600080fd5b5081356001600160401b0381111561389557600080fd5b6020830191508360208285010111156138ad57600080fd5b9250929050565b600080600080600080600060c0888a0312156138cf57600080fd5b873596506138df6020890161382f565b955060408801356138ef81613473565b945060608801356001600160401b038082111561390b57600080fd5b6139178b838c0161386c565b909650945060808a013591508082111561393057600080fd5b61393c8b838c01613533565b935060a08a013591508082111561395257600080fd5b5061395f8a828b01613533565b91505092959891949750929550565b60008060008060006080868803121561398657600080fd5b853594506139966020870161382f565b935060408601356001600160401b03808211156139b257600080fd5b6139be89838a0161386c565b909550935060608801359150808211156139d757600080fd5b506139e488828901613533565b9150509295509295909350565b65ffffffffffff81168114610b3c57600080fd5b600060208284031215613a1757600080fd5b8135611515816139f1565b60008060008060608587031215613a3857600080fd5b84359350613a486020860161382f565b925060408501356001600160401b03811115613a6357600080fd5b613a6f8782880161386c565b95989497509550505050565b60008060008060808587031215613a9157600080fd5b84356001600160401b0380821115613aa857600080fd5b613ab4888389016135e1565b95506020870135915080821115613aca57600080fd5b613ad688838901613650565b94506040870135915080821115613aec57600080fd5b613af8888389016136ab565b93506060870135915080821115613b0e57600080fd5b508501601f81018713613b2057600080fd5b6135b2878235602084016134f5565b600060208284031215613b4157600080fd5b813561151581613473565b600081518084526020808501945080840160005b83811015613b7c57815187529582019590820190600101613b60565b509495945050505050565b60ff60f81b8816815260e060208201526000613ba660e0830189613434565b8281036040840152613bb88189613434565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050613be98185613b4c565b9a9950505050505050505050565b60008060008060808587031215613c0d57600080fd5b84359350613c1d6020860161382f565b92506040850135613c2d81613473565b915060608501356001600160401b038111156135a657600080fd5b600080600060608486031215613c5d57600080fd5b8335613c6881613473565b92506020840135915060408401356001600160401b03811115613c8a57600080fd5b613c9686828701613533565b9150509250925092565b600080600080600060a08688031215613cb857600080fd5b8535613cc381613473565b94506020860135613cd381613473565b935060408601356001600160401b0380821115613cef57600080fd5b613cfb89838a01613650565b94506060880135915080821115613d1157600080fd5b613d1d89838a01613650565b935060808801359150808211156139d757600080fd5b60008060008060608587031215613d4957600080fd5b8435613d5481613473565b93506020850135925060408501356001600160401b03811115613a6357600080fd5b600060208284031215613d8857600080fd5b813563ffffffff8116811461151557600080fd5b60008060408385031215613daf57600080fd5b8235613dba81613473565b946020939093013593505050565b600080600080600060a08688031215613de057600080fd5b8535613deb81613473565b94506020860135613dfb81613473565b9350604086013592506060860135915060808601356001600160401b03811115613e2457600080fd5b6139e488828901613533565b600181811c90821680613e4457607f821691505b602082108103613e6457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613ea857613ea8613e80565b5060010190565b600060208284031215613ec157600080fd5b81516001600160401b03811115613ed757600080fd5b8201601f81018413613ee857600080fd5b8051613ef6613503826134ce565b818152856020838501011115613f0b57600080fd5b611b64826020830160208601613410565b8183823760009101908152919050565b81810381811115610b2557610b25613e80565b65ffffffffffff828116828216039080821115613f5e57613f5e613e80565b5092915050565b600060208284031215613f7757600080fd5b8151611515816139f1565b600060208284031215613f9457600080fd5b5051919050565b8082028115828204841417610b2557610b25613e80565b80820180821115610b2557610b25613e80565b634e487b7160e01b600052601260045260246000fd5b600082613ff857634e487b7160e01b600052601260045260246000fd5b500490565b65ffffffffffff818116838216019080821115613f5e57613f5e613e80565b600081518084526020808501945080840160005b83811015613b7c5781516001600160a01b031687529582019590820190600101614030565b600081518084526020808501808196508360051b8101915082860160005b8581101561409d57828403895261408b848351613434565b98850198935090840190600101614073565b5091979650505050505050565b6080815260006140bd608083018761401c565b82810360208401526140cf8187613b4c565b905082810360408401526140e38186614055565b91505082606083015295945050505050565b8381526060810161410960208301856137cf565b826040830152949350505050565b60006020828403121561412957600080fd5b8151801515811461151557600080fd5b84815260ff84166020820152826040820152608060608201526000610f006080830184613434565b85815260ff8516602082015283604082015260a06060820152600061418960a0830185613434565b82810360808401526127478185613434565b60006101208b8352602060018060a01b038c16818501528160408501526141c48285018c61401c565b915083820360608501526141d8828b613b4c565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561422957601f19878403018552614217838351613434565b948601949250908501906001016141fb565b505086810360a088015261423d818c614055565b9450505050508560c08401528460e08401528281036101008401526142628185613434565b9c9b505050505050505050505050565b60a08152600061428560a083018861401c565b82810360208401526142978188613b4c565b905082810360408401526142ab8187614055565b60608401959095525050608001529392505050565b60c0815260006142d360c083018961401c565b82810360208401526142e58189613b4c565b905082810360408401526142f98188614055565b60608401969096525050608081019290925260a0909101529392505050565b8281526040602082015260006115126040830184613434565b60008251614343818460208701613410565b9190910192915050565b60ff8181168382160190811115610b2557610b25613e80565b600181815b808511156143a157816000190482111561438757614387613e80565b8085161561439457918102915b93841c939080029061436b565b509250929050565b6000826143b857506001610b25565b816143c557506000610b25565b81600181146143db57600281146143e557614401565b6001915050610b25565b60ff8411156143f6576143f6613e80565b50506001821b610b25565b5060208310610133831016604e8410600b8410161715614424575081810a610b25565b61442e8383614366565b806000190482111561444257614442613e80565b029392505050565b600061151560ff8416836143a956fea2646970667358221220f57721fcd41c51ed29de5666546d315810a0f33cc5044218ed54441034104d6064736f6c63430008140033", + "deployedBytecode": "0x6080604052600436106102e85760003560e01c80637ecebe0011610190578063c01f9e37116100dc578063deaaa7cc11610095578063ece40cc11161006f578063ece40cc114610a2d578063f23a6e6114610a4d578063f8ce560a14610a6d578063fc0c546a14610a8d57600080fd5b8063deaaa7cc146109b9578063e540d01d146109ed578063eb9019d414610a0d57600080fd5b8063c01f9e37146108e2578063c28bc2fa14610902578063c59057e414610915578063d33219b414610935578063d4a8dd9814610953578063dd4e2ba51461097357600080fd5b80639a802a6d11610149578063a9a9529411610123578063a9a9529414610855578063ab58fb8e14610875578063b58131b0146108ad578063bc197c81146108c257600080fd5b80639a802a6d14610800578063a7713a7014610820578063a890c9101461083557600080fd5b80637ecebe001461072257806384b0196e146107585780638d73b031146107805780638ff262e3146107a057806391ddadf4146107c057806397c3d334146107ec57600080fd5b8063438596321161024f5780635b8d0e0d1161020857806360c4247f116101e257806360c4247f146106a257806379051887146106c25780637b3c71d3146106e25780637d5e81e21461070257600080fd5b80635b8d0e0d146106355780635c573d44146106555780635f398a141461068257600080fd5b80634385963214610517578063452115d6146105615780634bf5d7e914610581578063544ffc9c1461059657806354fd4d50146105eb578063567813881461061557600080fd5b8063160cbed7116102a1578063160cbed71461044e5780632656227d1461046e5780632d63f693146104815780632fe3e261146104a15780633932abb1146104d55780633e4f49e6146104ea57600080fd5b806301ffc9a71461032457806302a251a31461035957806306f3f9e61461038557806306fdde03146103a5578063143489d0146103c7578063150b7a021461041557600080fd5b3661031f57306102f6610ac0565b6001600160a01b03161461031d57604051637485328f60e11b815260040160405180910390fd5b005b600080fd5b34801561033057600080fd5b5061034461033f3660046133cd565b610ad9565b60405190151581526020015b60405180910390f35b34801561036557600080fd5b50600854600160301b900463ffffffff165b604051908152602001610350565b34801561039157600080fd5b5061031d6103a03660046133f7565b610b2b565b3480156103b157600080fd5b506103ba610b3f565b6040516103509190613460565b3480156103d357600080fd5b506103fd6103e23660046133f7565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610350565b34801561042157600080fd5b50610435610430366004613553565b610bd1565b6040516001600160e01b03199091168152602001610350565b34801561045a57600080fd5b5061037761046936600461372a565b610c14565b61037761047c36600461372a565b610ce3565b34801561048d57600080fd5b5061037761049c3660046133f7565b610e57565b3480156104ad57600080fd5b506103777f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b3480156104e157600080fd5b50610377610e78565b3480156104f657600080fd5b5061050a6105053660046133f7565b610e8b565b60405161035091906137f1565b34801561052357600080fd5b506103446105323660046137ff565b60008281526009602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561056d57600080fd5b5061037761057c36600461372a565b610e96565b34801561058d57600080fd5b506103ba610f0a565b3480156105a257600080fd5b506105d06105b13660046133f7565b6000908152600960205260409020805460018201546002909201549092565b60408051938452602084019290925290820152606001610350565b3480156105f757600080fd5b506040805180820190915260018152603160f81b60208201526103ba565b34801561062157600080fd5b50610377610630366004613840565b610fcc565b34801561064157600080fd5b506103776106503660046138b4565b610ff5565b34801561066157600080fd5b506103776106703660046133f7565b6001600160601b03193060601b161890565b34801561068e57600080fd5b5061037761069d36600461396e565b611154565b3480156106ae57600080fd5b506103776106bd3660046133f7565b6111a9565b3480156106ce57600080fd5b5061031d6106dd366004613a05565b611237565b3480156106ee57600080fd5b506103776106fd366004613a22565b611248565b34801561070e57600080fd5b5061037761071d366004613a7b565b611290565b34801561072e57600080fd5b5061037761073d366004613b2f565b6001600160a01b031660009081526002602052604090205490565b34801561076457600080fd5b5061076d611349565b6040516103509796959493929190613b87565b34801561078c57600080fd5b5061034461079b3660046133f7565b61138f565b3480156107ac57600080fd5b506103776107bb366004613bf7565b6113ab565b3480156107cc57600080fd5b506107d561147d565b60405165ffffffffffff9091168152602001610350565b3480156107f857600080fd5b506064610377565b34801561080c57600080fd5b5061037761081b366004613c48565b611505565b34801561082c57600080fd5b5061037761151c565b34801561084157600080fd5b5061031d610850366004613b2f565b611536565b34801561086157600080fd5b506103446108703660046133f7565b611547565b34801561088157600080fd5b506103776108903660046133f7565b60009081526004602052604090206001015465ffffffffffff1690565b3480156108b957600080fd5b50610377611550565b3480156108ce57600080fd5b506104356108dd366004613ca0565b611642565b3480156108ee57600080fd5b506103776108fd3660046133f7565b611686565b61031d610910366004613d33565b6116c9565b34801561092157600080fd5b5061037761093036600461372a565b611749565b34801561094157600080fd5b50600b546001600160a01b03166103fd565b34801561095f57600080fd5b5061034461096e3660046133f7565b611783565b34801561097f57600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e908201526103ba565b3480156109c557600080fd5b506103777ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b3480156109f957600080fd5b5061031d610a08366004613d76565b61178e565b348015610a1957600080fd5b50610377610a28366004613d9c565b61179f565b348015610a3957600080fd5b5061031d610a483660046133f7565b6117c0565b348015610a5957600080fd5b50610435610a68366004613dc8565b6117d1565b348015610a7957600080fd5b50610377610a883660046133f7565b611815565b348015610a9957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103fd565b6000610ad4600b546001600160a01b031690565b905090565b60006001600160e01b031982166332a2ad4360e11b1480610b0a57506001600160e01b03198216630271189760e51b145b80610b2557506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b33611820565b610b3c8161189a565b50565b606060038054610b4e90613e30565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90613e30565b8015610bc75780601f10610b9c57610100808354040283529160200191610bc7565b820191906000526020600020905b815481529060010190602001808311610baa57829003601f168201915b5050505050905090565b600030610bdc610ac0565b6001600160a01b031614610c0357604051637485328f60e11b815260040160405180910390fd5b50630a85bd0160e11b949350505050565b600080610c2386868686611749565b9050610c3881610c336004611930565b611953565b506000610c488288888888611992565b905065ffffffffffff811615610cc057600082815260046020908152604091829020600101805465ffffffffffff191665ffffffffffff85169081179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a1610cd9565b604051634844252360e11b815260040160405180910390fd5b5095945050505050565b600080610cf286868686611749565b9050610d1281610d026005611930565b610d0c6004611930565b17611953565b506000818152600460205260409020805460ff60f01b1916600160f01b17905530610d3b610ac0565b6001600160a01b031614610dcd5760005b8651811015610dcb57306001600160a01b0316878281518110610d7157610d71613e6a565b60200260200101516001600160a01b031603610dbb57610dbb858281518110610d9c57610d9c613e6a565b60200260200101518051906020012060056119a190919063ffffffff16565b610dc481613e96565b9050610d4c565b505b610dda8187878787611a03565b30610de3610ac0565b6001600160a01b031614158015610e0f57506005546001600160801b03808216600160801b9092041614155b15610e1a5760006005555b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a195945050505050565b600090815260046020526040902054600160a01b900465ffffffffffff1690565b6000610ad460085465ffffffffffff1690565b6000610b2582611a17565b600080610ea586868686611749565b9050610eb581610c336000611930565b506000818152600460205260409020546001600160a01b03163314610ef45760405163233d98e360e01b81523360048201526024015b60405180910390fd5b610f0086868686611b56565b9695505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015610f8b57506040513d6000823e601f3d908101601f19168201604052610f889190810190613eaf565b60015b610fc7575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b600080339050610fed84828560405180602001604052806000815250611b6d565b949350505050565b6000806110d8876110d27f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c61104a8e6001600160a01b0316600090815260026020526040902080546001810190915590565b8d8d60405161105a929190613f1c565b60405180910390208c805190602001206040516020016110b79796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b60405160208183030381529060405280519060200120611b90565b85611bbd565b905080611103576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610eeb565b61114789888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250611c31915050565b9998505050505050505050565b60008033905061119e87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611c31915050565b979650505050505050565b600a805460009182906111bd600184613f2c565b815481106111cd576111cd613e6a565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316858211611210576001600160d01b031695945050505050565b61122461121c87611d13565b600a90611d4a565b6001600160d01b03169695505050505050565b61123f611820565b610b3c81611dff565b600080339050610f0086828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b6d92505050565b60003361129d8184611e65565b6112c55760405163d9b3955760e01b81526001600160a01b0382166004820152602401610eeb565b60006112cf611550565b9050801561133c5760006112fe8360016112e761147d565b6112f19190613f3f565b65ffffffffffff1661179f565b90508181101561133a57604051636121770b60e11b81526001600160a01b03841660048201526024810182905260448101839052606401610eeb565b505b61119e8787878786611f56565b60006060806000806000606061135d612176565b6113656121a3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000818152600960205260408120805460019091015411610b25565b600080611437846110d27ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d78989896114008b6001600160a01b0316600090815260026020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0016110b7565b905080611462576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610eeb565b610f0086858760405180602001604052806000815250611b6d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114f9575060408051601f3d908101601f191682019092526114f691810190613f65565b60015b610fc757610ad46121d0565b60006115128484846121db565b90505b9392505050565b6000611528600a612271565b6001600160d01b0316905090565b61153e611820565b610b3c816122aa565b60006001610b25565b60008061155c60075490565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638e539e8c600161159961147d565b6115a39190613f3f565b6040516001600160e01b031960e084901b16815265ffffffffffff9091166004820152602401602060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190613f82565b9050670de0b6b3a764000061161f8284613f9b565b61163190670de0b6b3a763ffff613fb2565b61163b9190613fdb565b9250505090565b60003061164d610ac0565b6001600160a01b03161461167457604051637485328f60e11b815260040160405180910390fd5b5063bc197c8160e01b95945050505050565b6000818152600460205260408120546116bb90600160d01b810463ffffffff1690600160a01b900465ffffffffffff16613ffd565b65ffffffffffff1692915050565b6116d1611820565b600080856001600160a01b03168585856040516116ef929190613f1c565b60006040518083038185875af1925050503d806000811461172c576040519150601f19603f3d011682016040523d82523d6000602084013e611731565b606091505b50915091506117408282612313565b50505050505050565b60008484848460405160200161176294939291906140aa565b60408051601f19818403018152919052805160209091012095945050505050565b6000610b258261232f565b611796611820565b610b3c81612366565b600061151583836117bb60408051602081019091526000815290565b6121db565b6117c8611820565b610b3c81612404565b6000306117dc610ac0565b6001600160a01b03161461180357604051637485328f60e11b815260040160405180910390fd5b5063f23a6e6160e01b95945050505050565b6000610b2582612445565b33611829610ac0565b6001600160a01b031614611852576040516347096e4760e01b8152336004820152602401610eeb565b3061185b610ac0565b6001600160a01b031614611898576000803660405161187b929190613f1c565b604051809103902090505b8061189160056124ef565b0361188657505b565b6064808211156118c75760405163243e544560e01b81526004810183905260248101829052604401610eeb565b60006118d161151c565b90506118f06118de61147d565b6118e78561255e565b600a9190612592565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b6000816007811115611944576119446137b9565b600160ff919091161b92915050565b60008061195f84610e8b565b905060008361196d83611930565b1603611515578381846040516331b75e4d60e01b8152600401610eeb939291906140f5565b6000610f0086868686866125ad565b81546001600160801b03600160801b8204811691811660018301909116036119cd576119cd6041612753565b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b611a108585858585612765565b5050505050565b600080611a23836127f6565b90506005816007811115611a3957611a396137b9565b14611a445792915050565b6000838152600c60205260409081902054600b549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa158015611a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac19190614117565b15611ad0575060059392505050565b600b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190614117565b15611b4c575060079392505050565b5060029392505050565b6000611b6485858585612930565b95945050505050565b6000611b6485858585611b8b60408051602081019091526000815290565b611c31565b6000610b25611b9d6129cf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000836001600160a01b03163b600003611c1f57600080611bde8585612afa565b5090925090506000816003811115611bf857611bf86137b9565b148015611c165750856001600160a01b0316826001600160a01b0316145b92505050611515565b611c2a848484612b47565b9050611515565b6000611c4186610c336001611930565b506000611c5786611c5189610e57565b856121db565b90506000611c688888888588612c22565b90508351600003611cbf57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051611cb29493929190614139565b60405180910390a261119e565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051611d00959493929190614161565b60405180910390a2979650505050505050565b600065ffffffffffff821115611d46576040516306dfcc6560e41b81526030600482015260248101839052604401610eeb565b5090565b815460009081816005811115611da9576000611d6584612d25565b611d6f9085613f2c565b60008881526020902090915081015465ffffffffffff9081169087161015611d9957809150611da7565b611da4816001613fb2565b92505b505b6000611db787878585612e7e565b90508015611df257611ddc87611dce600184613f2c565b600091825260209091200190565b54600160301b90046001600160d01b031661119e565b6000979650505050505050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b80516000906034811015611e7d576001915050610b25565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14611eb057600192505050610b25565b600080611ebe602885613f2c565b90505b83811015611f3557600080611ef5888481518110611ee157611ee1613e6a565b01602001516001600160f81b031916612ee0565b9150915081611f0d5760019650505050505050610b25565b8060ff166004856001600160a01b0316901b179350505080611f2e90613e96565b9050611ec1565b50856001600160a01b0316816001600160a01b031614935050505092915050565b6000611f6b8686868680519060200120611749565b905084518651141580611f8057508351865114155b80611f8a57508551155b15611fbf57855184518651604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610eeb565b600081815260046020526040902054600160a01b900465ffffffffffff161561200a5780611fec82610e8b565b6040516331b75e4d60e01b8152610eeb9291906000906004016140f5565b6000612014610e78565b61201c61147d565b65ffffffffffff1661202e9190613fb2565b9050600061204960085463ffffffff600160301b9091041690565b600084815260046020526040902080546001600160a01b0319166001600160a01b03871617815590915061207c83611d13565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b199091161781556120a982612f72565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b0381111561210c5761210c613488565b60405190808252806020026020018201604052801561213f57816020015b606081526020019060019003908161212a5790505b508c8961214c8a82613fb2565b8e6040516121629998979695949392919061419b565b60405180910390a150505095945050505050565b6060610ad47f00000000000000000000000000000000000000000000000000000000000000006000612fa3565b6060610ad47f00000000000000000000000000000000000000000000000000000000000000006001612fa3565b6000610ad443611d13565b60007f0000000000000000000000000000000000000000000000000000000000000000604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa15801561224d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190613f82565b805460009080156122a15761228b83611dce600184613f2c565b54600160301b90046001600160d01b0316611515565b60009392505050565b600b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606082612328576123238261304e565b610b25565b5080610b25565b6000818152600960205260408120600281015460018201546123519190613fb2565b61235d610a8885610e57565b11159392505050565b8063ffffffff166000036123905760405163f1cfbf0560e01b815260006004820152602401610eeb565b6008546040805163ffffffff600160301b9093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b60006064612452836111a9565b604051632394e7a360e21b8152600481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e539e8c90602401602060405180830381865afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124db9190613f82565b6124e59190613f9b565b610b259190613fdb565b80546000906001600160801b0380821691600160801b9004168103612518576125186031612753565b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b03821115611d46576040516306dfcc6560e41b815260d0600482015260248101839052604401610eeb565b6000806125a0858585613077565b915091505b935093915050565b600080600b60009054906101000a90046001600160a01b03166001600160a01b031663f27a0c926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126279190613f82565b905060003060601b6001600160601b0319168418600b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790612675908a908a908a906000908890600401614272565b602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190613f82565b6000898152600c602052604080822092909255600b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091612701918b918b918b919088908a906004016142c0565b600060405180830381600087803b15801561271b57600080fd5b505af115801561272f573d6000803e3d6000fd5b5050505061274782426127429190613fb2565b611d13565b98975050505050505050565b634e487b71600052806020526024601cfd5b600b546001600160a01b031663e38335e53486868660003060601b6001600160601b03191688186040518763ffffffff1660e01b81526004016127ac959493929190614272565b6000604051808303818588803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50505060009687525050600c602052505060408320929092555050565b6000818152600460205260408120805460ff600160f01b8204811691600160f81b900416811561282b57506007949350505050565b801561283c57506002949350505050565b600061284786610e57565b90508060000361286d57604051636ad0607560e01b815260048101879052602401610eeb565b600061287761147d565b65ffffffffffff169050808210612895575060009695505050505050565b60006128a088611686565b90508181106128b757506001979650505050505050565b6128c08861232f565b15806128e057506000888152600960205260409020805460019091015411155b156128f357506003979650505050505050565b60008881526004602052604090206001015465ffffffffffff1660000361292257506004979650505050505050565b506005979650505050505050565b60008061293f868686866131cb565b6000818152600c60205260409020549091508015610cd957600b5460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b15801561299d57600080fd5b505af11580156129b1573d6000803e3d6000fd5b5050506000838152600c602052604081205550509050949350505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612a2857507f000000000000000000000000000000000000000000000000000000000000000046145b15612a5257507f000000000000000000000000000000000000000000000000000000000000000090565b610ad4604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103612b345760208401516040850151606086015160001a612b268882858561327c565b955095509550505050612b40565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401612b69929190614318565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612b9e9190614331565b600060405180830381855afa9150503d8060008114612bd9576040519150601f19603f3d011682016040523d82523d6000602084013e612bde565b606091505b5091509150818015612bf257506020815110155b8015610f0057508051630b135d3f60e11b90612c179083016020908101908401613f82565b149695505050505050565b60008581526009602090815260408083206001600160a01b03881684526003810190925282205460ff1615612c75576040516371c6af4960e01b81526001600160a01b0387166004820152602401610eeb565b6001600160a01b03861660009081526003820160205260409020805460ff1916600117905560ff8516612cc15783816000016000828254612cb69190613fb2565b90915550612d1a9050565b60001960ff861601612ce15783816001016000828254612cb69190613fb2565b60011960ff861601612d015783816002016000828254612cb69190613fb2565b6040516303599be160e11b815260040160405180910390fd5b509195945050505050565b600060018211612d33575090565b816001600160801b8210612d4c5760809190911c9060401b5b680100000000000000008210612d675760409190911c9060201b5b6401000000008210612d7e5760209190911c9060101b5b620100008210612d935760109190911c9060081b5b6101008210612da75760089190911c9060041b5b60108210612dba5760049190911c9060021b5b60048210612dc65760011b5b600302600190811c90818581612dde57612dde613fc5565b048201901c90506001818581612df657612df6613fc5565b048201901c90506001818581612e0e57612e0e613fc5565b048201901c90506001818581612e2657612e26613fc5565b048201901c90506001818581612e3e57612e3e613fc5565b048201901c90506001818581612e5657612e56613fc5565b048201901c9050612e75818581612e6f57612e6f613fc5565b04821190565b90039392505050565b60005b81831015612ed8576000612e95848461334b565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612ec457809250612ed2565b612ecf816001613fb2565b93505b50612e81565b509392505050565b60008060f883901c602f81118015612efb5750603a8160ff16105b15612f1057600194602f199091019350915050565b8060ff166040108015612f26575060478160ff16105b15612f3b576001946036199091019350915050565b8060ff166060108015612f51575060678160ff16105b15612f66576001946056199091019350915050565b50600093849350915050565b600063ffffffff821115611d46576040516306dfcc6560e41b81526020600482015260248101839052604401610eeb565b606060ff8314612fbd57612fb683613366565b9050610b25565b818054612fc990613e30565b80601f0160208091040260200160405190810160405280929190818152602001828054612ff590613e30565b80156130425780601f1061301757610100808354040283529160200191613042565b820191906000526020600020905b81548152906001019060200180831161302557829003601f168201915b50505050509050610b25565b80511561305e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b82546000908190801561317057600061309587611dce600185613f2c565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156130d857604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361311157825465ffffffffffff16600160301b6001600160d01b03891602178355613162565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b94508593506125a592505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816125a5565b6000806131da86868686611749565b9050613228816131ea6007611930565b6131f46006611930565b6131fe6002611930565b600161320b60078261434d565b61321690600261444a565b6132209190613f2c565b181818611953565b506000818152600460205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610e469083815260200190565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156132b75750600091506003905082613341565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561330b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661333757506000925060019150829050613341565b9250600091508190505b9450945094915050565b600061335a6002848418613fdb565b61151590848416613fb2565b60606000613373836133a5565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f811115610b2557604051632cd44ac360e21b815260040160405180910390fd5b6000602082840312156133df57600080fd5b81356001600160e01b03198116811461151557600080fd5b60006020828403121561340957600080fd5b5035919050565b60005b8381101561342b578181015183820152602001613413565b50506000910152565b6000815180845261344c816020860160208601613410565b601f01601f19169290920160200192915050565b6020815260006115156020830184613434565b6001600160a01b0381168114610b3c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134c6576134c6613488565b604052919050565b60006001600160401b038211156134e7576134e7613488565b50601f01601f191660200190565b6000613508613503846134ce565b61349e565b905082815283838301111561351c57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261354457600080fd5b611515838335602085016134f5565b6000806000806080858703121561356957600080fd5b843561357481613473565b9350602085013561358481613473565b92506040850135915060608501356001600160401b038111156135a657600080fd5b6135b287828801613533565b91505092959194509250565b60006001600160401b038211156135d7576135d7613488565b5060051b60200190565b600082601f8301126135f257600080fd5b81356020613602613503836135be565b82815260059290921b8401810191818101908684111561362157600080fd5b8286015b8481101561364557803561363881613473565b8352918301918301613625565b509695505050505050565b600082601f83011261366157600080fd5b81356020613671613503836135be565b82815260059290921b8401810191818101908684111561369057600080fd5b8286015b848110156136455780358352918301918301613694565b600082601f8301126136bc57600080fd5b813560206136cc613503836135be565b82815260059290921b840181019181810190868411156136eb57600080fd5b8286015b848110156136455780356001600160401b0381111561370e5760008081fd5b61371c8986838b0101613533565b8452509183019183016136ef565b6000806000806080858703121561374057600080fd5b84356001600160401b038082111561375757600080fd5b613763888389016135e1565b9550602087013591508082111561377957600080fd5b61378588838901613650565b9450604087013591508082111561379b57600080fd5b506137a8878288016136ab565b949793965093946060013593505050565b634e487b7160e01b600052602160045260246000fd5b600881106137ed57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610b2582846137cf565b6000806040838503121561381257600080fd5b82359150602083013561382481613473565b809150509250929050565b803560ff81168114610fc757600080fd5b6000806040838503121561385357600080fd5b823591506138636020840161382f565b90509250929050565b60008083601f84011261387e57600080fd5b5081356001600160401b0381111561389557600080fd5b6020830191508360208285010111156138ad57600080fd5b9250929050565b600080600080600080600060c0888a0312156138cf57600080fd5b873596506138df6020890161382f565b955060408801356138ef81613473565b945060608801356001600160401b038082111561390b57600080fd5b6139178b838c0161386c565b909650945060808a013591508082111561393057600080fd5b61393c8b838c01613533565b935060a08a013591508082111561395257600080fd5b5061395f8a828b01613533565b91505092959891949750929550565b60008060008060006080868803121561398657600080fd5b853594506139966020870161382f565b935060408601356001600160401b03808211156139b257600080fd5b6139be89838a0161386c565b909550935060608801359150808211156139d757600080fd5b506139e488828901613533565b9150509295509295909350565b65ffffffffffff81168114610b3c57600080fd5b600060208284031215613a1757600080fd5b8135611515816139f1565b60008060008060608587031215613a3857600080fd5b84359350613a486020860161382f565b925060408501356001600160401b03811115613a6357600080fd5b613a6f8782880161386c565b95989497509550505050565b60008060008060808587031215613a9157600080fd5b84356001600160401b0380821115613aa857600080fd5b613ab4888389016135e1565b95506020870135915080821115613aca57600080fd5b613ad688838901613650565b94506040870135915080821115613aec57600080fd5b613af8888389016136ab565b93506060870135915080821115613b0e57600080fd5b508501601f81018713613b2057600080fd5b6135b2878235602084016134f5565b600060208284031215613b4157600080fd5b813561151581613473565b600081518084526020808501945080840160005b83811015613b7c57815187529582019590820190600101613b60565b509495945050505050565b60ff60f81b8816815260e060208201526000613ba660e0830189613434565b8281036040840152613bb88189613434565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050613be98185613b4c565b9a9950505050505050505050565b60008060008060808587031215613c0d57600080fd5b84359350613c1d6020860161382f565b92506040850135613c2d81613473565b915060608501356001600160401b038111156135a657600080fd5b600080600060608486031215613c5d57600080fd5b8335613c6881613473565b92506020840135915060408401356001600160401b03811115613c8a57600080fd5b613c9686828701613533565b9150509250925092565b600080600080600060a08688031215613cb857600080fd5b8535613cc381613473565b94506020860135613cd381613473565b935060408601356001600160401b0380821115613cef57600080fd5b613cfb89838a01613650565b94506060880135915080821115613d1157600080fd5b613d1d89838a01613650565b935060808801359150808211156139d757600080fd5b60008060008060608587031215613d4957600080fd5b8435613d5481613473565b93506020850135925060408501356001600160401b03811115613a6357600080fd5b600060208284031215613d8857600080fd5b813563ffffffff8116811461151557600080fd5b60008060408385031215613daf57600080fd5b8235613dba81613473565b946020939093013593505050565b600080600080600060a08688031215613de057600080fd5b8535613deb81613473565b94506020860135613dfb81613473565b9350604086013592506060860135915060808601356001600160401b03811115613e2457600080fd5b6139e488828901613533565b600181811c90821680613e4457607f821691505b602082108103613e6457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613ea857613ea8613e80565b5060010190565b600060208284031215613ec157600080fd5b81516001600160401b03811115613ed757600080fd5b8201601f81018413613ee857600080fd5b8051613ef6613503826134ce565b818152856020838501011115613f0b57600080fd5b611b64826020830160208601613410565b8183823760009101908152919050565b81810381811115610b2557610b25613e80565b65ffffffffffff828116828216039080821115613f5e57613f5e613e80565b5092915050565b600060208284031215613f7757600080fd5b8151611515816139f1565b600060208284031215613f9457600080fd5b5051919050565b8082028115828204841417610b2557610b25613e80565b80820180821115610b2557610b25613e80565b634e487b7160e01b600052601260045260246000fd5b600082613ff857634e487b7160e01b600052601260045260246000fd5b500490565b65ffffffffffff818116838216019080821115613f5e57613f5e613e80565b600081518084526020808501945080840160005b83811015613b7c5781516001600160a01b031687529582019590820190600101614030565b600081518084526020808501808196508360051b8101915082860160005b8581101561409d57828403895261408b848351613434565b98850198935090840190600101614073565b5091979650505050505050565b6080815260006140bd608083018761401c565b82810360208401526140cf8187613b4c565b905082810360408401526140e38186614055565b91505082606083015295945050505050565b8381526060810161410960208301856137cf565b826040830152949350505050565b60006020828403121561412957600080fd5b8151801515811461151557600080fd5b84815260ff84166020820152826040820152608060608201526000610f006080830184613434565b85815260ff8516602082015283604082015260a06060820152600061418960a0830185613434565b82810360808401526127478185613434565b60006101208b8352602060018060a01b038c16818501528160408501526141c48285018c61401c565b915083820360608501526141d8828b613b4c565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561422957601f19878403018552614217838351613434565b948601949250908501906001016141fb565b505086810360a088015261423d818c614055565b9450505050508560c08401528460e08401528281036101008401526142628185613434565b9c9b505050505050505050505050565b60a08152600061428560a083018861401c565b82810360208401526142978188613b4c565b905082810360408401526142ab8187614055565b60608401959095525050608001529392505050565b60c0815260006142d360c083018961401c565b82810360208401526142e58189613b4c565b905082810360408401526142f98188614055565b60608401969096525050608081019290925260a0909101529392505050565b8281526040602082015260006115126040830184613434565b60008251614343818460208701613410565b9190910192915050565b60ff8181168382160190811115610b2557610b25613e80565b600181815b808511156143a157816000190482111561438757614387613e80565b8085161561439457918102915b93841c939080029061436b565b509250929050565b6000826143b857506001610b25565b816143c557506000610b25565b81600181146143db57600281146143e557614401565b6001915050610b25565b60ff8411156143f6576143f6613e80565b50506001821b610b25565b5060208310610133831016604e8410600b8410161715614424575081810a610b25565b61442e8383614366565b806000190482111561444257614442613e80565b029392505050565b600061151560ff8416836143a956fea2646970667358221220f57721fcd41c51ed29de5666546d315810a0f33cc5044218ed54441034104d6064736f6c63430008140033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/plugin-evm/src/contracts/artifacts/TimelockController.json b/packages/plugin-evm/src/contracts/artifacts/TimelockController.json new file mode 100644 index 000000000000..7b384eff73c2 --- /dev/null +++ b/packages/plugin-evm/src/contracts/artifacts/TimelockController.json @@ -0,0 +1,1007 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TimelockController", + "sourceName": "node_modules/@openzeppelin/contracts/governance/TimelockController.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "proposers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + } + ], + "name": "TimelockInsufficientDelay", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "targets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "payloads", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "values", + "type": "uint256" + } + ], + "name": "TimelockInvalidOperationLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TimelockUnauthorizedCaller", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "predecessorId", + "type": "bytes32" + } + ], + "name": "TimelockUnexecutedPredecessor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "operationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "expectedStates", + "type": "bytes32" + } + ], + "name": "TimelockUnexpectedOperationState", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "CallExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "CallSalt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "CallScheduled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "Cancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldDuration", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDuration", + "type": "uint256" + } + ], + "name": "MinDelayChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "CANCELLER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PROPOSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "cancel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getMinDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getOperationState", + "outputs": [ + { + "internalType": "enum TimelockController.OperationState", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperation", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperationBatch", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationDone", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationPending", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationReady", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "schedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "payloads", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "scheduleBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDelay", + "type": "uint256" + } + ], + "name": "updateDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e7738038062001e77833981016040819052620000349162000340565b62000041600030620001b1565b506001600160a01b0381161562000061576200005f600082620001b1565b505b60005b83518110156200010b57620000bc7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1858381518110620000a857620000a8620003c7565b6020026020010151620001b160201b60201c565b50620000f77ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783858381518110620000a857620000a8620003c7565b506200010381620003dd565b905062000064565b5060005b82518110156200016757620001537fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63848381518110620000a857620000a8620003c7565b506200015f81620003dd565b90506200010f565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505062000405565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1662000256576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200020d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200025a565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200028e57600080fd5b919050565b600082601f830112620002a557600080fd5b815160206001600160401b0380831115620002c457620002c462000260565b8260051b604051601f19603f83011681018181108482111715620002ec57620002ec62000260565b6040529384528581018301938381019250878511156200030b57600080fd5b83870191505b848210156200033557620003258262000276565b8352918301919083019062000311565b979650505050505050565b600080600080608085870312156200035757600080fd5b845160208601519094506001600160401b03808211156200037757600080fd5b620003858883890162000293565b945060408701519150808211156200039c57600080fd5b50620003ab8782880162000293565b925050620003bc6060860162000276565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060018201620003fe57634e487b7160e01b600052601160045260246000fd5b5060010190565b611a6280620004156000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f1461056a578063e38335e51461058a578063f23a6e611461059d578063f27a0c92146105c957600080fd5b8063bc197c81146104f1578063c4d252f51461051d578063d45c44351461053d57600080fd5b806391d14854116100c657806391d1485414610468578063a217fddf14610488578063b08e51c01461049d578063b1c5f427146104d157600080fd5b80638065657f146103f45780638f2a0bb0146104145780638f61f4f51461043457600080fd5b80632ab0f5291161015957806336568abe1161013357806336568abe14610367578063584b153e1461038757806364d62353146103a75780637958004c146103c757600080fd5b80632ab0f529146103075780632f2ff15d1461032757806331d507501461034757600080fd5b8063134008d311610195578063134008d31461026057806313bc9f2014610273578063150b7a0214610293578063248a9ca3146102d757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046111c8565b6105de565b005b3480156101f557600080fd5b5061020961020436600461123c565b6106b4565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b6101e761026e366004611266565b6106c5565b34801561027f57600080fd5b5061020961028e3660046112d1565b61077a565b34801561029f57600080fd5b506102be6102ae36600461139f565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b3480156102e357600080fd5b506102526102f23660046112d1565b60009081526020819052604090206001015490565b34801561031357600080fd5b506102096103223660046112d1565b6107a0565b34801561033357600080fd5b506101e7610342366004611406565b6107a9565b34801561035357600080fd5b506102096103623660046112d1565b6107d4565b34801561037357600080fd5b506101e7610382366004611406565b6107f9565b34801561039357600080fd5b506102096103a23660046112d1565b610831565b3480156103b357600080fd5b506101e76103c23660046112d1565b610877565b3480156103d357600080fd5b506103e76103e23660046112d1565b6108ea565b6040516102159190611448565b34801561040057600080fd5b5061025261040f366004611266565b610935565b34801561042057600080fd5b506101e761042f3660046114b4565b610974565b34801561044057600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561047457600080fd5b50610209610483366004611406565b610b0a565b34801561049457600080fd5b50610252600081565b3480156104a957600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104dd57600080fd5b506102526104ec366004611565565b610b33565b3480156104fd57600080fd5b506102be61050c36600461168c565b63bc197c8160e01b95945050505050565b34801561052957600080fd5b506101e76105383660046112d1565b610b78565b34801561054957600080fd5b506102526105583660046112d1565b60009081526001602052604090205490565b34801561057657600080fd5b506101e7610585366004611406565b610c23565b6101e7610598366004611565565b610c48565b3480156105a957600080fd5b506102be6105b8366004611735565b63f23a6e6160e01b95945050505050565b3480156105d557600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161060881610dd5565b6000610618898989898989610935565b90506106248184610de2565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610660969594939291906117c2565b60405180910390a383156106a957807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a091815260200190565b60405180910390a25b505050505050505050565b60006106bf82610e76565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106f1816000610b0a565b6106ff576106ff8133610e9b565b600061070f888888888888610935565b905061071b8185610ed8565b61072788888888610f26565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075f94939291906117ff565b60405180910390a361077081610f9e565b5050505050505050565b600060025b610788836108ea565b600381111561079957610799611432565b1492915050565b6000600361077f565b6000828152602081905260409020600101546107c481610dd5565b6107ce8383610fca565b50505050565b6000806107e0836108ea565b60038111156107f1576107f1611432565b141592915050565b6001600160a01b03811633146108225760405163334bd91960e11b815260040160405180910390fd5b61082c828261105c565b505050565b60008061083d836108ea565b9050600181600381111561085357610853611432565b14806108705750600281600381111561086e5761086e611432565b145b9392505050565b333081146108a85760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b6000818152600160205260408120548060000361090a5750600092915050565b6001810361091b5750600392915050565b4281111561092c5750600192915050565b50600292915050565b6000868686868686604051602001610952969594939291906117c2565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161099e81610dd5565b88871415806109ad5750888514155b156109df576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161089f565b60006109f18b8b8b8b8b8b8b8b610b33565b90506109fd8184610de2565b60005b8a811015610abb5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a3d57610a3d611831565b9050602002016020810190610a529190611847565b8d8d86818110610a6457610a64611831565b905060200201358c8c87818110610a7d57610a7d611831565b9050602002810190610a8f9190611862565b8c8b604051610aa3969594939291906117c2565b60405180910390a3610ab4816118be565b9050610a00565b508315610afd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610af491815260200190565b60405180910390a25b5050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610b54989796959493929190611968565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610ba281610dd5565b610bab82610831565b610be75781610bba60026110c7565b610bc460016110c7565b604051635ead8eb560e01b8152600481019390935217602482015260440161089f565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c3e81610dd5565b6107ce838361105c565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c74816000610b0a565b610c8257610c828133610e9b565b8786141580610c915750878414155b15610cc3576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161089f565b6000610cd58a8a8a8a8a8a8a8a610b33565b9050610ce18185610ed8565b60005b89811015610dbf5760008b8b83818110610d0057610d00611831565b9050602002016020810190610d159190611847565b905060008a8a84818110610d2b57610d2b611831565b9050602002013590503660008a8a86818110610d4957610d49611831565b9050602002810190610d5b9190611862565b91509150610d6b84848484610f26565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610da294939291906117ff565b60405180910390a35050505080610db8906118be565b9050610ce4565b50610dc981610f9e565b50505050505050505050565b610ddf8133610e9b565b50565b610deb826107d4565b15610e1d5781610dfb60006110c7565b604051635ead8eb560e01b81526004810192909252602482015260440161089f565b6000610e2860025490565b905080821015610e5557604051635433660960e01b8152600481018390526024810182905260440161089f565b610e5f8242611a09565b600093845260016020526040909320929092555050565b60006001600160e01b03198216630271189760e51b14806106bf57506106bf826110ea565b610ea58282610b0a565b610ed45760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161089f565b5050565b610ee18261077a565b610ef05781610dfb60026110c7565b8015801590610f055750610f03816107a0565b155b15610ed45760405163121534c360e31b81526004810182905260240161089f565b600080856001600160a01b0316858585604051610f44929190611a1c565b60006040518083038185875af1925050503d8060008114610f81576040519150601f19603f3d011682016040523d82523d6000602084013e610f86565b606091505b5091509150610f95828261111f565b50505050505050565b610fa78161077a565b610fb65780610dfb60026110c7565b600090815260016020819052604090912055565b6000610fd68383610b0a565b611054576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561100c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016106bf565b5060006106bf565b60006110688383610b0a565b15611054576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016106bf565b60008160038111156110db576110db611432565b600160ff919091161b92915050565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316146106bf565b6060826111345761112f8261113b565b6106bf565b50806106bf565b80511561114b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461117b57600080fd5b919050565b60008083601f84011261119257600080fd5b5081356001600160401b038111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b600080600080600080600060c0888a0312156111e357600080fd5b6111ec88611164565b96506020880135955060408801356001600160401b0381111561120e57600080fd5b61121a8a828b01611180565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561124e57600080fd5b81356001600160e01b03198116811461087057600080fd5b60008060008060008060a0878903121561127f57600080fd5b61128887611164565b95506020870135945060408701356001600160401b038111156112aa57600080fd5b6112b689828a01611180565b979a9699509760608101359660809091013595509350505050565b6000602082840312156112e357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611328576113286112ea565b604052919050565b600082601f83011261134157600080fd5b81356001600160401b0381111561135a5761135a6112ea565b61136d601f8201601f1916602001611300565b81815284602083860101111561138257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156113b557600080fd5b6113be85611164565b93506113cc60208601611164565b92506040850135915060608501356001600160401b038111156113ee57600080fd5b6113fa87828801611330565b91505092959194509250565b6000806040838503121561141957600080fd5b8235915061142960208401611164565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061146a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008083601f84011261148257600080fd5b5081356001600160401b0381111561149957600080fd5b6020830191508360208260051b85010111156111c157600080fd5b600080600080600080600080600060c08a8c0312156114d257600080fd5b89356001600160401b03808211156114e957600080fd5b6114f58d838e01611470565b909b50995060208c013591508082111561150e57600080fd5b61151a8d838e01611470565b909950975060408c013591508082111561153357600080fd5b506115408c828d01611470565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561158157600080fd5b88356001600160401b038082111561159857600080fd5b6115a48c838d01611470565b909a50985060208b01359150808211156115bd57600080fd5b6115c98c838d01611470565b909850965060408b01359150808211156115e257600080fd5b506115ef8b828c01611470565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261161e57600080fd5b813560206001600160401b03821115611639576116396112ea565b8160051b611648828201611300565b928352848101820192828101908785111561166257600080fd5b83870192505b8483101561168157823582529183019190830190611668565b979650505050505050565b600080600080600060a086880312156116a457600080fd5b6116ad86611164565b94506116bb60208701611164565b935060408601356001600160401b03808211156116d757600080fd5b6116e389838a0161160d565b945060608801359150808211156116f957600080fd5b61170589838a0161160d565b9350608088013591508082111561171b57600080fd5b5061172888828901611330565b9150509295509295909350565b600080600080600060a0868803121561174d57600080fd5b61175686611164565b945061176460208701611164565b9350604086013592506060860135915060808601356001600160401b0381111561178d57600080fd5b61172888828901611330565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006117ea60a083018688611799565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201526000611827606083018486611799565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185957600080fd5b61087082611164565b6000808335601e1984360301811261187957600080fd5b8301803591506001600160401b0382111561189357600080fd5b6020019150368190038213156111c157600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016118d0576118d06118a8565b5060010190565b81835260006020808501808196508560051b810191508460005b8781101561195b5782840389528135601e1988360301811261191257600080fd5b870185810190356001600160401b0381111561192d57600080fd5b80360382131561193c57600080fd5b611947868284611799565b9a87019a95505050908401906001016118f1565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156119a9576001600160a01b0361199484611164565b1682526020928301929091019060010161197b565b5083810360208501528881526001600160fb1b038911156119c957600080fd5b8860051b9150818a602083013701828103602090810160408501526119f190820187896118d7565b60608401959095525050608001529695505050505050565b808201808211156106bf576106bf6118a8565b818382376000910190815291905056fea2646970667358221220725e11fe22ce11e81db5a04c6b0028ace5a6d8c12cb61ad95d376ed3be9bba0b64736f6c63430008140033", + "deployedBytecode": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f1461056a578063e38335e51461058a578063f23a6e611461059d578063f27a0c92146105c957600080fd5b8063bc197c81146104f1578063c4d252f51461051d578063d45c44351461053d57600080fd5b806391d14854116100c657806391d1485414610468578063a217fddf14610488578063b08e51c01461049d578063b1c5f427146104d157600080fd5b80638065657f146103f45780638f2a0bb0146104145780638f61f4f51461043457600080fd5b80632ab0f5291161015957806336568abe1161013357806336568abe14610367578063584b153e1461038757806364d62353146103a75780637958004c146103c757600080fd5b80632ab0f529146103075780632f2ff15d1461032757806331d507501461034757600080fd5b8063134008d311610195578063134008d31461026057806313bc9f2014610273578063150b7a0214610293578063248a9ca3146102d757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046111c8565b6105de565b005b3480156101f557600080fd5b5061020961020436600461123c565b6106b4565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b6101e761026e366004611266565b6106c5565b34801561027f57600080fd5b5061020961028e3660046112d1565b61077a565b34801561029f57600080fd5b506102be6102ae36600461139f565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b3480156102e357600080fd5b506102526102f23660046112d1565b60009081526020819052604090206001015490565b34801561031357600080fd5b506102096103223660046112d1565b6107a0565b34801561033357600080fd5b506101e7610342366004611406565b6107a9565b34801561035357600080fd5b506102096103623660046112d1565b6107d4565b34801561037357600080fd5b506101e7610382366004611406565b6107f9565b34801561039357600080fd5b506102096103a23660046112d1565b610831565b3480156103b357600080fd5b506101e76103c23660046112d1565b610877565b3480156103d357600080fd5b506103e76103e23660046112d1565b6108ea565b6040516102159190611448565b34801561040057600080fd5b5061025261040f366004611266565b610935565b34801561042057600080fd5b506101e761042f3660046114b4565b610974565b34801561044057600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561047457600080fd5b50610209610483366004611406565b610b0a565b34801561049457600080fd5b50610252600081565b3480156104a957600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104dd57600080fd5b506102526104ec366004611565565b610b33565b3480156104fd57600080fd5b506102be61050c36600461168c565b63bc197c8160e01b95945050505050565b34801561052957600080fd5b506101e76105383660046112d1565b610b78565b34801561054957600080fd5b506102526105583660046112d1565b60009081526001602052604090205490565b34801561057657600080fd5b506101e7610585366004611406565b610c23565b6101e7610598366004611565565b610c48565b3480156105a957600080fd5b506102be6105b8366004611735565b63f23a6e6160e01b95945050505050565b3480156105d557600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161060881610dd5565b6000610618898989898989610935565b90506106248184610de2565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610660969594939291906117c2565b60405180910390a383156106a957807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a091815260200190565b60405180910390a25b505050505050505050565b60006106bf82610e76565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106f1816000610b0a565b6106ff576106ff8133610e9b565b600061070f888888888888610935565b905061071b8185610ed8565b61072788888888610f26565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075f94939291906117ff565b60405180910390a361077081610f9e565b5050505050505050565b600060025b610788836108ea565b600381111561079957610799611432565b1492915050565b6000600361077f565b6000828152602081905260409020600101546107c481610dd5565b6107ce8383610fca565b50505050565b6000806107e0836108ea565b60038111156107f1576107f1611432565b141592915050565b6001600160a01b03811633146108225760405163334bd91960e11b815260040160405180910390fd5b61082c828261105c565b505050565b60008061083d836108ea565b9050600181600381111561085357610853611432565b14806108705750600281600381111561086e5761086e611432565b145b9392505050565b333081146108a85760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b6000818152600160205260408120548060000361090a5750600092915050565b6001810361091b5750600392915050565b4281111561092c5750600192915050565b50600292915050565b6000868686868686604051602001610952969594939291906117c2565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161099e81610dd5565b88871415806109ad5750888514155b156109df576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161089f565b60006109f18b8b8b8b8b8b8b8b610b33565b90506109fd8184610de2565b60005b8a811015610abb5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a3d57610a3d611831565b9050602002016020810190610a529190611847565b8d8d86818110610a6457610a64611831565b905060200201358c8c87818110610a7d57610a7d611831565b9050602002810190610a8f9190611862565b8c8b604051610aa3969594939291906117c2565b60405180910390a3610ab4816118be565b9050610a00565b508315610afd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610af491815260200190565b60405180910390a25b5050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610b54989796959493929190611968565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610ba281610dd5565b610bab82610831565b610be75781610bba60026110c7565b610bc460016110c7565b604051635ead8eb560e01b8152600481019390935217602482015260440161089f565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c3e81610dd5565b6107ce838361105c565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c74816000610b0a565b610c8257610c828133610e9b565b8786141580610c915750878414155b15610cc3576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161089f565b6000610cd58a8a8a8a8a8a8a8a610b33565b9050610ce18185610ed8565b60005b89811015610dbf5760008b8b83818110610d0057610d00611831565b9050602002016020810190610d159190611847565b905060008a8a84818110610d2b57610d2b611831565b9050602002013590503660008a8a86818110610d4957610d49611831565b9050602002810190610d5b9190611862565b91509150610d6b84848484610f26565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610da294939291906117ff565b60405180910390a35050505080610db8906118be565b9050610ce4565b50610dc981610f9e565b50505050505050505050565b610ddf8133610e9b565b50565b610deb826107d4565b15610e1d5781610dfb60006110c7565b604051635ead8eb560e01b81526004810192909252602482015260440161089f565b6000610e2860025490565b905080821015610e5557604051635433660960e01b8152600481018390526024810182905260440161089f565b610e5f8242611a09565b600093845260016020526040909320929092555050565b60006001600160e01b03198216630271189760e51b14806106bf57506106bf826110ea565b610ea58282610b0a565b610ed45760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161089f565b5050565b610ee18261077a565b610ef05781610dfb60026110c7565b8015801590610f055750610f03816107a0565b155b15610ed45760405163121534c360e31b81526004810182905260240161089f565b600080856001600160a01b0316858585604051610f44929190611a1c565b60006040518083038185875af1925050503d8060008114610f81576040519150601f19603f3d011682016040523d82523d6000602084013e610f86565b606091505b5091509150610f95828261111f565b50505050505050565b610fa78161077a565b610fb65780610dfb60026110c7565b600090815260016020819052604090912055565b6000610fd68383610b0a565b611054576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561100c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016106bf565b5060006106bf565b60006110688383610b0a565b15611054576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016106bf565b60008160038111156110db576110db611432565b600160ff919091161b92915050565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316146106bf565b6060826111345761112f8261113b565b6106bf565b50806106bf565b80511561114b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461117b57600080fd5b919050565b60008083601f84011261119257600080fd5b5081356001600160401b038111156111a957600080fd5b6020830191508360208285010111156111c157600080fd5b9250929050565b600080600080600080600060c0888a0312156111e357600080fd5b6111ec88611164565b96506020880135955060408801356001600160401b0381111561120e57600080fd5b61121a8a828b01611180565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561124e57600080fd5b81356001600160e01b03198116811461087057600080fd5b60008060008060008060a0878903121561127f57600080fd5b61128887611164565b95506020870135945060408701356001600160401b038111156112aa57600080fd5b6112b689828a01611180565b979a9699509760608101359660809091013595509350505050565b6000602082840312156112e357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611328576113286112ea565b604052919050565b600082601f83011261134157600080fd5b81356001600160401b0381111561135a5761135a6112ea565b61136d601f8201601f1916602001611300565b81815284602083860101111561138257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156113b557600080fd5b6113be85611164565b93506113cc60208601611164565b92506040850135915060608501356001600160401b038111156113ee57600080fd5b6113fa87828801611330565b91505092959194509250565b6000806040838503121561141957600080fd5b8235915061142960208401611164565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061146a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008083601f84011261148257600080fd5b5081356001600160401b0381111561149957600080fd5b6020830191508360208260051b85010111156111c157600080fd5b600080600080600080600080600060c08a8c0312156114d257600080fd5b89356001600160401b03808211156114e957600080fd5b6114f58d838e01611470565b909b50995060208c013591508082111561150e57600080fd5b61151a8d838e01611470565b909950975060408c013591508082111561153357600080fd5b506115408c828d01611470565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561158157600080fd5b88356001600160401b038082111561159857600080fd5b6115a48c838d01611470565b909a50985060208b01359150808211156115bd57600080fd5b6115c98c838d01611470565b909850965060408b01359150808211156115e257600080fd5b506115ef8b828c01611470565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261161e57600080fd5b813560206001600160401b03821115611639576116396112ea565b8160051b611648828201611300565b928352848101820192828101908785111561166257600080fd5b83870192505b8483101561168157823582529183019190830190611668565b979650505050505050565b600080600080600060a086880312156116a457600080fd5b6116ad86611164565b94506116bb60208701611164565b935060408601356001600160401b03808211156116d757600080fd5b6116e389838a0161160d565b945060608801359150808211156116f957600080fd5b61170589838a0161160d565b9350608088013591508082111561171b57600080fd5b5061172888828901611330565b9150509295509295909350565b600080600080600060a0868803121561174d57600080fd5b61175686611164565b945061176460208701611164565b9350604086013592506060860135915060808601356001600160401b0381111561178d57600080fd5b61172888828901611330565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006117ea60a083018688611799565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201526000611827606083018486611799565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185957600080fd5b61087082611164565b6000808335601e1984360301811261187957600080fd5b8301803591506001600160401b0382111561189357600080fd5b6020019150368190038213156111c157600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016118d0576118d06118a8565b5060010190565b81835260006020808501808196508560051b810191508460005b8781101561195b5782840389528135601e1988360301811261191257600080fd5b870185810190356001600160401b0381111561192d57600080fd5b80360382131561193c57600080fd5b611947868284611799565b9a87019a95505050908401906001016118f1565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156119a9576001600160a01b0361199484611164565b1682526020928301929091019060010161197b565b5083810360208501528881526001600160fb1b038911156119c957600080fd5b8860051b9150818a602083013701828103602090810160408501526119f190820187896118d7565b60608401959095525050608001529695505050505050565b808201808211156106bf576106bf6118a8565b818382376000910190815291905056fea2646970667358221220725e11fe22ce11e81db5a04c6b0028ace5a6d8c12cb61ad95d376ed3be9bba0b64736f6c63430008140033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/plugin-evm/src/contracts/artifacts/VoteToken.json b/packages/plugin-evm/src/contracts/artifacts/VoteToken.json new file mode 100644 index 000000000000..ad765a093ba8 --- /dev/null +++ b/packages/plugin-evm/src/contracts/artifacts/VoteToken.json @@ -0,0 +1,895 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VoteToken", + "sourceName": "src/VoteToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CheckpointUnorderedInsertion", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "increasedSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "name": "ERC20ExceededSafeSupply", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "ERC2612ExpiredSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC2612InvalidSigner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + }, + { + "internalType": "uint48", + "name": "clock", + "type": "uint48" + } + ], + "name": "ERC5805FutureLookup", + "type": "error" + }, + { + "inputs": [], + "name": "ERC6372InconsistentClock", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "InvalidAccountNonce", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + } + ], + "name": "VotesExpiredSignature", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousVotes", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVotes", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint32", + "name": "pos", + "type": "uint32" + } + ], + "name": "checkpoints", + "outputs": [ + { + "components": [ + { + "internalType": "uint48", + "name": "_key", + "type": "uint48" + }, + { + "internalType": "uint208", + "name": "_value", + "type": "uint208" + } + ], + "internalType": "struct Checkpoints.Checkpoint208", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "delegateBySig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + } + ], + "name": "getPastTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint", + "type": "uint256" + } + ], + "name": "getPastVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "numCheckpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040523480156200001257600080fd5b50604051620022d3380380620022d3833981016040819052620000359162000286565b6040805180820190915260018152603160f81b602082015282908190818460036200006183826200037f565b5060046200007082826200037f565b50620000829150839050600562000134565b610120526200009381600662000134565b61014052815160208084019190912060e052815190820120610100524660a0526200012160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620004a5915050565b600060208351101562000154576200014c836200016d565b905062000167565b816200016184826200037f565b5060ff90505b92915050565b600080829050601f81511115620001a4578260405163305a27a960e01b81526004016200019b91906200044b565b60405180910390fd5b8051620001b18262000480565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620001ec578181015183820152602001620001d2565b50506000910152565b600082601f8301126200020757600080fd5b81516001600160401b0380821115620002245762000224620001b9565b604051601f8301601f19908116603f011681019082821181831017156200024f576200024f620001b9565b816040528381528660208588010111156200026957600080fd5b6200027c846020830160208901620001cf565b9695505050505050565b600080604083850312156200029a57600080fd5b82516001600160401b0380821115620002b257600080fd5b620002c086838701620001f5565b93506020850151915080821115620002d757600080fd5b50620002e685828601620001f5565b9150509250929050565b600181811c908216806200030557607f821691505b6020821081036200032657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620003555750805b601f850160051c820191505b81811015620003765782815560010162000361565b5050505b505050565b81516001600160401b038111156200039b576200039b620001b9565b620003b381620003ac8454620002f0565b846200032c565b602080601f831160018114620003eb5760008415620003d25750858301515b600019600386901b1c1916600185901b17855562000376565b600085815260208120601f198616915b828110156200041c57888601518255948401946001909101908401620003fb565b50858210156200043b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200046c816040850160208701620001cf565b601f01601f19169190910160400192915050565b80516020808301519190811015620003265760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611dd3620005006000396000610cda01526000610cad01526000610a8001526000610a58015260006109b3015260006109dd01526000610a070152611dd36000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c35780639ab24eb01161007c5780639ab24eb01461033c578063a9059cbb1461034f578063c3cda52014610362578063d505accf14610375578063dd62ed3e14610388578063f1127ed8146103c157600080fd5b806370a08231146102ab5780637ecebe00146102d457806384b0196e146102e75780638e539e8c1461030257806391ddadf41461031557806395d89b411461033457600080fd5b80633a46b1a8116101155780633a46b1a8146101da57806340c10f19146101ed5780634bf5d7e914610202578063587cde1e1461022c5780635c19a95c146102705780636fcfff451461028357600080fd5b806306fdde031461015d578063095ea7b31461017b57806318160ddd1461019e57806323b872dd146101b0578063313ce567146101c35780633644e515146101d2575b600080fd5b610165610400565b60405161017291906119d7565b60405180910390f35b61018e610189366004611a06565b610492565b6040519015158152602001610172565b6002545b604051908152602001610172565b61018e6101be366004611a30565b6104ac565b60405160128152602001610172565b6101a26104d5565b6101a26101e8366004611a06565b6104df565b6102006101fb366004611a06565b610565565b005b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610165565b61025861023a366004611a6c565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b039091168152602001610172565b61020061027e366004611a6c565b610573565b610296610291366004611a6c565b61057e565b60405163ffffffff9091168152602001610172565b6101a26102b9366004611a6c565b6001600160a01b031660009081526020819052604090205490565b6101a26102e2366004611a6c565b610589565b6102ef610594565b6040516101729796959493929190611a87565b6101a2610310366004611b1d565b6105da565b61031d610644565b60405165ffffffffffff9091168152602001610172565b61016561064e565b6101a261034a366004611a6c565b61065d565b61018e61035d366004611a06565b61068d565b610200610370366004611b47565b61069b565b610200610383366004611b9f565b610758565b6101a2610396366004611c09565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6103d46103cf366004611c3c565b610892565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610172565b60606003805461040f90611c7c565b80601f016020809104026020016040519081016040528092919081815260200182805461043b90611c7c565b80156104885780601f1061045d57610100808354040283529160200191610488565b820191906000526020600020905b81548152906001019060200180831161046b57829003601f168201915b5050505050905090565b6000336104a08185856108b7565b60019150505b92915050565b6000336104ba8582856108c9565b6104c5858585610947565b506001949350505050565b905090565b60006104d06109a6565b6000806104ea610644565b90508065ffffffffffff16831061052a57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61055461053684610ad1565b6001600160a01b038616600090815260096020526040902090610b08565b6001600160d01b0316949350505050565b61056f8282610bbe565b5050565b3361056f8183610bf4565b60006104a682610c66565b60006104a682610c88565b6000606080600080600060606105a8610ca6565b6105b0610cd3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806105e5610644565b90508065ffffffffffff16831061062057604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610521565b61063461062c84610ad1565b600a90610b08565b6001600160d01b03169392505050565b60006104d0610d00565b60606004805461040f90611c7c565b6001600160a01b038116600090815260096020526040812061067e90610d0b565b6001600160d01b031692915050565b6000336104a0818585610947565b834211156106bf57604051632341d78760e11b815260048101859052602401610521565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610739906107319060a00160405160208183030381529060405280519060200120610d44565b858585610d71565b90506107458187610d9f565b61074f8188610bf4565b50505050505050565b8342111561077c5760405163313c898160e11b815260048101859052602401610521565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107c98c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061082482610d44565b9050600061083482878787610d71565b9050896001600160a01b0316816001600160a01b03161461087b576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610521565b6108868a8a8a6108b7565b50505050505050505050565b60408051808201909152600080825260208201526108b08383610df2565b9392505050565b6108c48383836001610e28565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610941578181101561093257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610521565b61094184848484036000610e28565b50505050565b6001600160a01b03831661097157604051634b637e8f60e11b815260006004820152602401610521565b6001600160a01b03821661099b5760405163ec442f0560e01b815260006004820152602401610521565b6108c4838383610efd565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156109ff57507f000000000000000000000000000000000000000000000000000000000000000046145b15610a2957507f000000000000000000000000000000000000000000000000000000000000000090565b6104d0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610b04576040516306dfcc6560e41b81526030600482015260248101839052604401610521565b5090565b815460009081816005811115610b67576000610b2384610f08565b610b2d9085611ccc565b60008881526020902090915081015465ffffffffffff9081169087161015610b5757809150610b65565b610b62816001611cdf565b92505b505b6000610b7587878585611061565b90508015610bb057610b9a87610b8c600184611ccc565b600091825260209091200190565b54600160301b90046001600160d01b0316610bb3565b60005b979650505050505050565b6001600160a01b038216610be85760405163ec442f0560e01b815260006004820152602401610521565b61056f60008383610efd565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108c48183610c61866110c3565b6110e1565b6001600160a01b0381166000908152600960205260408120546104a69061124d565b6001600160a01b0381166000908152600760205260408120546104a6565b60606104d07f0000000000000000000000000000000000000000000000000000000000000000600561127e565b60606104d07f0000000000000000000000000000000000000000000000000000000000000000600661127e565b60006104d042610ad1565b80546000908015610d3b57610d2583610b8c600184611ccc565b54600160301b90046001600160d01b03166108b0565b60009392505050565b60006104a6610d516109a6565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d8388888888611329565b925092509250610d9382826113f8565b50909695505050505050565b6001600160a01b03821660009081526007602052604090208054600181019091558181146108c4576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610521565b60408051808201909152600080825260208201526001600160a01b03831660009081526009602052604090206108b090836114b1565b6001600160a01b038416610e525760405163e602df0560e01b815260006004820152602401610521565b6001600160a01b038316610e7c57604051634a1406b160e11b815260006004820152602401610521565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561094157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610eef91815260200190565b60405180910390a350505050565b6108c4838383611521565b600060018211610f16575090565b816001600160801b8210610f2f5760809190911c9060401b5b680100000000000000008210610f4a5760409190911c9060201b5b6401000000008210610f615760209190911c9060101b5b620100008210610f765760109190911c9060081b5b6101008210610f8a5760089190911c9060041b5b60108210610f9d5760049190911c9060021b5b60048210610fa95760011b5b600302600190811c90818581610fc157610fc1611cf2565b048201901c90506001818581610fd957610fd9611cf2565b048201901c90506001818581610ff157610ff1611cf2565b048201901c9050600181858161100957611009611cf2565b048201901c9050600181858161102157611021611cf2565b048201901c9050600181858161103957611039611cf2565b048201901c905061105881858161105257611052611cf2565b04821190565b90039392505050565b60005b818310156110bb5760006110788484611588565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156110a7578092506110b5565b6110b2816001611cdf565b93505b50611064565b509392505050565b6001600160a01b0381166000908152602081905260408120546104a6565b816001600160a01b0316836001600160a01b0316141580156111035750600081115b156108c4576001600160a01b038316156111ab576001600160a01b03831660009081526009602052604081208190611146906115a3611141866115af565b6115e3565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516111a0929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156108c4576001600160a01b038216600090815260096020526040812081906111e49061161c611141866115af565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161123e929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610b04576040516306dfcc6560e41b81526020600482015260248101839052604401610521565b606060ff83146112985761129183611628565b90506104a6565b8180546112a490611c7c565b80601f01602080910402602001604051908101604052809291908181526020018280546112d090611c7c565b801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b505050505090506104a6565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561136457506000915060039050826113ee565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113b8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113e4575060009250600191508290506113ee565b9250600091508190505b9450945094915050565b600082600381111561140c5761140c611d08565b03611415575050565b600182600381111561142957611429611d08565b036114475760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561145b5761145b611d08565b0361147c5760405163fce698f760e01b815260048101829052602401610521565b600382600381111561149057611490611d08565b0361056f576040516335e2f38360e21b815260048101829052602401610521565b6040805180820190915260008082526020820152826000018263ffffffff16815481106114e0576114e0611d1e565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61152c838383611667565b6001600160a01b03831661157d57600061154560025490565b90506001600160d01b038082111561157a57604051630e58ae9360e11b81526004810183905260248101829052604401610521565b50505b6108c4838383611791565b60006115976002848418611d34565b6108b090848416611cdf565b60006108b08284611d56565b60006001600160d01b03821115610b04576040516306dfcc6560e41b815260d0600482015260248101839052604401610521565b60008061160f6115f1610644565b6116076115fd88610d0b565b868863ffffffff16565b879190611807565b915091505b935093915050565b60006108b08284611d7d565b6060600061163583611815565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b0383166116925780600260008282546116879190611cdf565b909155506117049050565b6001600160a01b038316600090815260208190526040902054818110156116e55760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610521565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166117205760028054829003905561173f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161178491815260200190565b60405180910390a3505050565b6001600160a01b0383166117b3576117b0600a61161c611141846115af565b50505b6001600160a01b0382166117d5576117d2600a6115a3611141846115af565b50505b6001600160a01b038381166000908152600860205260408082205485841683529120546108c4929182169116836110e1565b60008061160f85858561183d565b600060ff8216601f8111156104a657604051632cd44ac360e21b815260040160405180910390fd5b82546000908190801561193657600061185b87610b8c600185611ccc565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561189e57604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036118d757825465ffffffffffff16600160301b6001600160d01b03891602178355611928565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061161492505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611614565b6000815180845260005b818110156119b75760208185018101518683018201520161199b565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006108b06020830184611991565b80356001600160a01b0381168114611a0157600080fd5b919050565b60008060408385031215611a1957600080fd5b611a22836119ea565b946020939093013593505050565b600080600060608486031215611a4557600080fd5b611a4e846119ea565b9250611a5c602085016119ea565b9150604084013590509250925092565b600060208284031215611a7e57600080fd5b6108b0826119ea565b60ff60f81b881681526000602060e081840152611aa760e084018a611991565b8381036040850152611ab9818a611991565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015611b0b57835183529284019291840191600101611aef565b50909c9b505050505050505050505050565b600060208284031215611b2f57600080fd5b5035919050565b803560ff81168114611a0157600080fd5b60008060008060008060c08789031215611b6057600080fd5b611b69876119ea565b95506020870135945060408701359350611b8560608801611b36565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611bba57600080fd5b611bc3886119ea565b9650611bd1602089016119ea565b95506040880135945060608801359350611bed60808901611b36565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c1c57600080fd5b611c25836119ea565b9150611c33602084016119ea565b90509250929050565b60008060408385031215611c4f57600080fd5b611c58836119ea565b9150602083013563ffffffff81168114611c7157600080fd5b809150509250929050565b600181811c90821680611c9057607f821691505b602082108103611cb057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156104a6576104a6611cb6565b808201808211156104a6576104a6611cb6565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082611d5157634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b03828116828216039080821115611d7657611d76611cb6565b5092915050565b6001600160d01b03818116838216019080821115611d7657611d76611cb656fea2646970667358221220be48a11b19883e1ea89539c6e966dcfbd34eccf56ae5ef131f0256163850039964736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c35780639ab24eb01161007c5780639ab24eb01461033c578063a9059cbb1461034f578063c3cda52014610362578063d505accf14610375578063dd62ed3e14610388578063f1127ed8146103c157600080fd5b806370a08231146102ab5780637ecebe00146102d457806384b0196e146102e75780638e539e8c1461030257806391ddadf41461031557806395d89b411461033457600080fd5b80633a46b1a8116101155780633a46b1a8146101da57806340c10f19146101ed5780634bf5d7e914610202578063587cde1e1461022c5780635c19a95c146102705780636fcfff451461028357600080fd5b806306fdde031461015d578063095ea7b31461017b57806318160ddd1461019e57806323b872dd146101b0578063313ce567146101c35780633644e515146101d2575b600080fd5b610165610400565b60405161017291906119d7565b60405180910390f35b61018e610189366004611a06565b610492565b6040519015158152602001610172565b6002545b604051908152602001610172565b61018e6101be366004611a30565b6104ac565b60405160128152602001610172565b6101a26104d5565b6101a26101e8366004611a06565b6104df565b6102006101fb366004611a06565b610565565b005b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610165565b61025861023a366004611a6c565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b039091168152602001610172565b61020061027e366004611a6c565b610573565b610296610291366004611a6c565b61057e565b60405163ffffffff9091168152602001610172565b6101a26102b9366004611a6c565b6001600160a01b031660009081526020819052604090205490565b6101a26102e2366004611a6c565b610589565b6102ef610594565b6040516101729796959493929190611a87565b6101a2610310366004611b1d565b6105da565b61031d610644565b60405165ffffffffffff9091168152602001610172565b61016561064e565b6101a261034a366004611a6c565b61065d565b61018e61035d366004611a06565b61068d565b610200610370366004611b47565b61069b565b610200610383366004611b9f565b610758565b6101a2610396366004611c09565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6103d46103cf366004611c3c565b610892565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610172565b60606003805461040f90611c7c565b80601f016020809104026020016040519081016040528092919081815260200182805461043b90611c7c565b80156104885780601f1061045d57610100808354040283529160200191610488565b820191906000526020600020905b81548152906001019060200180831161046b57829003601f168201915b5050505050905090565b6000336104a08185856108b7565b60019150505b92915050565b6000336104ba8582856108c9565b6104c5858585610947565b506001949350505050565b905090565b60006104d06109a6565b6000806104ea610644565b90508065ffffffffffff16831061052a57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61055461053684610ad1565b6001600160a01b038616600090815260096020526040902090610b08565b6001600160d01b0316949350505050565b61056f8282610bbe565b5050565b3361056f8183610bf4565b60006104a682610c66565b60006104a682610c88565b6000606080600080600060606105a8610ca6565b6105b0610cd3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806105e5610644565b90508065ffffffffffff16831061062057604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610521565b61063461062c84610ad1565b600a90610b08565b6001600160d01b03169392505050565b60006104d0610d00565b60606004805461040f90611c7c565b6001600160a01b038116600090815260096020526040812061067e90610d0b565b6001600160d01b031692915050565b6000336104a0818585610947565b834211156106bf57604051632341d78760e11b815260048101859052602401610521565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610739906107319060a00160405160208183030381529060405280519060200120610d44565b858585610d71565b90506107458187610d9f565b61074f8188610bf4565b50505050505050565b8342111561077c5760405163313c898160e11b815260048101859052602401610521565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107c98c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061082482610d44565b9050600061083482878787610d71565b9050896001600160a01b0316816001600160a01b03161461087b576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610521565b6108868a8a8a6108b7565b50505050505050505050565b60408051808201909152600080825260208201526108b08383610df2565b9392505050565b6108c48383836001610e28565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610941578181101561093257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610521565b61094184848484036000610e28565b50505050565b6001600160a01b03831661097157604051634b637e8f60e11b815260006004820152602401610521565b6001600160a01b03821661099b5760405163ec442f0560e01b815260006004820152602401610521565b6108c4838383610efd565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156109ff57507f000000000000000000000000000000000000000000000000000000000000000046145b15610a2957507f000000000000000000000000000000000000000000000000000000000000000090565b6104d0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610b04576040516306dfcc6560e41b81526030600482015260248101839052604401610521565b5090565b815460009081816005811115610b67576000610b2384610f08565b610b2d9085611ccc565b60008881526020902090915081015465ffffffffffff9081169087161015610b5757809150610b65565b610b62816001611cdf565b92505b505b6000610b7587878585611061565b90508015610bb057610b9a87610b8c600184611ccc565b600091825260209091200190565b54600160301b90046001600160d01b0316610bb3565b60005b979650505050505050565b6001600160a01b038216610be85760405163ec442f0560e01b815260006004820152602401610521565b61056f60008383610efd565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108c48183610c61866110c3565b6110e1565b6001600160a01b0381166000908152600960205260408120546104a69061124d565b6001600160a01b0381166000908152600760205260408120546104a6565b60606104d07f0000000000000000000000000000000000000000000000000000000000000000600561127e565b60606104d07f0000000000000000000000000000000000000000000000000000000000000000600661127e565b60006104d042610ad1565b80546000908015610d3b57610d2583610b8c600184611ccc565b54600160301b90046001600160d01b03166108b0565b60009392505050565b60006104a6610d516109a6565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d8388888888611329565b925092509250610d9382826113f8565b50909695505050505050565b6001600160a01b03821660009081526007602052604090208054600181019091558181146108c4576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610521565b60408051808201909152600080825260208201526001600160a01b03831660009081526009602052604090206108b090836114b1565b6001600160a01b038416610e525760405163e602df0560e01b815260006004820152602401610521565b6001600160a01b038316610e7c57604051634a1406b160e11b815260006004820152602401610521565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561094157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610eef91815260200190565b60405180910390a350505050565b6108c4838383611521565b600060018211610f16575090565b816001600160801b8210610f2f5760809190911c9060401b5b680100000000000000008210610f4a5760409190911c9060201b5b6401000000008210610f615760209190911c9060101b5b620100008210610f765760109190911c9060081b5b6101008210610f8a5760089190911c9060041b5b60108210610f9d5760049190911c9060021b5b60048210610fa95760011b5b600302600190811c90818581610fc157610fc1611cf2565b048201901c90506001818581610fd957610fd9611cf2565b048201901c90506001818581610ff157610ff1611cf2565b048201901c9050600181858161100957611009611cf2565b048201901c9050600181858161102157611021611cf2565b048201901c9050600181858161103957611039611cf2565b048201901c905061105881858161105257611052611cf2565b04821190565b90039392505050565b60005b818310156110bb5760006110788484611588565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156110a7578092506110b5565b6110b2816001611cdf565b93505b50611064565b509392505050565b6001600160a01b0381166000908152602081905260408120546104a6565b816001600160a01b0316836001600160a01b0316141580156111035750600081115b156108c4576001600160a01b038316156111ab576001600160a01b03831660009081526009602052604081208190611146906115a3611141866115af565b6115e3565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516111a0929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156108c4576001600160a01b038216600090815260096020526040812081906111e49061161c611141866115af565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161123e929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610b04576040516306dfcc6560e41b81526020600482015260248101839052604401610521565b606060ff83146112985761129183611628565b90506104a6565b8180546112a490611c7c565b80601f01602080910402602001604051908101604052809291908181526020018280546112d090611c7c565b801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b505050505090506104a6565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561136457506000915060039050826113ee565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113b8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113e4575060009250600191508290506113ee565b9250600091508190505b9450945094915050565b600082600381111561140c5761140c611d08565b03611415575050565b600182600381111561142957611429611d08565b036114475760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561145b5761145b611d08565b0361147c5760405163fce698f760e01b815260048101829052602401610521565b600382600381111561149057611490611d08565b0361056f576040516335e2f38360e21b815260048101829052602401610521565b6040805180820190915260008082526020820152826000018263ffffffff16815481106114e0576114e0611d1e565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61152c838383611667565b6001600160a01b03831661157d57600061154560025490565b90506001600160d01b038082111561157a57604051630e58ae9360e11b81526004810183905260248101829052604401610521565b50505b6108c4838383611791565b60006115976002848418611d34565b6108b090848416611cdf565b60006108b08284611d56565b60006001600160d01b03821115610b04576040516306dfcc6560e41b815260d0600482015260248101839052604401610521565b60008061160f6115f1610644565b6116076115fd88610d0b565b868863ffffffff16565b879190611807565b915091505b935093915050565b60006108b08284611d7d565b6060600061163583611815565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b0383166116925780600260008282546116879190611cdf565b909155506117049050565b6001600160a01b038316600090815260208190526040902054818110156116e55760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610521565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166117205760028054829003905561173f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161178491815260200190565b60405180910390a3505050565b6001600160a01b0383166117b3576117b0600a61161c611141846115af565b50505b6001600160a01b0382166117d5576117d2600a6115a3611141846115af565b50505b6001600160a01b038381166000908152600860205260408082205485841683529120546108c4929182169116836110e1565b60008061160f85858561183d565b600060ff8216601f8111156104a657604051632cd44ac360e21b815260040160405180910390fd5b82546000908190801561193657600061185b87610b8c600185611ccc565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561189e57604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036118d757825465ffffffffffff16600160301b6001600160d01b03891602178355611928565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061161492505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611614565b6000815180845260005b818110156119b75760208185018101518683018201520161199b565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006108b06020830184611991565b80356001600160a01b0381168114611a0157600080fd5b919050565b60008060408385031215611a1957600080fd5b611a22836119ea565b946020939093013593505050565b600080600060608486031215611a4557600080fd5b611a4e846119ea565b9250611a5c602085016119ea565b9150604084013590509250925092565b600060208284031215611a7e57600080fd5b6108b0826119ea565b60ff60f81b881681526000602060e081840152611aa760e084018a611991565b8381036040850152611ab9818a611991565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015611b0b57835183529284019291840191600101611aef565b50909c9b505050505050505050505050565b600060208284031215611b2f57600080fd5b5035919050565b803560ff81168114611a0157600080fd5b60008060008060008060c08789031215611b6057600080fd5b611b69876119ea565b95506020870135945060408701359350611b8560608801611b36565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611bba57600080fd5b611bc3886119ea565b9650611bd1602089016119ea565b95506040880135945060608801359350611bed60808901611b36565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c1c57600080fd5b611c25836119ea565b9150611c33602084016119ea565b90509250929050565b60008060408385031215611c4f57600080fd5b611c58836119ea565b9150602083013563ffffffff81168114611c7157600080fd5b809150509250929050565b600181811c90821680611c9057607f821691505b602082108103611cb057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156104a6576104a6611cb6565b808201808211156104a6576104a6611cb6565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082611d5157634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b03828116828216039080821115611d7657611d76611cb6565b5092915050565b6001600160d01b03818116838216019080821115611d7657611d76611cb656fea2646970667358221220be48a11b19883e1ea89539c6e966dcfbd34eccf56ae5ef131f0256163850039964736f6c63430008140033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/plugin-evm/src/contracts/src/OZGovernor.sol b/packages/plugin-evm/src/contracts/src/OZGovernor.sol new file mode 100644 index 000000000000..6510638e4685 --- /dev/null +++ b/packages/plugin-evm/src/contracts/src/OZGovernor.sol @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "node_modules/@openzeppelin/contracts/governance/Governor.sol"; +import "node_modules/@openzeppelin/contracts/governance/extensions/GovernorSettings.sol"; +import "node_modules/@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol"; +import "node_modules/@openzeppelin/contracts/governance/extensions/GovernorVotes.sol"; +import "node_modules/@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol"; +import "node_modules/@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol"; + +contract OZGovernor is + Governor, + GovernorSettings, + GovernorCountingSimple, + GovernorVotes, + GovernorVotesQuorumFraction, + GovernorTimelockControl +{ + /// @custom:oz-upgrades-unsafe-allow constructor + constructor( + IVotes _token, + TimelockController _timelock, + uint48 _votingDelay, // {s} + uint32 _votingPeriod, // {s} + uint256 _proposalThreshold, // e.g. 0.01e18 for 1% + uint256 quorumPercent // e.g 4 for 4% + ) + Governor("OZ Governor") + GovernorSettings(_votingDelay, _votingPeriod, _proposalThreshold) + GovernorVotes(_token) + GovernorVotesQuorumFraction(quorumPercent) + GovernorTimelockControl(_timelock) + {} + + function votingDelay() + public + view + override(Governor, GovernorSettings) + returns (uint256) + { + return super.votingDelay(); + } + + function votingPeriod() + public + view + override(Governor, GovernorSettings) + returns (uint256) + { + return super.votingPeriod(); + } + + function quorum( + uint256 blockNumber + ) + public + view + override(Governor, GovernorVotesQuorumFraction) + returns (uint256) + { + return super.quorum(blockNumber); + } + + function state( + uint256 proposalId + ) + public + view + override(Governor, GovernorTimelockControl) + returns (ProposalState) + { + return super.state(proposalId); + } + + function proposalNeedsQueuing( + uint256 proposalId + ) public view override(Governor, GovernorTimelockControl) returns (bool) { + return super.proposalNeedsQueuing(proposalId); + } + + function proposalThreshold() + public + view + override(Governor, GovernorSettings) + returns (uint256) + { + uint256 threshold = super.proposalThreshold(); // D18{1} + uint256 pastSupply = token().getPastTotalSupply(clock() - 1); + + // CEIL to make sure thresholds near 0% don't get rounded down to 0 tokens + return (threshold * pastSupply + (1e18 - 1)) / 1e18; + } + + function _queueOperations( + uint256 proposalId, + address[] memory targets, + uint256[] memory values, + bytes[] memory calldatas, + bytes32 descriptionHash + ) internal override(Governor, GovernorTimelockControl) returns (uint48) { + return + super._queueOperations( + proposalId, + targets, + values, + calldatas, + descriptionHash + ); + } + + function _executeOperations( + uint256 proposalId, + address[] memory targets, + uint256[] memory values, + bytes[] memory calldatas, + bytes32 descriptionHash + ) internal override(Governor, GovernorTimelockControl) { + super._executeOperations( + proposalId, + targets, + values, + calldatas, + descriptionHash + ); + } + + function _cancel( + address[] memory targets, + uint256[] memory values, + bytes[] memory calldatas, + bytes32 descriptionHash + ) internal override(Governor, GovernorTimelockControl) returns (uint256) { + return super._cancel(targets, values, calldatas, descriptionHash); + } + + function _executor() + internal + view + override(Governor, GovernorTimelockControl) + returns (address) + { + return super._executor(); + } +} diff --git a/packages/plugin-evm/src/contracts/src/TimelockController.sol b/packages/plugin-evm/src/contracts/src/TimelockController.sol new file mode 100644 index 000000000000..349d940fd506 --- /dev/null +++ b/packages/plugin-evm/src/contracts/src/TimelockController.sol @@ -0,0 +1,472 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.0.0) (governance/TimelockController.sol) + +pragma solidity ^0.8.20; + +import {AccessControl} from "../access/AccessControl.sol"; +import {ERC721Holder} from "../token/ERC721/utils/ERC721Holder.sol"; +import {ERC1155Holder} from "../token/ERC1155/utils/ERC1155Holder.sol"; +import {Address} from "../utils/Address.sol"; + +/** + * @dev Contract module which acts as a timelocked controller. When set as the + * owner of an `Ownable` smart contract, it enforces a timelock on all + * `onlyOwner` maintenance operations. This gives time for users of the + * controlled contract to exit before a potentially dangerous maintenance + * operation is applied. + * + * By default, this contract is self administered, meaning administration tasks + * have to go through the timelock process. The proposer (resp executor) role + * is in charge of proposing (resp executing) operations. A common use case is + * to position this {TimelockController} as the owner of a smart contract, with + * a multisig or a DAO as the sole proposer. + */ +contract TimelockController is AccessControl, ERC721Holder, ERC1155Holder { + bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE"); + bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE"); + bytes32 public constant CANCELLER_ROLE = keccak256("CANCELLER_ROLE"); + uint256 internal constant _DONE_TIMESTAMP = uint256(1); + + mapping(bytes32 id => uint256) private _timestamps; + uint256 private _minDelay; + + enum OperationState { + Unset, + Waiting, + Ready, + Done + } + + /** + * @dev Mismatch between the parameters length for an operation call. + */ + error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values); + + /** + * @dev The schedule operation doesn't meet the minimum delay. + */ + error TimelockInsufficientDelay(uint256 delay, uint256 minDelay); + + /** + * @dev The current state of an operation is not as required. + * The `expectedStates` is a bitmap with the bits enabled for each OperationState enum position + * counting from right to left. + * + * See {_encodeStateBitmap}. + */ + error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates); + + /** + * @dev The predecessor to an operation not yet done. + */ + error TimelockUnexecutedPredecessor(bytes32 predecessorId); + + /** + * @dev The caller account is not authorized. + */ + error TimelockUnauthorizedCaller(address caller); + + /** + * @dev Emitted when a call is scheduled as part of operation `id`. + */ + event CallScheduled( + bytes32 indexed id, + uint256 indexed index, + address target, + uint256 value, + bytes data, + bytes32 predecessor, + uint256 delay + ); + + /** + * @dev Emitted when a call is performed as part of operation `id`. + */ + event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data); + + /** + * @dev Emitted when new proposal is scheduled with non-zero salt. + */ + event CallSalt(bytes32 indexed id, bytes32 salt); + + /** + * @dev Emitted when operation `id` is cancelled. + */ + event Cancelled(bytes32 indexed id); + + /** + * @dev Emitted when the minimum delay for future operations is modified. + */ + event MinDelayChange(uint256 oldDuration, uint256 newDuration); + + /** + * @dev Initializes the contract with the following parameters: + * + * - `minDelay`: initial minimum delay in seconds for operations + * - `proposers`: accounts to be granted proposer and canceller roles + * - `executors`: accounts to be granted executor role + * - `admin`: optional account to be granted admin role; disable with zero address + * + * IMPORTANT: The optional admin can aid with initial configuration of roles after deployment + * without being subject to delay, but this role should be subsequently renounced in favor of + * administration through timelocked proposals. Previous versions of this contract would assign + * this admin to the deployer automatically and should be renounced as well. + */ + constructor(uint256 minDelay, address[] memory proposers, address[] memory executors, address admin) { + // self administration + _grantRole(DEFAULT_ADMIN_ROLE, address(this)); + + // optional admin + if (admin != address(0)) { + _grantRole(DEFAULT_ADMIN_ROLE, admin); + } + + // register proposers and cancellers + for (uint256 i = 0; i < proposers.length; ++i) { + _grantRole(PROPOSER_ROLE, proposers[i]); + _grantRole(CANCELLER_ROLE, proposers[i]); + } + + // register executors + for (uint256 i = 0; i < executors.length; ++i) { + _grantRole(EXECUTOR_ROLE, executors[i]); + } + + _minDelay = minDelay; + emit MinDelayChange(0, minDelay); + } + + /** + * @dev Modifier to make a function callable only by a certain role. In + * addition to checking the sender's role, `address(0)` 's role is also + * considered. Granting a role to `address(0)` is equivalent to enabling + * this role for everyone. + */ + modifier onlyRoleOrOpenRole(bytes32 role) { + if (!hasRole(role, address(0))) { + _checkRole(role, _msgSender()); + } + _; + } + + /** + * @dev Contract might receive/hold ETH as part of the maintenance process. + */ + receive() external payable {} + + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(AccessControl, ERC1155Holder) returns (bool) { + return super.supportsInterface(interfaceId); + } + + /** + * @dev Returns whether an id corresponds to a registered operation. This + * includes both Waiting, Ready, and Done operations. + */ + function isOperation(bytes32 id) public view returns (bool) { + return getOperationState(id) != OperationState.Unset; + } + + /** + * @dev Returns whether an operation is pending or not. Note that a "pending" operation may also be "ready". + */ + function isOperationPending(bytes32 id) public view returns (bool) { + OperationState state = getOperationState(id); + return state == OperationState.Waiting || state == OperationState.Ready; + } + + /** + * @dev Returns whether an operation is ready for execution. Note that a "ready" operation is also "pending". + */ + function isOperationReady(bytes32 id) public view returns (bool) { + return getOperationState(id) == OperationState.Ready; + } + + /** + * @dev Returns whether an operation is done or not. + */ + function isOperationDone(bytes32 id) public view returns (bool) { + return getOperationState(id) == OperationState.Done; + } + + /** + * @dev Returns the timestamp at which an operation becomes ready (0 for + * unset operations, 1 for done operations). + */ + function getTimestamp(bytes32 id) public view virtual returns (uint256) { + return _timestamps[id]; + } + + /** + * @dev Returns operation state. + */ + function getOperationState(bytes32 id) public view virtual returns (OperationState) { + uint256 timestamp = getTimestamp(id); + if (timestamp == 0) { + return OperationState.Unset; + } else if (timestamp == _DONE_TIMESTAMP) { + return OperationState.Done; + } else if (timestamp > block.timestamp) { + return OperationState.Waiting; + } else { + return OperationState.Ready; + } + } + + /** + * @dev Returns the minimum delay in seconds for an operation to become valid. + * + * This value can be changed by executing an operation that calls `updateDelay`. + */ + function getMinDelay() public view virtual returns (uint256) { + return _minDelay; + } + + /** + * @dev Returns the identifier of an operation containing a single + * transaction. + */ + function hashOperation( + address target, + uint256 value, + bytes calldata data, + bytes32 predecessor, + bytes32 salt + ) public pure virtual returns (bytes32) { + return keccak256(abi.encode(target, value, data, predecessor, salt)); + } + + /** + * @dev Returns the identifier of an operation containing a batch of + * transactions. + */ + function hashOperationBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata payloads, + bytes32 predecessor, + bytes32 salt + ) public pure virtual returns (bytes32) { + return keccak256(abi.encode(targets, values, payloads, predecessor, salt)); + } + + /** + * @dev Schedule an operation containing a single transaction. + * + * Emits {CallSalt} if salt is nonzero, and {CallScheduled}. + * + * Requirements: + * + * - the caller must have the 'proposer' role. + */ + function schedule( + address target, + uint256 value, + bytes calldata data, + bytes32 predecessor, + bytes32 salt, + uint256 delay + ) public virtual onlyRole(PROPOSER_ROLE) { + bytes32 id = hashOperation(target, value, data, predecessor, salt); + _schedule(id, delay); + emit CallScheduled(id, 0, target, value, data, predecessor, delay); + if (salt != bytes32(0)) { + emit CallSalt(id, salt); + } + } + + /** + * @dev Schedule an operation containing a batch of transactions. + * + * Emits {CallSalt} if salt is nonzero, and one {CallScheduled} event per transaction in the batch. + * + * Requirements: + * + * - the caller must have the 'proposer' role. + */ + function scheduleBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata payloads, + bytes32 predecessor, + bytes32 salt, + uint256 delay + ) public virtual onlyRole(PROPOSER_ROLE) { + if (targets.length != values.length || targets.length != payloads.length) { + revert TimelockInvalidOperationLength(targets.length, payloads.length, values.length); + } + + bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt); + _schedule(id, delay); + for (uint256 i = 0; i < targets.length; ++i) { + emit CallScheduled(id, i, targets[i], values[i], payloads[i], predecessor, delay); + } + if (salt != bytes32(0)) { + emit CallSalt(id, salt); + } + } + + /** + * @dev Schedule an operation that is to become valid after a given delay. + */ + function _schedule(bytes32 id, uint256 delay) private { + if (isOperation(id)) { + revert TimelockUnexpectedOperationState(id, _encodeStateBitmap(OperationState.Unset)); + } + uint256 minDelay = getMinDelay(); + if (delay < minDelay) { + revert TimelockInsufficientDelay(delay, minDelay); + } + _timestamps[id] = block.timestamp + delay; + } + + /** + * @dev Cancel an operation. + * + * Requirements: + * + * - the caller must have the 'canceller' role. + */ + function cancel(bytes32 id) public virtual onlyRole(CANCELLER_ROLE) { + if (!isOperationPending(id)) { + revert TimelockUnexpectedOperationState( + id, + _encodeStateBitmap(OperationState.Waiting) | _encodeStateBitmap(OperationState.Ready) + ); + } + delete _timestamps[id]; + + emit Cancelled(id); + } + + /** + * @dev Execute an (ready) operation containing a single transaction. + * + * Emits a {CallExecuted} event. + * + * Requirements: + * + * - the caller must have the 'executor' role. + */ + // This function can reenter, but it doesn't pose a risk because _afterCall checks that the proposal is pending, + // thus any modifications to the operation during reentrancy should be caught. + // slither-disable-next-line reentrancy-eth + function execute( + address target, + uint256 value, + bytes calldata payload, + bytes32 predecessor, + bytes32 salt + ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { + bytes32 id = hashOperation(target, value, payload, predecessor, salt); + + _beforeCall(id, predecessor); + _execute(target, value, payload); + emit CallExecuted(id, 0, target, value, payload); + _afterCall(id); + } + + /** + * @dev Execute an (ready) operation containing a batch of transactions. + * + * Emits one {CallExecuted} event per transaction in the batch. + * + * Requirements: + * + * - the caller must have the 'executor' role. + */ + // This function can reenter, but it doesn't pose a risk because _afterCall checks that the proposal is pending, + // thus any modifications to the operation during reentrancy should be caught. + // slither-disable-next-line reentrancy-eth + function executeBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata payloads, + bytes32 predecessor, + bytes32 salt + ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { + if (targets.length != values.length || targets.length != payloads.length) { + revert TimelockInvalidOperationLength(targets.length, payloads.length, values.length); + } + + bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt); + + _beforeCall(id, predecessor); + for (uint256 i = 0; i < targets.length; ++i) { + address target = targets[i]; + uint256 value = values[i]; + bytes calldata payload = payloads[i]; + _execute(target, value, payload); + emit CallExecuted(id, i, target, value, payload); + } + _afterCall(id); + } + + /** + * @dev Execute an operation's call. + */ + function _execute(address target, uint256 value, bytes calldata data) internal virtual { + (bool success, bytes memory returndata) = target.call{value: value}(data); + Address.verifyCallResult(success, returndata); + } + + /** + * @dev Checks before execution of an operation's calls. + */ + function _beforeCall(bytes32 id, bytes32 predecessor) private view { + if (!isOperationReady(id)) { + revert TimelockUnexpectedOperationState(id, _encodeStateBitmap(OperationState.Ready)); + } + if (predecessor != bytes32(0) && !isOperationDone(predecessor)) { + revert TimelockUnexecutedPredecessor(predecessor); + } + } + + /** + * @dev Checks after execution of an operation's calls. + */ + function _afterCall(bytes32 id) private { + if (!isOperationReady(id)) { + revert TimelockUnexpectedOperationState(id, _encodeStateBitmap(OperationState.Ready)); + } + _timestamps[id] = _DONE_TIMESTAMP; + } + + /** + * @dev Changes the minimum timelock duration for future operations. + * + * Emits a {MinDelayChange} event. + * + * Requirements: + * + * - the caller must be the timelock itself. This can only be achieved by scheduling and later executing + * an operation where the timelock is the target and the data is the ABI-encoded call to this function. + */ + function updateDelay(uint256 newDelay) external virtual { + address sender = _msgSender(); + if (sender != address(this)) { + revert TimelockUnauthorizedCaller(sender); + } + emit MinDelayChange(_minDelay, newDelay); + _minDelay = newDelay; + } + + /** + * @dev Encodes a `OperationState` into a `bytes32` representation where each bit enabled corresponds to + * the underlying position in the `OperationState` enum. For example: + * + * 0x000...1000 + * ^^^^^^----- ... + * ^---- Done + * ^--- Ready + * ^-- Waiting + * ^- Unset + */ + function _encodeStateBitmap(OperationState operationState) internal pure returns (bytes32) { + return bytes32(1 << uint8(operationState)); + } +} diff --git a/packages/plugin-evm/src/contracts/src/VoteToken.sol b/packages/plugin-evm/src/contracts/src/VoteToken.sol new file mode 100644 index 000000000000..60317054ccad --- /dev/null +++ b/packages/plugin-evm/src/contracts/src/VoteToken.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import { ERC20 } from "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20Permit } from "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; +import { ERC20Votes } from "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; +import { Nonces } from "node_modules/@openzeppelin/contracts/utils/Nonces.sol"; +import { Time } from "node_modules/@openzeppelin/contracts/utils/types/Time.sol"; + +contract VoteToken is ERC20Permit, ERC20Votes { + constructor( + string memory _name, + string memory _symbol + ) ERC20(_name, _symbol) ERC20Permit(_name) {} + + /** + * Overrides + */ + function _update( + address from, + address to, + uint256 value + ) internal override(ERC20, ERC20Votes) { + super._update(from, to, value); + } + + function nonces( + address _owner + ) public view override(ERC20Permit, Nonces) returns (uint256) { + return super.nonces(_owner); + } + + function decimals() public view virtual override(ERC20) returns (uint8) { + return super.decimals(); + } + + /** + * ERC5805 Clock + */ + function clock() public view override returns (uint48) { + return Time.timestamp(); + } + + function CLOCK_MODE() public pure override returns (string memory) { + return "mode=timestamp"; + } +} diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index ae05779dabf1..90a3b89b5bf5 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -1,8 +1,11 @@ import { createPublicClient, + createTestClient, createWalletClient, formatUnits, http, + publicActions, + walletActions, } from "viem"; import { privateKeyToAccount } from "viem/accounts"; import { @@ -21,6 +24,7 @@ import type { HttpTransport, Account, PrivateKeyAccount, + TestClient, } from "viem"; import * as viemChains from "viem/chains"; import { DeriveKeyProvider, TEEMode } from "@elizaos/plugin-tee"; @@ -84,6 +88,16 @@ export class WalletProvider { return walletClient; } + getTestClient(): TestClient { + return createTestClient({ + chain: viemChains.hardhat, + mode: "hardhat", + transport: http(), + }) + .extend(publicActions) + .extend(walletActions); + } + getChainConfigs(chainName: SupportedChain): Chain { const chain = viemChains[chainName]; @@ -292,8 +306,8 @@ export const initWalletProvider = async (runtime: IAgentRuntime) => { const deriveKeyProvider = new DeriveKeyProvider(teeMode); const deriveKeyResult = await deriveKeyProvider.deriveEcdsaKeypair( - "/", walletSecretSalt, + "evm", runtime.agentId ); return new WalletProvider( diff --git a/packages/plugin-evm/src/templates/index.ts b/packages/plugin-evm/src/templates/index.ts index f96e26ea991b..59626fd3424b 100644 --- a/packages/plugin-evm/src/templates/index.ts +++ b/packages/plugin-evm/src/templates/index.ts @@ -75,8 +75,8 @@ Respond with a JSON markdown block containing only the extracted values: \`\`\`json { "token": string | null, - "fromChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "fraxtal" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | null, - "toChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "fraxtal" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | null, + "fromChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "fraxtal" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | "gravity" | null, + "toChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "fraxtal" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | "gravity" | null, "amount": string | null, "toAddress": string | null } @@ -107,3 +107,111 @@ Respond with a JSON markdown block containing only the extracted values. Use nul } \`\`\` `; + +export const proposeTemplate = `Given the recent messages and wallet information below: + +{{recentMessages}} + +{{walletInfo}} + +Extract the following information about the requested proposal: +- Targets +- Values +- Calldatas +- Description +- Governor address +- Chain to execute on + +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined: + +\`\`\`json +{ + "targets": string[] | null, + "values": string[] | null, + "calldatas": string[] | null, + "description": string | null, + "governor": string | null + "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, +} +\`\`\` +`; + +export const voteTemplate = `Given the recent messages and wallet information below: + +{{recentMessages}} + +{{walletInfo}} + +Extract the following information about the requested vote: +- Proposal ID +- Support (1 for yes, 2 for no, 3 for abstain) +- Governor address +- Chain to execute on + +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined: + +\`\`\`json +{ + "proposalId": string | null, + "support": number | null, + "governor": string | null + "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, +} +\`\`\` +`; + +export const queueProposalTemplate = `Given the recent messages and wallet information below: + +{{recentMessages}} + +{{walletInfo}} + +Extract the following information about the requested proposal: +- Targets +- Values +- Calldatas +- Description +- Governor address +- Chain to execute on + +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined: + +\`\`\`json +{ + "targets": string[] | null, + "values": string[] | null, + "calldatas": string[] | null, + "description": string | null, + "governor": string | null + "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, +} +\`\`\` +`; + +export const executeProposalTemplate = `Given the recent messages and wallet information below: + +{{recentMessages}} + +{{walletInfo}} + +Extract the following information about the requested proposal: +- Targets +- Values +- Calldatas +- Description +- Governor address +- Chain to execute on + +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined: + +\`\`\`json +{ + "targets": string[] | null, + "values": string[] | null, + "calldatas": string[] | null, + "description": string | null, + "governor": string | null + "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, +} +\`\`\` +`; diff --git a/packages/plugin-evm/src/tests/gov.test.ts b/packages/plugin-evm/src/tests/gov.test.ts new file mode 100644 index 000000000000..89821e9688cf --- /dev/null +++ b/packages/plugin-evm/src/tests/gov.test.ts @@ -0,0 +1,408 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey } from "viem/accounts"; +import { + Address, + Chain, + encodeFunctionData, + getContract, + Hash, + PublicClient, + TestClient, + WalletClient, + decodeEventLog, + keccak256, + stringToHex, + encodeAbiParameters, +} from "viem"; + +import { VoteAction } from "../actions/gov-vote"; +import { WalletProvider } from "../providers/wallet"; +import governorArtifacts from "../contracts/artifacts/OZGovernor.json"; +import voteTokenArtifacts from "../contracts/artifacts/VoteToken.json"; +import timelockArtifacts from "../contracts/artifacts/TimelockController.json"; +import { QueueAction } from "../actions/gov-queue"; +import { Proposal } from "../types"; +import { ExecuteAction } from "../actions/gov-execute"; +import { ProposeAction } from "../actions/gov-propose"; + +export interface ProposalParams extends Proposal { + governor?: string; + timelock?: string; + proposalId?: string; +} + +type ContractTransaction = { + to: Address; + data: `0x${string}`; +}; + +export const buildProposal = ( + txs: Array, + description: string +): Proposal => { + const targets = txs.map((tx: ContractTransaction) => tx.to!); + const values = txs.map(() => BigInt(0)); + const calldatas = txs.map((tx: ContractTransaction) => tx.data!); + return { + targets, + values, + calldatas, + description, + }; +}; + +describe("Vote Action", () => { + const alice: Address = "0xa1Ce000000000000000000000000000000000000"; + let wp: WalletProvider; + let wc: WalletClient; + let tc: TestClient; + let pc: PublicClient; + let voteTokenAddress: Address; + let timelockAddress: Address; + let governorAddress: Address; + let voteToken; + let timelock; + let governor; + + async function getDeployedAddress(hash: `0x${string}`) { + const receipt = await pc.waitForTransactionReceipt({ + hash, + }); + return receipt.contractAddress; + } + + beforeEach(async () => { + const pk = generatePrivateKey(); + const customChains = prepareChains(); + wp = new WalletProvider(pk, customChains); + wc = wp.getWalletClient("hardhat"); + const account = wc.account; + tc = wp.getTestClient(); + pc = wp.getPublicClient("hardhat"); + + // Add this to fund the account + await tc.setBalance({ + address: account.address, + value: 10000000000000000000000n, // 10,000 ETH + }); + + const voteTokenDeployHash: Hash = await tc.deployContract({ + chain: customChains["hardhat"], + account: account, + abi: voteTokenArtifacts.abi, + bytecode: voteTokenArtifacts.bytecode as `0x${string}`, + args: ["Test Token", "TEST"], + gas: 5000000n, + }); + + const timelockDeployHash: Hash = await tc.deployContract({ + chain: customChains["hardhat"], + account: account, + abi: timelockArtifacts.abi, + bytecode: timelockArtifacts.bytecode as `0x${string}`, + args: [1, [], [], account.address], + }); + + // Get the addresses from deployment hashes + voteTokenAddress = await getDeployedAddress(voteTokenDeployHash); + timelockAddress = await getDeployedAddress(timelockDeployHash); + + const governorDeployHash: Hash = await tc.deployContract({ + chain: customChains["hardhat"], + account: account, + abi: governorArtifacts.abi, + bytecode: governorArtifacts.bytecode as `0x${string}`, + args: [voteTokenAddress, timelockAddress, 0, 86400, 1, 1], + }); + + governorAddress = await getDeployedAddress(governorDeployHash); + + voteToken = getContract({ + address: voteTokenAddress, + abi: voteTokenArtifacts.abi, + client: wc, + }); + timelock = getContract({ + address: timelockAddress, + abi: timelockArtifacts.abi, + client: wc, + }); + governor = getContract({ + address: governorAddress, + abi: governorArtifacts.abi, + client: wc, + }); + const proposerRole = await timelock.read.PROPOSER_ROLE(); + await timelock.write.grantRole([proposerRole, governor.address]); + const executorRole = await timelock.read.EXECUTOR_ROLE(); + await timelock.write.grantRole([executorRole, governor.address]); + }); + describe("Constructor", () => { + it("should initialize with wallet provider", () => { + const va = new VoteAction(wp); + + expect(va).toBeDefined(); + }); + }); + describe("Vote", () => { + let va: VoteAction; + let proposalId: string; + let proposal: ProposalParams; + + beforeEach(async () => { + va = new VoteAction(wp); + + // mint 1B tokens to alice + await voteToken.write.mint([wc.account.address, BigInt(10 ** 27)]); + await voteToken.write.mint([timelockAddress, BigInt(10 ** 18)]); + await voteToken.write.delegate([wc.account.address]); + await tc.mine({ + blocks: 100, + interval: 12, // This will advance time by 1200 seconds (12 seconds per block) + }); + const data = encodeFunctionData({ + abi: voteTokenArtifacts.abi, + functionName: "transfer", + args: [alice, BigInt(10 ** 18)], + }); + const description = "test proposal, transfer some token"; + proposal = buildProposal( + [ + { + to: voteToken.address, + data: data, + }, + ], + description + ); + const hash = await governor.write.propose([ + proposal.targets, + proposal.values, + proposal.calldatas, + proposal.description, + ]); + const receipt = await pc.waitForTransactionReceipt({ hash }); + proposalId = getProposalId(receipt.logs); + + // Add this to move the chain forward + await tc.mine({ + blocks: 100, + interval: 12, // This will advance time by 1200 seconds (12 seconds per block) + }); + }); + + it("Proposes a proposal", async () => { + const pa = new ProposeAction(wp); + const description = "other test proposal"; + const result = await pa.propose({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + targets: proposal.targets, + values: proposal.values, + calldatas: proposal.calldatas, + description: description, + }); + const pid = getProposalId(result.logs); + const state = await governor.read.state([pid]); + expect(state).equals(0); + }); + + it("Votes no on a proposal", async () => { + await va.vote({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + support: 0, + }); + + const votes = await governor.read.proposalVotes([proposalId]); + expect(votes[0]).equals( + await voteToken.read.balanceOf([wc.account.address]) + ); + expect(votes[1]).equals(BigInt(0)); + expect(votes[2]).equals(BigInt(0)); + }); + + it("Votes yes on a proposal", async () => { + await va.vote({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + support: 1, + }); + + const votes = await governor.read.proposalVotes([proposalId]); + expect(votes[0]).equals(BigInt(0)); + expect(votes[1]).equals( + await voteToken.read.balanceOf([wc.account.address]) + ); + expect(votes[2]).equals(BigInt(0)); + }); + + it("Abstains on a proposal", async () => { + await va.vote({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + support: 2, + }); + + const votes = await governor.read.proposalVotes([proposalId]); + expect(votes[0]).equals(BigInt(0)); + expect(votes[1]).equals(BigInt(0)); + expect(votes[2]).equals( + await voteToken.read.balanceOf([wc.account.address]) + ); + }); + + it("Queues a proposal", async () => { + const qa = new QueueAction(wp); + + await va.vote({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + support: 1, + }); + + await tc.mine({ + blocks: 86400 / 12 + 1, + interval: 12, + }); + + const state = await governor.read.state([proposalId]); + console.log("state", state); + + await qa.queue({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + targets: proposal.targets, + values: proposal.values, + calldatas: proposal.calldatas, + description: proposal.description, + }); + + const descriptionHash = keccak256( + stringToHex(proposal.description) + ); + const salt = await governor.read.timelockSalt([descriptionHash]); + const timelockProposalId = keccak256( + encodeAbiParameters( + [ + { type: "address[]", name: "targets" }, + { type: "uint256[]", name: "values" }, + { type: "bytes[]", name: "payloads" }, + { type: "bytes32", name: "predecessor" }, + { type: "bytes32", name: "salt" }, + ], + [ + proposal.targets, + proposal.values, + proposal.calldatas, + "0x0000000000000000000000000000000000000000000000000000000000000000", + salt, + ] + ) + ); + const queued = await timelock.read.isOperationPending([ + timelockProposalId, + ]); + expect(queued).toBe(true); + }); + + it("Executes a proposal", async () => { + const qa = new QueueAction(wp); + const ea = new ExecuteAction(wp); + + await va.vote({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + support: 1, + }); + + await tc.mine({ + blocks: 86400 / 12 + 1, + interval: 12, + }); + + const state = await governor.read.state([proposalId]); + console.log("state", state); + + await qa.queue({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + targets: proposal.targets, + values: proposal.values, + calldatas: proposal.calldatas, + description: proposal.description, + }); + + const aliceBalance = await voteToken.read.balanceOf([alice]); + const timelockBalance = await voteToken.read.balanceOf([ + timelockAddress, + ]); + + await ea.execute({ + chain: "hardhat", + governor: governor.address as `0x${string}`, + proposalId: proposalId, + targets: proposal.targets, + values: proposal.values, + calldatas: proposal.calldatas, + description: proposal.description, + }); + + const aliceBalanceAfter = await voteToken.read.balanceOf([alice]); + const timelockBalanceAfter = await voteToken.read.balanceOf([ + timelockAddress, + ]); + expect(aliceBalanceAfter).equals(aliceBalance + BigInt(10 ** 18)); + expect(timelockBalanceAfter).equals( + timelockBalance - BigInt(10 ** 18) + ); + }); + }); +}); + +const prepareChains = () => { + const customChains: Record = {}; + const chainNames = ["hardhat"]; + chainNames.forEach( + (chain) => + (customChains[chain] = WalletProvider.genChainFromName( + chain, + "http://localhost:8545" + )) + ); + + return customChains; +}; + +// Function to get proposal ID from transaction receipt +const getProposalId = (logs: any) => { + const proposalCreatedLog = logs.find((log: any) => { + try { + const event = decodeEventLog({ + abi: governorArtifacts.abi, + data: log.data, + topics: log.topics, + }); + return event.eventName === "ProposalCreated"; + } catch { + return false; + } + }); + + if (!proposalCreatedLog) { + throw new Error("ProposalCreated event not found in logs"); + } + + const event = decodeEventLog({ + abi: governorArtifacts.abi, + data: proposalCreatedLog.data, + topics: proposalCreatedLog.topics, + }); + + return event.args.proposalId; +}; diff --git a/packages/plugin-evm/src/types/index.ts b/packages/plugin-evm/src/types/index.ts index a76694b36d96..7f6ae2de012d 100644 --- a/packages/plugin-evm/src/types/index.ts +++ b/packages/plugin-evm/src/types/index.ts @@ -117,6 +117,7 @@ export interface EvmPluginConfig { zksync?: string; canto?: string; alienx?: string; + gravity?: string; }; secrets?: { EVM_PRIVATE_KEY: string; @@ -165,3 +166,39 @@ export interface ProviderError extends Error { code?: number; data?: unknown; } + +export enum VoteType { + AGAINST = 0, + FOR = 1, + ABSTAIN = 2, +} + +export interface Proposal { + targets: Address[]; + values: bigint[]; + calldatas: `0x${string}`[]; + description: string; +} + +export interface VoteParams { + chain: SupportedChain; + governor: Address; + proposalId: string; + support: VoteType; +} + +export interface QueueProposalParams extends Proposal { + chain: SupportedChain; + governor: Address; +} + +export interface ExecuteProposalParams extends Proposal { + chain: SupportedChain; + governor: Address; + proposalId: string; +} + +export interface ProposeProposalParams extends Proposal { + chain: SupportedChain; + governor: Address; +} diff --git a/packages/plugin-flow/package.json b/packages/plugin-flow/package.json index 41e996305ab3..beeea276ab12 100644 --- a/packages/plugin-flow/package.json +++ b/packages/plugin-flow/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-flow", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-fuel/package.json b/packages/plugin-fuel/package.json index f658b0ab7417..3aa6f23dae5d 100644 --- a/packages/plugin-fuel/package.json +++ b/packages/plugin-fuel/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-fuel", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-genlayer/eslint.config.mjs b/packages/plugin-genlayer/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-genlayer/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-genlayer/package.json b/packages/plugin-genlayer/package.json index 2adbf8d12db2..edbb993fc850 100644 --- a/packages/plugin-genlayer/package.json +++ b/packages/plugin-genlayer/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-genlayer", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-giphy/eslint.config.mjs b/packages/plugin-giphy/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-giphy/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-giphy/package.json b/packages/plugin-giphy/package.json index a93f9bbdd5dc..746b0427d235 100644 --- a/packages/plugin-giphy/package.json +++ b/packages/plugin-giphy/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-giphy", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-gitbook/package.json b/packages/plugin-gitbook/package.json index fac3497c30c1..4f5162cb8b19 100644 --- a/packages/plugin-gitbook/package.json +++ b/packages/plugin-gitbook/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-gitbook", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-gitcoin-passport/README.md b/packages/plugin-gitcoin-passport/README.md new file mode 100644 index 000000000000..80de1caedf43 --- /dev/null +++ b/packages/plugin-gitcoin-passport/README.md @@ -0,0 +1,38 @@ +# `@elizaos/plugin-passport` + +This plugin provides actions for interacting with Gitcoin passport +https://docs.passport.xyz/building-with-passport/passport-api/overview + +--- + +## Installation + +Just add it under your character profile in plugins as + +``` + "plugins": [ + "@elizaos/plugin-gitcoin-passport" + ], +``` + +## Configuration + +Getting Your API Key + +1. Log in to the developer portal: Go to developer.passport.xyz and log in to your account by connecting your wallet. +2. Navigate to the API Keys section: After logging in, go to the "API Keys" section. +3. Generate an API key: Click on the "+ Create a Key" button to generate a unique API key for your account. +4. Store your API key securely: Store your API key in a secure place, as it will be used to access the Passport API. + +Getting your Scorer ID + +1. Log in to the Developer Portal: Go to developer.passport.xyz and log in to your account by connecting your wallet. +2. Navigate to the Scorer section: After logging in, go to the "Scorer" section +3. Create a Scorer: Click on the "+ Create a Scorer" button and input a Scorer name and description. Make sure you use the Unique Humanity scorer, and not the Binary scorer. +4. Find your Scorer ID: Click on the newly created Scorer and you will see the Scorer ID in the page URL. + Example: https://developer.passport.xyz/dashboard/scorer/{scorer_id} + +## Usage + +Results are saved as message and agents can retrive it from there for different use cases. +Default passport treshold of 20 is used, but you can pick your own value and match it agains that diff --git a/packages/plugin-gitcoin-passport/eslint.config.mjs b/packages/plugin-gitcoin-passport/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-gitcoin-passport/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-gitcoin-passport/package.json b/packages/plugin-gitcoin-passport/package.json new file mode 100644 index 000000000000..b8a53a658a56 --- /dev/null +++ b/packages/plugin-gitcoin-passport/package.json @@ -0,0 +1,20 @@ +{ + "name": "@elizaos/plugin-gitcoin-passport", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-gitcoin-passport/src/actions/getScore.ts b/packages/plugin-gitcoin-passport/src/actions/getScore.ts new file mode 100644 index 000000000000..5a86009258d9 --- /dev/null +++ b/packages/plugin-gitcoin-passport/src/actions/getScore.ts @@ -0,0 +1,136 @@ +import { + Action, + elizaLogger, + IAgentRuntime, + Memory, + HandlerCallback, + State, + getEmbeddingZeroVector, + composeContext, + generateMessageResponse, + ModelClass, +} from "@elizaos/core"; + +interface PassportScore { + address: string; + score: string; + threshold: string; + passing_score: string; +} + +const createTokenMemory = async ( + runtime: IAgentRuntime, + _message: Memory, + formattedOutput: string +) => { + const memory: Memory = { + userId: _message.userId, + agentId: _message.agentId, + roomId: _message.roomId, + content: { text: formattedOutput }, + createdAt: Date.now(), + embedding: getEmbeddingZeroVector(), + }; + await runtime.messageManager.createMemory(memory); +}; + +export const addressTemplate = `From previous sentence extract only the Ethereum address being asked about. +Respond with a JSON markdown block containing only the extracted value: + +\`\`\`json +{ +"address": string | null +} +\`\`\` +`; + +export const getPassportScoreAction: Action = { + name: "GET_PASSPORT_SCORE", + description: "Get score from Passport API for an address", + validate: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.log("Validating runtime for GET_PASSPORT_SCORE..."); + const apiKey = runtime.getSetting("PASSPORT_API_KEY"); + const scorerId = runtime.getSetting("PASSPORT_SCORER"); + if (!apiKey || !scorerId) { + elizaLogger.error( + "Missing PASSPORT_API_KEY or PASSPORT_SCORER settings" + ); + return false; + } + return true; + }, + handler: async ( + runtime: IAgentRuntime, + _message: Memory, + state: State, + _options: any, + callback: HandlerCallback + ) => { + elizaLogger.log("Starting GET_PASSPORT_SCORE handler..."); + const apiKey = runtime.getSetting("PASSPORT_API_KEY"); + const scorerId = runtime.getSetting("PASSPORT_SCORER"); + + if (!state) { + state = (await runtime.composeState(_message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + const context = composeContext({ + state, + template: `${_message.content.text}\n${addressTemplate}`, + }); + + const addressRequest = await generateMessageResponse({ + runtime, + context, + modelClass: ModelClass.SMALL, + }); + + const address = addressRequest.address as string; + + if (!address) { + callback({ text: "Address is required." }, []); + return; + } + + try { + const response = await fetch( + `https://api.passport.xyz/v2/stamps/${scorerId}/score/${address}`, + { + method: "GET", + headers: { + "X-API-KEY": apiKey, + accept: "application/json", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data: PassportScore = await response.json(); + const formattedOutput = `Address: ${data.address}\nScore: ${data.score}${data.passing_score ? "\nScore is above threshold" : `\nScore is below threshold (${data.threshold})`}`; + + await createTokenMemory(runtime, _message, formattedOutput); + + callback({ text: formattedOutput }, []); + } catch (error) { + elizaLogger.error("Error fetching Passport score:", error); + callback( + { + text: "Failed to fetch Passport score. Please check the logs for more details.", + }, + [] + ); + } + }, + examples: [], + similes: [ + "GET_PASSPORT_SCORE", + "FETCH_PASSPORT_SCORE", + "CHECK_PASSPORT_SCORE", + "VIEW_PASSPORT_SCORE", + ], +}; diff --git a/packages/plugin-gitcoin-passport/src/index.ts b/packages/plugin-gitcoin-passport/src/index.ts new file mode 100644 index 000000000000..638affd8c124 --- /dev/null +++ b/packages/plugin-gitcoin-passport/src/index.ts @@ -0,0 +1,15 @@ +export * from "./actions/getScore"; + +import type { Plugin } from "@elizaos/core"; +import { getPassportScoreAction } from "./actions/getScore"; + +export const gitcoinPassportPlugin: Plugin = { + name: "passport", + description: "Gitcoin passport integration plugin", + providers: [], + evaluators: [], + services: [], + actions: [getPassportScoreAction], +}; + +export default gitcoinPassportPlugin; diff --git a/packages/plugin-gitcoin-passport/tsconfig.json b/packages/plugin-gitcoin-passport/tsconfig.json new file mode 100644 index 000000000000..2d8d3fe8181f --- /dev/null +++ b/packages/plugin-gitcoin-passport/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "./src", + "typeRoots": [ + "./node_modules/@types", + "./src/types" + ], + "declaration": true + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/packages/plugin-gitcoin-passport/tsup.config.ts b/packages/plugin-gitcoin-passport/tsup.config.ts new file mode 100644 index 000000000000..a68ccd636adf --- /dev/null +++ b/packages/plugin-gitcoin-passport/tsup.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "viem", + "@lifi/sdk", + ], +}); diff --git a/packages/plugin-goat/package.json b/packages/plugin-goat/package.json index 1415049f5603..d7febf282b15 100644 --- a/packages/plugin-goat/package.json +++ b/packages/plugin-goat/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-goat", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-goplus/package.json b/packages/plugin-goplus/package.json index 59335c7c8049..e60f48e88659 100644 --- a/packages/plugin-goplus/package.json +++ b/packages/plugin-goplus/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-goplus", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-hyperliquid/package.json b/packages/plugin-hyperliquid/package.json index bb89195cebcc..5172b00efc33 100644 --- a/packages/plugin-hyperliquid/package.json +++ b/packages/plugin-hyperliquid/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-hyperliquid", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-icp/package.json b/packages/plugin-icp/package.json index db15384a7fbb..bdc115c35f60 100644 --- a/packages/plugin-icp/package.json +++ b/packages/plugin-icp/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-icp", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-image-generation/package.json b/packages/plugin-image-generation/package.json index fe7760852555..5f4b7a98556f 100644 --- a/packages/plugin-image-generation/package.json +++ b/packages/plugin-image-generation/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-image-generation", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-image-generation/src/environment.ts b/packages/plugin-image-generation/src/environment.ts index 5c6827dbfad8..35ce50f52493 100644 --- a/packages/plugin-image-generation/src/environment.ts +++ b/packages/plugin-image-generation/src/environment.ts @@ -10,6 +10,7 @@ export const imageGenEnvSchema = z FAL_API_KEY: z.string().optional(), OPENAI_API_KEY: z.string().optional(), VENICE_API_KEY: z.string().optional(), + LIVEPEER_GATEWAY_URL: z.string().optional(), }) .refine( (data) => { @@ -20,12 +21,13 @@ export const imageGenEnvSchema = z data.HEURIST_API_KEY || data.FAL_API_KEY || data.OPENAI_API_KEY || - data.VENICE_API_KEY + data.VENICE_API_KEY || + data.LIVEPEER_GATEWAY_URL ); }, { message: - "At least one of ANTHROPIC_API_KEY, NINETEEN_AI_API_KEY, TOGETHER_API_KEY, HEURIST_API_KEY, FAL_API_KEY, OPENAI_API_KEY or VENICE_API_KEY is required", + "At least one of ANTHROPIC_API_KEY, NINETEEN_AI_API_KEY, TOGETHER_API_KEY, HEURIST_API_KEY, FAL_API_KEY, OPENAI_API_KEY, VENICE_API_KEY or LIVEPEER_GATEWAY_URL is required", } ); @@ -57,6 +59,9 @@ export async function validateImageGenConfig( VENICE_API_KEY: runtime.getSetting("VENICE_API_KEY") || process.env.VENICE_API_KEY, + LIVEPEER_GATEWAY_URL: + runtime.getSetting("LIVEPEER_GATEWAY_URL") || + process.env.LIVEPEER_GATEWAY_URL, }; return imageGenEnvSchema.parse(config); diff --git a/packages/plugin-image-generation/src/index.ts b/packages/plugin-image-generation/src/index.ts index 06f5e3bb855c..1e2c7944a21b 100644 --- a/packages/plugin-image-generation/src/index.ts +++ b/packages/plugin-image-generation/src/index.ts @@ -110,6 +110,7 @@ const imageGeneration: Action = { width?: number; height?: number; count?: number; + cfgScale?: number; negativePrompt?: string; numIterations?: number; guidanceScale?: number; @@ -118,6 +119,7 @@ const imageGeneration: Action = { jobId?: string; stylePreset?: string; hideWatermark?: boolean; + safeMode?: boolean; }, callback: HandlerCallback ) => { @@ -231,18 +233,19 @@ Ensure that your prompt is detailed, vivid, and incorporates all the elements me : {}), ...(options.stylePreset != null || imageSettings.stylePreset != null - ? { - stylePreset: - options.stylePreset || imageSettings.stylePreset, - } + ? { stylePreset: options.stylePreset || + imageSettings.stylePreset } : {}), ...(options.hideWatermark != null || imageSettings.hideWatermark != null - ? { - hideWatermark: - options.hideWatermark || - imageSettings.hideWatermark, - } + ? { hideWatermark: options.hideWatermark || + imageSettings.hideWatermark } + : {}), + ...(options.safeMode != null || imageSettings.safeMode != null + ? { safeMode: options.safeMode || imageSettings.safeMode } + : {}), + ...(options.cfgScale != null || imageSettings.cfgScale != null + ? { cfgScale: options.cfgScale || imageSettings.cfgScale } : {}), }, runtime diff --git a/packages/plugin-injective/Readme.md b/packages/plugin-injective/Readme.md new file mode 100644 index 000000000000..d08ae4abf48d --- /dev/null +++ b/packages/plugin-injective/Readme.md @@ -0,0 +1,176 @@ +# @elizaos/plugin-injective + +A comprehensive plugin for interacting with the Injective chain through ElizaOS. + +## Project Structure + +``` +src/ +├── auction.ts # Auction module actions +├── auth.ts # Auth module actions +├── bank.ts # Bank module actions +├── distribution.ts # Distribution module actions +├── exchange.ts # Exchange module actions +├── explorer.ts # Explorer module actions +├── gov.ts # Governance module actions +├── ibc.ts # IBC module actions +├── insurance.ts # Insurance module actions +├── mint.ts # Mint module actions +├── mito.ts # Mito module actions +├── peggy.ts # Peggy module actions +├── permissions.ts # Permissions module actions +├── staking.ts # Staking module actions +├── token-factory.ts # Token Factory module actions +├── wasm.ts # WASM module actions +├── base.ts # Base action creation logic +└── index.ts # Main export file +``` + +## Module Organization + +Each module file follows a consistent organization pattern: + +### 1. File Structure +```typescript +// src/[module].ts + +import { createGenericAction } from './base'; +import * as ModuleTemplates from '@injective/template/[module]'; +import * as ModuleExamples from '@injective/examples/[module]'; + +// Export individual actions +export const Action1 = createGenericAction({...}); +export const Action2 = createGenericAction({...}); + +// Export all actions as a group +export const ModuleActions = [ + Action1, + Action2, + // ...other actions +]; +``` + +### 2. Main Export File +```typescript +// src/index.ts + +export * from './auction'; +export * from './auth'; +// ...other module exports + +export const InjectiveActions = [ + ...ExchangeActions, + ...AuctionActions, + // ...other module actions +]; +``` + +## Module Descriptions + +### auction.ts +Handles auction-related functionality including module parameters, auction rounds, and bidding. + +### auth.ts +Manages authentication, account details, and authorization grants. + +### bank.ts +Handles account balances, token transfers, and supply queries. + +### distribution.ts +Manages reward distribution and withdrawals. + +### exchange.ts +Core exchange functionality including spot/derivative markets, orders, and positions. + +### explorer.ts +Blockchain explorer functionality including transaction and block queries. + +### gov.ts +Handles protocol governance including proposals and voting. + +### ibc.ts +Inter-Blockchain Communication functionality. + +### insurance.ts +Manages insurance funds and redemptions. + +### mint.ts +Controls token minting and inflation parameters. + +### mito.ts +Handles Mito-specific functionality. + +### peggy.ts +Manages Ethereum bridge operations. + +### permissions.ts +Controls role-based access and permissions. + +### staking.ts +Manages validator operations and delegations. + +### token-factory.ts +Handles token creation and management. + +### wasm.ts +Smart contract functionality including deployment and execution. + +## Development + +### Adding New Actions + +1. Add action to appropriate module file: +```typescript +export const NewAction = createGenericAction({ + name: 'ACTION_NAME', + description: 'Action description', + template: Templates.template, + examples: Examples.example, + functionName: 'functionName', + validateContent: () => true +}); + +export const ModuleActions = [ + ...existingActions, + NewAction +]; +``` + +### Adding New Modules + +1. Create new module file: +```typescript +// src/new-module.ts +export const NewModuleActions = [...]; +``` + +2. Add to main exports: +```typescript +// src/index.ts +export * from './new-module'; +``` + +## Installation + +```bash +npm install @elizaos/plugin-injective +``` + +## Usage + +```typescript +import { InjectiveActions } from '@elizaos/plugin-injective'; +``` + +## Contributing +Feel free to contribute to more similes, examples and refined templates - for a more robust action contorl. + +1. Fork the repository +2. Create your feature branch +3. Commit your changes +4. Push to the branch +5. Create a Pull Request + +## License + +ISC \ No newline at end of file diff --git a/packages/plugin-injective/eslint.config.mjs b/packages/plugin-injective/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-injective/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/.eslintignore b/packages/plugin-injective/injective-sdk-client-ts/.eslintignore new file mode 100644 index 000000000000..d93463d4d641 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/.eslintignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +build/ diff --git a/packages/plugin-injective/injective-sdk-client-ts/.eslintrc.js b/packages/plugin-injective/injective-sdk-client-ts/.eslintrc.js new file mode 100644 index 000000000000..2688cb34e7a7 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/.eslintrc.js @@ -0,0 +1,23 @@ +module.exports = { + "root": true, + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + // TypeScript-specific rules + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], + + // General ESLint rules + "no-console": "warn", + "eqeqeq": "error", + "no-duplicate-imports": "error", + "prefer-const": "warn" + } +} \ No newline at end of file diff --git a/packages/plugin-injective/injective-sdk-client-ts/Readme.md b/packages/plugin-injective/injective-sdk-client-ts/Readme.md new file mode 100644 index 000000000000..e2a8c26f110c --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/Readme.md @@ -0,0 +1,190 @@ +# Injective SDK Client TypeScript + +A TypeScript client implementation for interacting with the Injective Protocol blockchain, providing comprehensive access to both chain and indexer gRPC endpoints. + +## Project Structure + +``` +plugin-injective/ +├── .vscode/ +├── injective-sdk-client-ts/ +│ ├── src/ +│ │ ├── exceptions/ +│ │ ├── grpc/ +│ │ │ ├── grpc-base.ts # Base gRPC client implementation +│ │ │ └── modules/ # Module-specific implementations +│ │ │ ├── auction.ts +│ │ │ ├── auth.ts +│ │ │ ├── authz.ts +│ │ │ ├── bank.ts +│ │ │ ├── distribution.ts +│ │ │ ├── exchange.ts +│ │ │ ├── explorer.ts +│ │ │ ├── gov.ts +│ │ │ ├── ibc.ts +│ │ │ ├── insurance-fund.ts +│ │ │ ├── mint.ts +│ │ │ ├── mito.ts +│ │ │ ├── oracle.ts +│ │ │ ├── peggy.ts +│ │ │ ├── permissions.ts +│ │ │ ├── staking.ts +│ │ │ ├── token-factory.ts +│ │ │ ├── wasm.ts +│ │ │ └── wasmx.ts +│ │ ├── template/ +│ │ └── types/ +│ ├── .eslintignore +│ ├── .eslintrc.js +│ ├── eslint.config.mjs +│ ├── package-lock.json +│ ├── package.json +│ └── tsconfig.json +``` + +## Features + +- **Comprehensive Module Support**: Includes implementations for all major Injective Protocol modules +- **Dual API Support**: Handles both Chain gRPC and Indexer gRPC endpoints +- **Type Safety**: Full TypeScript implementation with comprehensive type definitions +- **Error Handling**: Custom exception handling for gRPC-specific errors +- **Network Flexibility**: Supports multiple network types (Mainnet, Testnet, etc.) + +## Core Components + +### InjectiveGrpcBase + +The base class that provides fundamental gRPC functionality: +- Network configuration management +- Connection handling +- Request/query execution +- Message broadcasting capabilities + +### Supported Modules + +1. **Chain gRPC Modules** + - Auction + - Auth/AuthZ + - Bank + - Distribution + - Exchange + - Governance + - IBC + - Insurance Fund + - Mint + - Oracle + - Peggy + - Permissions + - Staking + - Token Factory + - Wasm/WasmX + +2. **Indexer gRPC Modules** + - Account & Portfolio + - Derivatives + - Spot Trading + - Explorer + - Insurance Fund + - Mito + - Oracle + - Web3 Gateway + +## Installation + +```bash +pnpm install +``` + +## Build and Use +To build and use the project, run the following command +```bash +pnpm build +``` + +## Usage + +Basic setup: + +```typescript +import { InjectiveGrpcClient } from '@injectivelabs/injective-sdk-client-ts' + +// Initialize client +const client = new InjectiveGrpcClient({ + networkType: "Mainnet", + privateKey: "your-private-key" +}) + +// Example: Query bank balance +const getBalance = async () => { + const response = await client.getBankBalance({ + address: "inj1..." + }) + console.log(response) +} +``` + +### Key Features + +1. **Address Generation** +```typescript +const address = getAddressFromPrivateKey(privateKey) +``` + +2. **Message Broadcasting** +```typescript +// Send tokens +const response = await client.msgSend({ + amount: "1000000000", + denom: "inj", + recipient: "inj1...", +}) +``` + +3. **Market Data Queries** +```typescript +// Get spot markets +const markets = await client.getSpotMarkets({}) + +// Get derivative markets +const derivativeMarkets = await client.getDerivativeMarkets({}) +``` + +## Error Handling + +The client implements custom error handling through the `GrpcException` class: + +```typescript +try { + await client.someMethod() +} catch (e) { + if (e instanceof GrpcException) { + console.error(`gRPC error: ${e.message}`) + } +} +``` + +## Network Configuration + +Supports multiple network types: +- Mainnet +- Testnet +- Devnet + +```typescript +const client = new InjectiveGrpcClient({ + networkType: "Testnet", + privateKey: "your-private-key" +}) +``` + +## Contributing + +1. Fork the repository +2. Create your feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add some amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +## License + +This project is licensed under the MIT License - see the LICENSE file for details. \ No newline at end of file diff --git a/packages/plugin-injective/injective-sdk-client-ts/eslint.config.mjs b/packages/plugin-injective/injective-sdk-client-ts/eslint.config.mjs new file mode 100644 index 000000000000..2415fb89f50a --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/eslint.config.mjs @@ -0,0 +1,37 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + +export default [ + { + files: ["**/*.{js,mjs,cjs,ts}"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + }, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module" + } + } + }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + { + rules: { + // Customize rules as needed + "no-unused-vars": "warn", + "@typescript-eslint/no-explicit-any": "warn", + "no-console": "warn" + } + }, + { + ignores: [ + "node_modules/", + "dist/", + "build/", + "**/*.d.ts" + ] + } +]; \ No newline at end of file diff --git a/packages/plugin-injective/injective-sdk-client-ts/package.json b/packages/plugin-injective/injective-sdk-client-ts/package.json new file mode 100644 index 000000000000..88cc4794864c --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/package.json @@ -0,0 +1,50 @@ +{ + "name": "@injectivelabs/injective-sdk-client-ts", + "version": "1.0.0", + "description": "Injective Protocol TypeScript Library", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc", + "test": "jest", + "lint": "eslint . ", + "lint:fix": "eslint . --fix", + "format": "prettier --write \"src/**/*.ts\"", + "test:integration": "vitest integration --reporter verbose", + "dev": "tsc --watch", + "type-check": "tsc --noEmit" + }, + "exports": { + ".": { + "require": "./dist/index.cjs", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + + "dependencies": { + "@injectivelabs/networks": "1.14.34-beta.2", + "@injectivelabs/sdk-ts": "1.14.34-beta.2", + "@injectivelabs/token-metadata": "1.14.11", + "@injectivelabs/ts-types": "1.14.34-beta.2", + "@injectivelabs/utils": "1.14.34-beta.2", + "bignumber.js": "^9.1.2" + }, + "devDependencies": { + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", + "@eslint/js": "^9.17.0", + "@types/eslint__js": "^8.42.3", + "@types/jest": "^29.5.14", + "@types/node": "^20.10.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "globals": "^15.14.0", + "prettier": "^3.1.0", + "typescript": "^5.3.2", + "typescript-eslint": "^8.19.0", + "vitest": "latest" + } + } \ No newline at end of file diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/auction.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/auction.ts new file mode 100644 index 000000000000..d9da1b1959e2 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/auction.ts @@ -0,0 +1,218 @@ +export const getAuctionModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the auction module parameters, including the auction period and the minimum next bid increment rate.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Auction module parameters retrieved successfully.", + action: "GET_AUCTION_MODULE_PARAMS", + content: { + auctionPeriod: 7200, + minNextBidIncrementRate: "0.05", + }, + }, + }, +]; + +export const getAuctionModuleStateExample = [ + { + user: "{{user1}}", + content: { + text: "Get the current state of the auction module, including parameters, auction round, highest bid, and auction ending timestamp.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Auction module state retrieved successfully.", + action: "GET_AUCTION_MODULE_STATE", + content: { + params: { + auctionPeriod: 7200, + minNextBidIncrementRate: "0.05", + }, + auctionRound: 12, + highestBid: { + bidder: "inj1xmpl3bidderaddress", + amount: "2500000000", + }, + auctionEndingTimestamp: 1700000000, + }, + }, + }, +]; + +export const getCurrentBasketExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch the details of the current auction basket, including the list of amounts, auction round, closing time, highest bidder, and highest bid amount.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Current auction basket details retrieved successfully.", + action: "GET_CURRENT_BASKET", + content: { + amountList: [ + { + denom: "inj", + amount: "500000000", + }, + { + denom: "usdt", + amount: "1000000", + }, + ], + auctionRound: 12, + auctionClosingTime: 1700003600, + highestBidder: "inj1xmpl3bidderaddress", + highestBidAmount: "2500000000", + }, + }, + }, +]; + +export const getAuctionRoundExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve information for auction round number 12.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Auction round 12 details retrieved successfully.", + action: "GET_AUCTION_ROUND", + content: { + auction: { + winner: "inj1w1nn3raddress", + basketList: [ + { + denom: "inj", + amount: "500000000", + }, + { + denom: "usdt", + amount: "1000000", + }, + ], + winningBidAmount: "2500000000", + round: 12, + endTimestamp: 1700000000, + updatedAt: 1700000000, + }, + bids: [ + { + bidder: "inj1bidder1address", + bidAmount: "2000000000", + bidTimestamp: 1699999000, + }, + { + bidder: "inj1bidder2address", + bidAmount: "2500000000", + bidTimestamp: 1699999500, + }, + ], + }, + }, + }, +]; + +export const getAuctionsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the list of all past auctions with their details.", + }, + }, + { + user: "{{agent}}", + content: { + text: "List of auctions retrieved successfully.", + action: "GET_AUCTIONS", + content: [ + { + winner: "inj1w1nn3raddress", + basketList: [ + { + denom: "inj", + amount: "500000000", + }, + { + denom: "usdt", + amount: "1000000", + }, + ], + winningBidAmount: "2500000000", + round: 12, + endTimestamp: 1700000000, + updatedAt: 1700000000, + }, + { + winner: "inj1w1nn3raddress2", + basketList: [ + { + denom: "inj", + amount: "750000000", + }, + { + denom: "usdt", + amount: "1500000", + }, + ], + winningBidAmount: "3500000000", + round: 11, + endTimestamp: 1699996400, + updatedAt: 1699996400, + }, + ], + }, + }, +]; + +export const msgBidExample = [ + { + user: "{{user1}}", + content: { + text: "Place a bid of 2600000000 INJ_DENOM in auction round 12.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Bid placed successfully.", + action: "PLACE_BID", + content: { + round: 12, + amount: "2600000000", + }, + }, + }, +]; + +export const msgBidResponseExample = [ + { + user: "{{user1}}", + content: { + text: "Confirm the bid transaction.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Bid transaction processed.", + action: "BID_TRANSACTION_RESPONSE", + content: { + txHash: "0xabc123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/auth.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/auth.ts new file mode 100644 index 000000000000..23ae93c97794 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/auth.ts @@ -0,0 +1,313 @@ +export const getAuthModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the auth module parameters, including max memo characters, transaction signature limit, transaction size cost per byte, and signature verification costs.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Auth module parameters retrieved successfully.", + action: "GET_AUTH_MODULE_PARAMS", + content: { + maxMemoCharacters: 256, + txSigLimit: 7, + txSizeCostPerByte: 10, + sigVerifyCostEd25519: 590, + sigVerifyCostSecp256k1: 1000, + }, + }, + }, +]; + +export const getAccountDetailsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch the account details for address inj1exampleaddress.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Account details retrieved successfully.", + action: "GET_ACCOUNT_DETAILS", + content: { + codeHash: "0xabcdef1234567890", + baseAccount: { + address: "inj1exampleaddress", + pubKey: { + key: "A1B2C3D4E5F6G7H8I9J0", + typeUrl: "/cosmos.crypto.secp256k1.PubKey", + }, + accountNumber: 123456, + sequence: 789012, + }, + }, + }, + }, +]; + +export const getAccountsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the list of all accounts with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Accounts list retrieved successfully.", + action: "GET_ACCOUNTS", + content: { + pagination: { + nextKey: "eyJwYWdlIjoyfQ==", + total: 250, + }, + accounts: [ + { + codeHash: "0xabcdef1234567890", + baseAccount: { + address: "inj1account1address", + pubKey: { + key: "Z9Y8X7W6V5U4T3S2R1Q", + typeUrl: "/cosmos.crypto.secp256k1.PubKey", + }, + accountNumber: 654321, + sequence: 210987, + }, + }, + { + codeHash: "0x1234567890abcdef", + baseAccount: { + address: "inj1account2address", + pubKey: { + key: "L1K2J3H4G5F6D7S8A9Q", + typeUrl: "/cosmos.crypto.secp256k1.PubKey", + }, + accountNumber: 112233, + sequence: 445566, + }, + }, + ], + }, + }, + }, +]; + +export const getGrantsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch all grants for granter inj1granteraddress and grantee inj1granteeaddress with message type /cosmos.bank.v1beta1.MsgSend.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Grants fetched successfully.", + action: "GET_GRANTS", + content: { + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 15, + }, + grants: [ + { + authorization: { + "@type": + "/cosmos.authz.v1beta1.GenericAuthorization", + msg: "/cosmos.bank.v1beta1.MsgSend", + }, + authorizationType: "GenericAuthorization", + expiration: "2024-12-31T23:59:59Z", + }, + { + authorization: { + "@type": "/cosmos.authz.v1beta1.SendAuthorization", + spendLimit: [ + { + denom: "inj", + amount: "1000000", + }, + ], + }, + authorizationType: "SendAuthorization", + expiration: "2025-06-30T12:00:00Z", + }, + ], + }, + }, + }, +]; + +export const getGranterGrantsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all grants made by granter inj1granteraddress with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Granter's grants fetched successfully.", + action: "GET_GRANTER_GRANTS", + content: { + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 10, + }, + grants: [ + { + granter: "inj1granteraddress", + grantee: "inj1grantee1address", + authorization: { + "@type": + "/cosmos.authz.v1beta1.GenericAuthorization", + msg: "/cosmos.bank.v1beta1.MsgSend", + }, + authorizationType: "GenericAuthorization", + expiration: "2024-12-31T23:59:59Z", + }, + { + granter: "inj1granteraddress", + grantee: "inj1grantee2address", + authorization: { + "@type": "/cosmos.authz.v1beta1.SendAuthorization", + spendLimit: [ + { + denom: "usdt", + amount: "500000", + }, + ], + }, + authorizationType: "SendAuthorization", + expiration: "2025-01-15T08:30:00Z", + }, + ], + }, + }, + }, +]; + +export const getGranteeGrantsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all grants received by grantee inj1granteeaddress with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Grantee's grants fetched successfully.", + action: "GET_GRANTEE_GRANTS", + content: { + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 8, + }, + grants: [ + { + granter: "inj1granter1address", + grantee: "inj1granteeaddress", + authorization: { + "@type": + "/cosmos.authz.v1beta1.GenericAuthorization", + msg: "/cosmos.bank.v1beta1.MsgSend", + }, + authorizationType: "GenericAuthorization", + expiration: "2024-12-31T23:59:59Z", + }, + { + granter: "inj1granter2address", + grantee: "inj1granteeaddress", + authorization: { + "@type": "/cosmos.authz.v1beta1.SendAuthorization", + spendLimit: [ + { + denom: "inj", + amount: "250000", + }, + ], + }, + authorizationType: "SendAuthorization", + expiration: "2025-03-10T16:45:00Z", + }, + ], + }, + }, + }, +]; + +export const msgGrantExample = [ + { + user: "{{user1}}", + content: { + text: "Grant authorization to grantee inj1granteeaddress for message type /cosmos.bank.v1beta1.MsgSend.", + }, + }, +]; + +export const msgGrantResponseExample = [ + { + user: "{{agent}}", + content: { + text: "Authorization granted successfully.", + action: "MSG_GRANT", + content: { + txHash: "0xgrant123hash456def789ghi012jkl345mno678pqr901stu234vwx", + success: true, + }, + }, + }, +]; + +export const msgExecExample = [ + { + user: "{{user1}}", + content: { + text: "Execute authorized messages for grantee inj1granteeaddress: Send 1000000000 inj to inj1recipientaddress.", + }, + }, +]; + +export const msgExecResponseExample = [ + { + user: "{{agent}}", + content: { + text: "Authorized messages executed successfully.", + action: "MSG_EXEC", + content: { + txHash: "0xexec123hash456def789ghi012jkl345mno678pqr901stu234vwx", + success: true, + }, + }, + }, +]; + +export const msgRevokeExample = [ + { + user: "{{user1}}", + content: { + text: "Revoke authorization for grantee inj1granteeaddress for message type /cosmos.bank.v1beta1.MsgSend.", + }, + }, +]; + +export const msgRevokeResponseExample = [ + { + user: "{{agent}}", + content: { + text: "Authorization revoked successfully.", + action: "MSG_REVOKE", + content: { + txHash: "0xrevoke123hash456def789ghi012jkl345mno678pqr901stu234vwx", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/bank.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/bank.ts new file mode 100644 index 000000000000..794ff2409ba7 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/bank.ts @@ -0,0 +1,412 @@ +export const getBankModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the bank module parameters, including send enabled list and default send enabled status.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Bank module parameters retrieved successfully.", + action: "GET_BANK_MODULE_PARAMS", + content: { + sendEnabledList: [ + { + denom: "inj", + enabled: true, + }, + { + denom: "usdt", + enabled: false, + }, + ], + defaultSendEnabled: true, + }, + }, + }, +]; + +export const getBankBalanceExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch the bank balance for account inj1exampleaddress and denomination inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Bank balance retrieved successfully.", + action: "GET_BANK_BALANCE", + content: { + denom: "inj", + amount: "1000000000", + }, + }, + }, +]; + +export const getBankBalancesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all bank balances for account inj1exampleaddress with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Bank balances retrieved successfully.", + action: "GET_BANK_BALANCES", + content: { + balances: [ + { + denom: "inj", + amount: "1000000000", + }, + { + denom: "usdt", + amount: "5000000", + }, + ], + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 2, + }, + }, + }, + }, +]; + +export const getTotalSupplyExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the total supply with optional pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Total supply retrieved successfully.", + action: "GET_TOTAL_SUPPLY", + content: { + supply: [ + { + denom: "inj", + amount: "1000000000000", + }, + { + denom: "usdt", + amount: "2000000000", + }, + ], + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 2, + }, + }, + }, + }, +]; + +export const getAllTotalSupplyExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the complete total supply for all denominations.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Complete total supply retrieved successfully.", + action: "GET_ALL_TOTAL_SUPPLY", + content: { + supply: [ + { + denom: "inj", + amount: "1000000000000", + }, + { + denom: "usdt", + amount: "2000000000", + }, + { + denom: "btc", + amount: "500000000", + }, + ], + pagination: { + nextKey: null, + total: 3, + }, + }, + }, + }, +]; + +export const getSupplyOfExample = [ + { + user: "{{user1}}", + content: { + text: "Get the supply of denomination inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Supply of inj retrieved successfully.", + action: "GET_SUPPLY_OF", + content: { + denom: "inj", + amount: "1000000000000", + }, + }, + }, +]; + +export const getDenomsMetadataExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch metadata for all denominations with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination metadata fetched successfully.", + action: "GET_DENOMS_METADATA", + content: { + metadatas: [ + { + description: + "The native staking token of the Injective blockchain", + denom_units: [ + { + denom: "inj", + exponent: 0, + aliases: ["inj"], + }, + ], + base: "inj", + display: "inj", + name: "Injective", + symbol: "INJ", + }, + { + description: "USD Tether", + denom_units: [ + { + denom: "usdt", + exponent: 0, + aliases: ["usdt"], + }, + ], + base: "usdt", + display: "usdt", + name: "Tether USD", + symbol: "USDT", + }, + ], + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 2, + }, + }, + }, + }, +]; + +export const getDenomMetadataExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve metadata for denomination inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination metadata for inj retrieved successfully.", + action: "GET_DENOM_METADATA", + content: { + description: + "The native staking token of the Injective blockchain", + denom_units: [ + { + denom: "inj", + exponent: 0, + aliases: ["inj"], + }, + { + denom: "inj", + exponent: 6, + aliases: ["uinj"], + }, + ], + base: "inj", + display: "inj", + name: "Injective", + symbol: "INJ", + }, + }, + }, +]; + +export const getDenomOwnersExample = [ + { + user: "{{user1}}", + content: { + text: "Get the owners of denomination inj with pagination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination owners retrieved successfully.", + action: "GET_DENOM_OWNERS", + content: { + denomOwners: [ + { + address: "inj1address1", + balance: { + denom: "inj", + amount: "500000000", + }, + }, + { + address: "inj1address2", + balance: { + denom: "inj", + amount: "300000000", + }, + }, + ], + pagination: { + nextKey: "eyJwYWdlIjozfQ==", + total: 2, + }, + }, + }, + }, +]; + +export const msgSendExample = [ + { + user: "{{user1}}", + content: { + text: "Send 1000000000 inj from inj1senderaddress to inj1recipientaddress.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Send transaction submitted successfully.", + action: "MSG_SEND", + content: { + srcInjectiveAddress: "inj1senderaddress", + dstInjectiveAddress: "inj1recipientaddress", + amount: { + denom: "inj", + amount: "1000000000", + }, + }, + }, + }, +]; + +export const msgSendResponseExample = [ + { + user: "{{user1}}", + content: { + text: "Confirm the send transaction.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Send transaction processed successfully.", + action: "MSG_SEND_RESPONSE", + content: { + txHash: "0xsendinghash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgMultiSendExample = [ + { + user: "{{user1}}", + content: { + text: "Execute a multi-send transaction: send 500000000 inj and 2500000 usdt from inj1senderaddress to inj1recipient1address and inj1recipient2address.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Multi-send transaction submitted successfully.", + action: "MSG_MULTI_SEND", + content: { + inputs: [ + { + address: "inj1senderaddress", + coins: [ + { + denom: "inj", + amount: "500000000", + }, + { + denom: "usdt", + amount: "2500000", + }, + ], + }, + ], + outputs: [ + { + address: "inj1recipient1address", + coins: [ + { + denom: "inj", + amount: "300000000", + }, + ], + }, + { + address: "inj1recipient2address", + coins: [ + { + denom: "inj", + amount: "200000000", + }, + ], + }, + ], + }, + }, + }, +]; + +export const msgMultiSendResponseExample = [ + { + user: "{{user1}}", + content: { + text: "Confirm the multi-send transaction.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Multi-send transaction processed successfully.", + action: "MSG_MULTI_SEND_RESPONSE", + content: { + txHash: "0xmultisendhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/distribution.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/distribution.ts new file mode 100644 index 000000000000..25c01fe9ef0c --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/distribution.ts @@ -0,0 +1,222 @@ +export const getDistributionModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the distribution module parameters, including community tax, base proposer reward, bonus proposer reward, and withdraw address enabled status.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Distribution module parameters retrieved successfully.", + action: "GET_DISTRIBUTION_MODULE_PARAMS", + content: { + communityTax: "0.020000000000000000", + baseProposerReward: "0.010000000000000000", + bonusProposerReward: "0.040000000000000000", + withdrawAddrEnabled: true, + }, + }, + }, +]; + +export const getDelegatorRewardsForValidatorExample = [ + { + user: "{{user1}}", + content: { + text: "Get delegator rewards for delegator address inj1delegatoraddress and validator address injvaloper1validatoraddress.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegator rewards retrieved successfully.", + action: "GET_DELEGATOR_REWARDS_FOR_VALIDATOR", + content: [ + { + denom: "inj", + amount: "1000000000", + }, + ], + }, + }, +]; + +export const getDelegatorRewardsForValidatorNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Get delegator rewards for delegator address inj1delegatoraddress and validator address injvaloper1validatoraddress without throwing errors.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegator rewards retrieved successfully (no-throw).", + action: "GET_DELEGATOR_REWARDS_FOR_VALIDATOR_NO_THROW", + content: [ + { + denom: "inj", + amount: "1000000000", + }, + ], + }, + }, +]; + +export const getDelegatorRewardsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all delegator rewards for delegator address inj1delegatoraddress.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegator rewards retrieved successfully.", + action: "GET_DELEGATOR_REWARDS", + content: [ + { + validatorAddress: "injvaloper1validatoraddress1", + rewards: [ + { + denom: "inj", + amount: "500000000", + }, + ], + }, + { + validatorAddress: "injvaloper1validatoraddress2", + rewards: [ + { + denom: "inj", + amount: "500000000", + }, + ], + }, + ], + }, + }, +]; + +export const getDelegatorRewardsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all delegator rewards for delegator address inj1delegatoraddress without throwing errors.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegator rewards retrieved successfully (no-throw).", + action: "GET_DELEGATOR_REWARDS_NO_THROW", + content: [ + { + validatorAddress: "injvaloper1validatoraddress1", + rewards: [ + { + denom: "inj", + amount: "500000000", + }, + ], + }, + { + validatorAddress: "injvaloper1validatoraddress2", + rewards: [ + { + denom: "inj", + amount: "500000000", + }, + ], + }, + ], + }, + }, +]; + +export const msgWithdrawDelegatorRewardExample = [ + { + user: "{{user1}}", + content: { + text: "Withdraw delegator rewards for delegator address inj1delegatoraddress and validator address injvaloper1validatoraddress.", + }, + }, +]; + +export const msgWithdrawDelegatorRewardResponseExample = [ + { + user: "{{agent}}", + content: { + text: "Delegator rewards withdrawal submitted successfully.", + action: "MSG_WITHDRAW_DELEGATOR_REWARD", + content: { + delegatorAddress: "inj1delegatoraddress", + validatorAddress: "injvaloper1validatoraddress", + }, + }, + }, +]; + +export const msgWithdrawDelegatorRewardTransactionResponseExample = [ + { + user: "{{user1}}", + content: { + text: "Confirm the withdraw delegator reward transaction.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Withdraw delegator reward transaction processed successfully.", + action: "MSG_WITHDRAW_DELEGATOR_REWARD_RESPONSE", + content: { + txHash: "0xwithdrawdelegatorrewardhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgWithdrawValidatorCommissionExample = [ + { + user: "{{user1}}", + content: { + text: "Withdraw validator commission for validator address injvaloper1validatoraddress.", + }, + }, +]; + +export const msgWithdrawValidatorCommissionResponseExample = [ + { + user: "{{agent}}", + content: { + text: "Validator commission withdrawal submitted successfully.", + action: "MSG_WITHDRAW_VALIDATOR_COMMISSION", + content: { + validatorAddress: "injvaloper1validatoraddress", + }, + }, + }, +]; + +export const msgWithdrawValidatorCommissionTransactionResponseExample = [ + { + user: "{{user1}}", + content: { + text: "Confirm the withdraw validator commission transaction.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Withdraw validator commission transaction processed successfully.", + action: "MSG_WITHDRAW_VALIDATOR_COMMISSION_RESPONSE", + content: { + txHash: "0xwithdrawvalidatorcommissionhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/exchange.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/exchange.ts new file mode 100644 index 000000000000..3bbe96297bd7 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/exchange.ts @@ -0,0 +1,2304 @@ +export const getAccountPortfolioExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve account portfolio for address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Account portfolio retrieved successfully.", + action: "GET_ACCOUNT_PORTFOLIO", + content: { + accountAddress: "inj1...", + bankBalancesList: [ + { + amount: "1000000", + denom: "inj", + }, + ], + subaccountsList: [ + { + subaccountId: "subaccount_id", + denom: "inj", + deposit: { + totalBalance: "1000000", + availableBalance: "900000", + }, + }, + ], + positionsWithUpnlList: [ + { + position: { + marketId: "market_id", + subaccountId: "subaccount_id", + direction: "long", + quantity: "1.5", + entryPrice: "25000.5", + margin: "1000", + liquidationPrice: "24000.0", + markPrice: "25100.0", + ticker: "BTC/USDT", + }, + unrealizedPnl: "150.75", + }, + ], + }, + }, + }, +]; + +export const getSubaccountHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch subaccount history for subaccount ID 'subaccount_id' with denom 'inj' and transfer types ['deposit', 'withdraw'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Subaccount history retrieved successfully.", + action: "GET_SUBACCOUNT_HISTORY", + content: { + transfers: [ + { + transferType: "deposit", + srcSubaccountId: "src_subaccount_id", + srcSubaccountAddress: "inj1...", + dstSubaccountId: "dst_subaccount_id", + dstSubaccountAddress: "inj1...", + amount: { + amount: "1000000", + denom: "inj", + }, + executedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getSpotMarketExample = [ + { + user: "{{user1}}", + content: { + text: "Lookup spot market with market ID 'market_id'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot market retrieved successfully.", + action: "GET_SPOT_MARKET", + content: { + marketId: "market_id", + marketStatus: "active", + ticker: "INJ/USDT", + baseDenom: "inj", + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + serviceProviderFee: "0.4", + minPriceTickSize: 0.000001, + minQuantityTickSize: 0.000001, + }, + }, + }, +]; + +export const getDerivativeMarketExample = [ + { + user: "{{user1}}", + content: { + text: "Lookup derivative market with market ID 'market_id'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative market retrieved successfully.", + action: "GET_DERIVATIVE_MARKET", + content: { + marketId: "market_id", + marketStatus: "active", + ticker: "BTC/USDT PERP", + oracleBase: "BTC", + oracleQuote: "USDT", + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + serviceProviderFee: "0.4", + initialMarginRatio: "0.05", + maintenanceMarginRatio: "0.02", + isPerpetual: true, + minPriceTickSize: 0.01, + minQuantityTickSize: 0.001, + }, + }, + }, +]; + +export const getExchangePositionsExample = [ + { + user: "{{user1}}", + content: { + text: "Query positions of the exchange modules", + }, + }, + { + user: "{{agent}}", + content: { + text: "Positions retrieved successfully.", + action: "GET_EXCHANGE_POSITIONS", + content: { + positions: [ + { + marketId: "market_id", + subaccountId: "subaccount_id", + direction: "long", + quantity: "1.5", + entryPrice: "25000.5", + margin: "1000", + liquidationPrice: "24000.0", + markPrice: "25100.0", + ticker: "BTC/USDT", + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getInsuranceFundsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve insurance funds information.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Insurance funds information retrieved successfully.", + action: "GET_INSURANCE_FUNDS", + content: { + funds: [ + { + depositDenom: "inj", + insurancePoolTokenDenom: "insurance_pool_token", + redemptionNoticePeriodDuration: 1209600, + balance: "1000000", + totalShare: "1000000", + marketId: "market_id", + marketTicker: "BTC/USDT PERP", + oracleBase: "BTC", + oracleQuote: "USDT", + oracleType: "band", + expiry: 0, + }, + ], + }, + }, + }, +]; + +export const getRedemptionsExample = [ + { + user: "{{user1}}", + content: { + text: "Query redemptions for address 'inj1...' with denom 'inj' and status 'pending'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Redemptions retrieved successfully.", + action: "GET_REDEMPTIONS", + content: { + redemptions: [ + { + redemptionId: 1, + status: "pending", + redeemer: "inj1...", + claimableRedemptionTime: 1641859200, + redemptionAmount: "1000000", + redemptionDenom: "inj", + requestedAt: 1641772800, + disbursedAmount: "0", + disbursedDenom: "", + disbursedAt: 0, + }, + ], + }, + }, + }, +]; + +export const getSpotOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Query spot orders for market ID 'market_id1', 'market_id2', subaccount ID 'subaccount_id', order side 'buy', non-conditional, with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot orders retrieved successfully.", + action: "GET_SPOT_ORDERS", + content: { + orders: [ + { + orderHash: "0x...", + orderSide: "buy", + marketId: "market_id", + subaccountId: "subaccount_id", + price: "25000.5", + quantity: "1.5", + unfilledQuantity: "0.5", + triggerPrice: "0", + feeRecipient: "inj1...", + state: "booked", + createdAt: 1641859200, + updatedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getDerivativeOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Query derivative orders for market IDs 'market_id1' and 'market_id2', subaccount ID 'subaccount_id', order side 'buy', non-conditional, with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative orders retrieved successfully.", + action: "GET_DERIVATIVE_ORDERS", + content: { + orders: [ + { + orderHash: "0x...", + orderSide: "buy", + marketId: "market_id", + subaccountId: "subaccount_id", + margin: "1000", + price: "25000.5", + quantity: "1.5", + unfilledQuantity: "0.5", + triggerPrice: "0", + feeRecipient: "inj1...", + state: "booked", + createdAt: 1641859200, + updatedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getHistoricalTradesExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch historical trades for market IDs 'market_id1' and 'market_id2', subaccount ID 'subaccount_id', between start time 1641859200 and end time 1641945600, direction 'buy', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Historical trades retrieved successfully.", + action: "GET_HISTORICAL_TRADES", + content: { + trades: [ + { + orderHash: "0x...", + subaccountId: "subaccount_id", + marketId: "market_id", + tradeId: "trade_id", + executedAt: 1641859200, + tradeExecutionType: "limit", + tradeDirection: "buy", + executionPrice: "25000.5", + executionQuantity: "1.5", + fee: "0.5", + feeRecipient: "inj1...", + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getFundingRatesExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch funding rates for market ID 'market_id' with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Funding rates retrieved successfully.", + action: "GET_FUNDING_RATES", + content: { + fundingRates: [ + { + marketId: "market_id", + rate: "0.0001", + timestamp: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const msgDepositExample = [ + { + user: "{{user1}}", + content: { + text: "Deposit 1,000,000 INJ to subaccount '0x...' from address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Deposit successful.", + action: "MSG_DEPOSIT", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgWithdrawExample = [ + { + user: "{{user1}}", + content: { + text: "Withdraw 1,000,000 INJ from subaccount '0x...' to address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Withdrawal successful.", + action: "MSG_WITHDRAW", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCreateSpotMarketOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a spot market order to BUY 0.5 INJ at price 25000.5 for subaccount '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot market order created successfully.", + action: "MSG_CREATE_SPOT_MARKET_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const msgCreateDerivativeMarketOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a derivative market order to BUY 1.5 BTC/USDT PERP at price 25000.5 with margin 1000 for subaccount '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative market order created successfully.", + action: "MSG_CREATE_DERIVATIVE_MARKET_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const msgBatchCancelOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Batch cancel spot and derivative orders for subaccount '0x...' with order hashes ['0x...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Batch orders canceled successfully.", + action: "MSG_BATCH_CANCEL_ORDERS", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgBatchUpdateOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Batch update spot and derivative orders for subaccount '0x...' with updated prices and quantities.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Batch orders updated successfully.", + action: "MSG_BATCH_UPDATE_ORDERS", + content: { + spotOrderHashes: ["0x..."], + derivativeOrderHashes: ["0x..."], + txHash: "0x...", + }, + }, + }, +]; + +export const msgAdminUpdateBinaryOptionsMarketExample = [ + { + user: "{{user1}}", + content: { + text: "Admin 'inj1...' updates binary options market '0x...' with settlement price 25000.5, expiry time 1641859200, and settlement time 1641945600.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options market updated successfully.", + action: "MSG_ADMIN_UPDATE_BINARY_OPTIONS_MARKET", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const getModuleStateExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch the current state of the exchange module.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Exchange module state retrieved successfully.", + action: "GET_MODULE_STATE", + content: { + moduleState: { + params: { + spotMarketInstantListingFee: { + amount: "100000000", + denom: "inj", + }, + derivativeMarketInstantListingFee: { + amount: "1000000000", + denom: "inj", + }, + defaultSpotMakerFeeRate: "0.001", + defaultSpotTakerFeeRate: "0.002", + defaultDerivativeMakerFeeRate: "0.001", + defaultDerivativeTakerFeeRate: "0.002", + defaultInitialMarginRatio: "0.05", + defaultMaintenanceMarginRatio: "0.02", + defaultFundingInterval: 3600, + fundingMultiple: 3600, + }, + spotMarkets: [], + derivativeMarkets: [], + spotOrderbooks: [], + derivativeOrderbooks: [], + balances: [], + positions: [], + }, + }, + }, + }, +]; + +export const getFeeDiscountScheduleExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the fee discount schedule.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Fee discount schedule retrieved successfully.", + action: "GET_FEE_DISCOUNT_SCHEDULE", + content: { + bucketCount: 10, + bucketDuration: 1209600, + quoteDenomsList: ["inj"], + tierInfosList: [ + { + makerDiscountRate: "0.001", + takerDiscountRate: "0.001", + stakedAmount: "10000000000", + volume: "100000000", + }, + ], + disqualifiedMarketIdsList: [], + }, + }, + }, +]; + +export const getFeeDiscountAccountInfoExample = [ + { + user: "{{user1}}", + content: { + text: "Get fee discount account info for address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Fee discount account info retrieved successfully.", + action: "GET_FEE_DISCOUNT_ACCOUNT_INFO", + content: { + tierLevel: 1, + accountInfo: { + makerDiscountRate: "0.001", + takerDiscountRate: "0.001", + stakedAmount: "10000000000", + volume: "100000000", + }, + accountTtl: { + tier: 1, + ttlTimestamp: 1641945600, + }, + }, + }, + }, +]; + +export const getModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch module parameters information.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Module parameters retrieved successfully.", + action: "GET_MODULE_PARAMS", + content: { + spotMarketInstantListingFee: { + amount: "100000000", + denom: "inj", + }, + derivativeMarketInstantListingFee: { + amount: "1000000000", + denom: "inj", + }, + defaultSpotMakerFeeRate: "0.001", + defaultSpotTakerFeeRate: "0.002", + defaultDerivativeMakerFeeRate: "0.001", + defaultDerivativeTakerFeeRate: "0.002", + defaultInitialMarginRatio: "0.05", + defaultMaintenanceMarginRatio: "0.02", + defaultFundingInterval: 3600, + fundingMultiple: 3600, + relayerFeeShareRate: "0.4", + exchangeModuleAdmin: "inj1...", + }, + }, + }, +]; + +export const getTradingRewardsCampaignExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve current trading rewards campaign information.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Trading rewards campaign information retrieved successfully.", + action: "GET_TRADING_REWARDS_CAMPAIGN", + content: { + tradingRewardCampaignInfo: { + campaignDurationSeconds: 604800, + quoteDenomsList: ["inj"], + tradingRewardBoostInfo: { + boostedSpotMarketIdsList: [], + spotMarketMultipliersList: [], + boostedDerivativeMarketIdsList: [], + derivativeMarketMultipliersList: [], + }, + disqualifiedMarketIdsList: [], + }, + tradingRewardPoolCampaignScheduleList: [ + { + startTimestamp: 1641859200, + maxCampaignRewardsList: [ + { + amount: "1000000000", + denom: "inj", + }, + ], + }, + ], + totalTradeRewardPoints: "1000000", + pendingTradingRewardPoolCampaignScheduleList: [], + pendingTotalTradeRewardPointsList: [], + }, + }, + }, +]; + +export const getTradeRewardPointsExample = [ + { + user: "{{user1}}", + content: { + text: "Get trade reward points for addresses ['inj1...', 'inj2...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Trade reward points retrieved successfully.", + action: "GET_TRADE_REWARD_POINTS", + content: { + rewardPoints: ["100", "200"], + }, + }, + }, +]; + +export const getPendingTradeRewardPointsExample = [ + { + user: "{{user1}}", + content: { + text: "Get pending trade reward points for addresses ['inj1...', 'inj2...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Pending trade reward points retrieved successfully.", + action: "GET_PENDING_TRADE_REWARD_POINTS", + content: { + rewardPoints: ["100", "200"], + }, + }, + }, +]; + +export const getBinaryOptionsMarketsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all active binary options markets with quote denom 'usdt'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options markets retrieved successfully.", + action: "GET_BINARY_OPTIONS_MARKETS", + content: { + markets: [ + { + marketId: "0x...", + marketStatus: "active", + ticker: "BTC>25000-240630", + oracleSymbol: "BTC", + oracleProvider: "band", + oracleScaleFactor: 6, + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + expirationTimestamp: 1719705600, + settlementTimestamp: 1719792000, + serviceProviderFee: "0.4", + minPriceTickSize: 0.01, + minQuantityTickSize: 0.001, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getBinaryOptionsMarketExample = [ + { + user: "{{user1}}", + content: { + text: "Lookup binary options market with market ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options market retrieved successfully.", + action: "GET_BINARY_OPTIONS_MARKET", + content: { + market: { + marketId: "0x...", + marketStatus: "active", + ticker: "BTC>25000-240630", + oracleSymbol: "BTC", + oracleProvider: "band", + oracleScaleFactor: 6, + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + expirationTimestamp: 1719705600, + settlementTimestamp: 1719792000, + serviceProviderFee: "0.4", + minPriceTickSize: 0.01, + minQuantityTickSize: 0.001, + }, + }, + }, + }, +]; + +export const msgCreateBinaryOptionsMarketExample = [ + { + user: "{{user1}}", + content: { + text: "Create a new binary options market with ticker 'BTC/USD', oracle 'band', expiry time 1641945600, settlement time 1641945600, admin 'inj1...', quote denom 'inj', min price tick size '0.000001', and min quantity tick size '0.000001'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options market created successfully.", + action: "MSG_CREATE_BINARY_OPTIONS_MARKET", + content: { + marketId: "0x...", + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const getSubaccountTradeNonceExample = [ + { + user: "{{user1}}", + content: { + text: "Get trade nonce for subaccount ID 'subaccount_id'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Subaccount trade nonce retrieved successfully.", + action: "GET_SUBACCOUNT_TRADE_NONCE", + content: { + nonce: 5, + }, + }, + }, +]; + +export const getPositionsV2Example = [ + { + user: "{{user1}}", + content: { + text: "Query positions V2 for account 'inj1...', market ID 'market_id', subaccount ID 'subaccount_id', direction 'long' with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Positions V2 retrieved successfully.", + action: "GET_POSITIONS_V2", + content: { + positions: [ + { + marketId: "market_id", + subaccountId: "subaccount_id", + direction: "long", + quantity: "1.5", + entryPrice: "25000.5", + margin: "1000", + liquidationPrice: "24000.0", + markPrice: "25100.0", + ticker: "BTC/USDT", + aggregateReduceOnlyQuantity: "0", + updatedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getHistoricalBalanceExample = [ + { + user: "{{user1}}", + content: { + text: "Get historical balance for account 'inj1...' with daily resolution.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Historical balance data retrieved successfully.", + action: "GET_HISTORICAL_BALANCE", + content: { + t: [1641859200, 1641945600], + v: [1000.5, 1100.75], + }, + }, + }, +]; + +export const getHistoricalRpnlExample = [ + { + user: "{{user1}}", + content: { + text: "Get historical RPNL for account 'inj1...' with daily resolution.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Historical RPNL data retrieved successfully.", + action: "GET_HISTORICAL_RPNL", + content: { + t: [1641859200, 1641945600], + v: [1000.5, 1100.75], + }, + }, + }, +]; + +export const getHistoricalVolumesExample = [ + { + user: "{{user1}}", + content: { + text: "Get historical volumes for account 'inj1...' with daily resolution.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Historical volumes data retrieved successfully.", + action: "GET_HISTORICAL_VOLUMES", + content: { + t: [1641859200, 1641945600], + v: [50000.5, 75000.25], + }, + }, + }, +]; + +export const getDenomHoldersExample = [ + { + user: "{{user1}}", + content: { + text: "Get holders of denom 'inj' with token address '0x...' and limit 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denom holders retrieved successfully.", + action: "GET_DENOM_HOLDERS", + content: { + holders: [ + { + accountAddress: "inj1...", + balance: "1000000", + }, + ], + next: ["next_key"], + }, + }, + }, +]; + +export const getGridStrategiesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve grid strategies with limit 100, state 'active', market ID 'market_id', market type 'uniform', subaccount ID 'subaccount_id', and account address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Grid strategies retrieved successfully.", + action: "GET_GRID_STRATEGIES", + content: { + strategies: [ + { + id: "strategy_id", + accountAddress: "inj1...", + subaccountId: "subaccount_id", + marketId: "market_id", + strategyType: "uniform", + tickSize: "0.1", + minPrice: "24000.0", + maxPrice: "26000.0", + gridCount: 20, + state: "active", + totalVolume: "100000.5", + currentPnL: "1000.25", + createdAt: 1641859200, + updatedAt: 1641945600, + }, + ], + }, + }, + }, +]; + +export const msgInstantSpotMarketLaunchExample = [ + { + user: "{{user1}}", + content: { + text: "Instantly launch a spot market with ticker 'INJ/USDT', base denom 'inj', quote denom 'usdt', min price tick size '0.000001', and min quantity tick size '0.000001'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Instant spot market launched successfully.", + action: "MSG_INSTANT_SPOT_MARKET_LAUNCH", + content: { + marketId: "0x...", + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const getFundingPaymentsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch funding payments for market ID '0x...' and subaccount ID '0x...' with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Funding payments retrieved successfully.", + action: "GET_FUNDING_PAYMENTS", + content: { + fundingPayments: [ + { + marketId: "0x...", + subaccountId: "0x...", + amount: "100.5", + timestamp: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getPnlLeaderboardExample = [ + { + user: "{{user1}}", + content: { + text: "Get PnL leaderboard for the period from '2024-01-01' to '2024-01-31' with limit 100 and account filter 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "PnL leaderboard retrieved successfully.", + action: "GET_PNL_LEADERBOARD", + content: { + firstDate: "2024-01-01", + lastDate: "2024-01-31", + leaders: [ + { + account: "inj1...", + pnl: 100000.5, + volume: 1000000.0, + rank: 1, + }, + ], + accountRow: { + account: "inj1...", + pnl: 50000.25, + volume: 500000.0, + rank: 10, + }, + }, + }, + }, +]; + +export const getVolLeaderboardExample = [ + { + user: "{{user1}}", + content: { + text: "Get volume leaderboard for the period from '2024-01-01' to '2024-01-31' with limit 100 and account filter 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Volume leaderboard retrieved successfully.", + action: "GET_VOL_LEADERBOARD", + content: { + firstDate: "2024-01-01", + lastDate: "2024-01-31", + leaders: [ + { + account: "inj1...", + volume: 1000000.0, + rank: 1, + }, + ], + accountRow: { + account: "inj1...", + volume: 500000.0, + rank: 10, + }, + }, + }, + }, +]; + +export const getPnlLeaderboardFixedResolutionExample = [ + { + user: "{{user1}}", + content: { + text: "Get PnL leaderboard with daily resolution, limit 100, and account filter 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "PnL leaderboard with fixed resolution retrieved successfully.", + action: "GET_PNL_LEADERBOARD_FIXED_RESOLUTION", + content: { + firstDate: "2024-01-01", + lastDate: "2024-01-31", + leaders: [ + { + account: "inj1...", + pnl: 100000.5, + volume: 1000000.0, + rank: 1, + }, + ], + accountRow: { + account: "inj1...", + pnl: 50000.25, + volume: 500000.0, + rank: 10, + }, + }, + }, + }, +]; + +export const getVolLeaderboardFixedResolutionExample = [ + { + user: "{{user1}}", + content: { + text: "Get volume leaderboard with daily resolution, limit 100, and account filter 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Volume leaderboard with fixed resolution retrieved successfully.", + action: "GET_VOL_LEADERBOARD_FIXED_RESOLUTION", + content: { + firstDate: "2024-01-01", + lastDate: "2024-01-31", + leaders: [ + { + account: "inj1...", + volume: 1000000.0, + rank: 1, + }, + ], + accountRow: { + account: "inj1...", + volume: 500000.0, + rank: 10, + }, + }, + }, + }, +]; + +export const getAtomicSwapHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Get atomic swap history for address 'inj1...', contract address '0x...', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Atomic swap history retrieved successfully.", + action: "GET_ATOMIC_SWAP_HISTORY", + content: { + swapHistory: [ + { + sender: "inj1...", + route: "route_id", + sourceCoin: { + amount: "1000000", + denom: "inj", + }, + destinationCoin: { + amount: "900000", + denom: "usdt", + }, + fees: [ + { + amount: "1000", + denom: "inj", + }, + ], + contractAddress: "0x...", + indexBySender: 1, + indexBySenderContract: 1, + txHash: "0x...", + executedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getIsOptedOutOfRewardsExample = [ + { + user: "{{user1}}", + content: { + text: "Check if account 'inj1...' has opted out of rewards.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Opt-out status retrieved successfully.", + action: "GET_IS_OPTED_OUT_OF_REWARDS", + content: { + isOptedOut: true, + }, + }, + }, +]; + +export const getBinaryOptionsMarketsV2Example = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all binary options markets with quote denom 'usdt' and market status 'active' and 'paused'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options markets retrieved successfully.", + action: "GET_BINARY_OPTIONS_MARKETS_V2", + content: { + markets: [ + { + marketId: "0x...", + marketStatus: "active", + ticker: "BTC>25000-240630", + oracleSymbol: "BTC", + oracleProvider: "band", + oracleScaleFactor: 6, + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + expirationTimestamp: 1719705600, + settlementTimestamp: 1719792000, + serviceProviderFee: "0.4", + minPriceTickSize: 0.01, + minQuantityTickSize: 0.001, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getTradingRewardsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve trading rewards for account 'inj1...' and epoch 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Trading rewards retrieved successfully.", + action: "GET_TRADING_REWARDS", + content: { + rewards: [ + { + accountAddress: "inj1...", + rewards: [ + { + amount: "1000000", + denom: "inj", + }, + ], + distributedAt: 1641859200, + }, + ], + }, + }, + }, +]; + +export const getSubaccountOrderSummaryExample = [ + { + user: "{{user1}}", + content: { + text: "Get order summary for subaccount ID '0x...', market ID '0x...', and order direction 'buy'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Order summary retrieved successfully.", + action: "GET_SUBACCOUNT_ORDER_SUMMARY", + content: { + spotOrdersTotal: "10", + derivativeOrdersTotal: "5", + spotOrdersActiveTotal: "3", + derivativeOrdersActiveTotal: "2", + spotOrdersCancelledTotal: "5", + derivativeOrdersCancelledTotal: "2", + spotOrdersFilledTotal: "2", + derivativeOrdersFilledTotal: "1", + }, + }, + }, +]; + +export const getDerivativeMarketsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all derivative markets", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative markets retrieved successfully.", + action: "GET_DERIVATIVE_MARKETS", + content: { + markets: [ + { + marketId: "0x...", + marketStatus: "active", + ticker: "BTC/USDT PERP", + oracleBase: "BTC", + oracleQuote: "USDT", + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + serviceProviderFee: "0.4", + isPerpetual: true, + minPriceTickSize: 0.01, + minQuantityTickSize: 0.001, + }, + ], + }, + }, + }, +]; + +export const getSpotMarketsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all spot markets with base denom 'inj', quote denom 'usdt', market status 'active' and 'paused'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot markets retrieved successfully.", + action: "GET_SPOT_MARKETS", + content: { + markets: [ + { + marketId: "0x...", + marketStatus: "active", + ticker: "INJ/USDT", + baseDenom: "inj", + quoteDenom: "usdt", + makerFeeRate: "0.001", + takerFeeRate: "0.002", + serviceProviderFee: "0.4", + minPriceTickSize: 0.000001, + minQuantityTickSize: 0.000001, + }, + ], + }, + }, + }, +]; + +export const getSubaccountsListExample = [ + { + user: "{{user1}}", + content: { + text: "Get list of subaccounts for address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Subaccounts list retrieved successfully.", + action: "GET_SUBACCOUNTS_LIST", + content: { + subaccounts: ["0x..."], + }, + }, + }, +]; + +export const getSubaccountBalancesListExample = [ + { + user: "{{user1}}", + content: { + text: "Get balances for subaccount ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Subaccount balances retrieved successfully.", + action: "GET_SUBACCOUNT_BALANCES_LIST", + content: { + balances: [ + { + subaccountId: "0x...", + accountAddress: "inj1...", + denom: "inj", + deposit: { + totalBalance: "1000000", + availableBalance: "900000", + }, + }, + ], + }, + }, + }, +]; + +export const getDerivativeOrderbooksV2Example = [ + { + user: "{{user1}}", + content: { + text: "Get derivative orderbooks for market IDs ['0x...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative orderbooks retrieved successfully.", + action: "GET_DERIVATIVE_ORDERBOOKS_V2", + content: { + orderbooks: [ + { + marketId: "0x12...", + orderbook: { + sequence: "123", + buys: [ + { + price: "25000.5", + quantity: "1.5", + timestamp: 1641859200, + }, + ], + sells: [ + { + price: "25100.5", + quantity: "0.5", + timestamp: 1641859200, + }, + ], + }, + }, + { + marketId: "0x212...", + orderbook: { + sequence: "123", + buys: [ + { + price: "2500.5", + quantity: "1", + timestamp: 1641859201, + }, + ], + sells: [ + { + price: "2510.5", + quantity: "0.5", + timestamp: 1641859203, + }, + ], + }, + }, + ], + }, + }, + }, +]; + +export const getDerivativeOrderbookV2Example = [ + { + user: "{{user1}}", + content: { + text: "Get derivative orderbook for market ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative orderbooks retrieved successfully.", + action: "GET_DERIVATIVE_ORDERBOOK_V2", + content: { + orderbook: [ + { + marketId: "0x...", + orderbook: { + sequence: "123", + buys: [ + { + price: "25000.5", + quantity: "1.5", + timestamp: 1641859200, + }, + ], + sells: [ + { + price: "25100.5", + quantity: "0.5", + timestamp: 1641859200, + }, + ], + }, + }, + ], + }, + }, + }, +]; + +export const getSpotOrderbooksV2Example = [ + { + user: "{{user1}}", + content: { + text: "Get orderbooks for market IDs ['0x...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot orderbooks retrieved successfully.", + action: "GET_SPOT_ORDERBOOKS_V2", + content: { + orderbooks: [ + { + marketId: "0x...", + orderbook: { + sequence: "123", + buys: [ + { + price: "25000.5", + quantity: "1.5", + timestamp: 1641859200, + }, + ], + sells: [ + { + price: "25100.5", + quantity: "0.5", + timestamp: 1641859200, + }, + ], + }, + }, + ], + }, + }, + }, +]; + +export const getSpotOrderbookV2Example = [ + { + user: "{{user1}}", + content: { + text: "Get spot orderbook for market ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot orderbook retrieved successfully.", + action: "GET_SPOT_ORDERBOOK_V2", + content: { + orderbook: [ + { + marketId: "0x...", + orderbook: { + sequence: "123", + buys: [ + { + price: "25000.5", + quantity: "1.5", + timestamp: 1641859200, + }, + ], + sells: [ + { + price: "25100.5", + quantity: "0.5", + timestamp: 1641859200, + }, + ], + }, + }, + ], + }, + }, + }, +]; + +export const msgBatchCancelBinaryOptionsOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Batch cancel binary options orders for injective address 'inj1...' with orders [{'marketId': '0x...', 'subaccountId': '0x...', 'orderHash': '0x...'}].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Batch binary options orders canceled successfully.", + action: "MSG_BATCH_CANCEL_BINARY_OPTIONS_ORDERS", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCancelBinaryOptionsOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Cancel binary options order with order hash '0x...' for injective address 'inj1...', market ID '0x...', and subaccount ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options order canceled successfully.", + action: "MSG_CANCEL_BINARY_OPTIONS_ORDER", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCreateBinaryOptionsLimitOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a binary options limit order to BUY 1.5 BTC>25000-240630 at price 25000.5 for subaccount '0x...' with fee recipient 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options limit order created successfully.", + action: "MSG_CREATE_BINARY_OPTIONS_LIMIT_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const msgLiquidatePositionExample = [ + { + user: "{{user1}}", + content: { + text: "Liquidate position for subaccount '0x...' in market '0x...' with order { marketId: '0x...', orderType: 'SELL', price: '24000.0', quantity: '1.5', margin: '1000' }.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Position liquidated successfully.", + action: "MSG_LIQUIDATE_POSITION", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgReclaimLockedFundsExample = [ + { + user: "{{user1}}", + content: { + text: "Reclaim locked funds for injective address 'inj1...' with locked account public key '0x...' and signature '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Locked funds reclaimed successfully.", + action: "MSG_RECLAIM_LOCKED_FUNDS", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgSignDataExample = [ + { + user: "{{user1}}", + content: { + text: "Sign data '0x...' for injective address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Data signed successfully.", + action: "MSG_SIGN_DATA", + content: { + signature: "0x...", + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCreateSpotLimitOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a spot limit order to BUY 1.5 INJ at price 25000.5 for subaccount '0x...' with fee recipient 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot limit order created successfully.", + action: "MSG_CREATE_SPOT_LIMIT_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const msgCreateDerivativeLimitOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a derivative limit order to BUY 1.5 BTC/USDT PERP at price 25000.5 with margin 1000 for subaccount '0x...' and fee recipient 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative limit order created successfully.", + action: "MSG_CREATE_DERIVATIVE_LIMIT_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const msgBatchCancelSpotOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Batch cancel spot orders for injective address 'inj1...' with orders [{'marketId': '0x...', 'subaccountId': '0x...', 'orderHash': '0x...'}].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Batch spot orders canceled successfully.", + action: "MSG_BATCH_CANCEL_SPOT_ORDERS", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgBatchCancelDerivativeOrdersExample = [ + { + user: "{{user1}}", + content: { + text: "Batch cancel derivative orders for injective address 'inj1...' with orders [{'marketId': '0x...', 'subaccountId': '0x...', 'orderHash': '0x...'}].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Batch derivative orders canceled successfully.", + action: "MSG_BATCH_CANCEL_DERIVATIVE_ORDERS", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCancelSpotOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Cancel spot order with order hash '0x...' for injective address 'inj1...', market ID '0x...', and subaccount ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot order canceled successfully.", + action: "MSG_CANCEL_SPOT_ORDER", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const msgCancelDerivativeOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Cancel derivative order with order hash '0x...' for injective address 'inj1...', market ID '0x...', and subaccount ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative order canceled successfully.", + action: "MSG_CANCEL_DERIVATIVE_ORDER", + content: { + success: true, + txHash: "0x...", + }, + }, + }, +]; + +export const getSpotSubaccountOrdersListExample = [ + { + user: "{{user1}}", + content: { + text: "Get spot orders list for subaccount ID '0x...', market ID '0x...', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot subaccount orders list retrieved successfully.", + action: "GET_SPOT_SUBACCOUNT_ORDERS_LIST", + content: { + orders: [ + { + orderHash: "0x...", + orderSide: "buy", + marketId: "0x...", + subaccountId: "0x...", + price: "25000.5", + quantity: "1.5", + unfilledQuantity: "0.5", + triggerPrice: "0", + feeRecipient: "inj1...", + state: "booked", + createdAt: 1641859200, + updatedAt: 1641859200, + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getSpotSubaccountTradesListExample = [ + { + user: "{{user1}}", + content: { + text: "Get spot trades list for subaccount ID '0x...', market ID '0x...', direction 'buy', execution type 'market', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot subaccount trades list retrieved successfully.", + action: "GET_SPOT_SUBACCOUNT_TRADES_LIST", + content: { + trades: [ + { + orderHash: "0x...", + subaccountId: "0x...", + marketId: "0x...", + tradeId: "trade_id", + executedAt: 1641859200, + executionSide: "taker", + tradeExecutionType: "market", + tradeDirection: "buy", + price: "25000.5", + quantity: "1.5", + fee: "25.0", + feeRecipient: "inj1...", + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const msgCreateBinaryOptionsMarketOrderExample = [ + { + user: "{{user1}}", + content: { + text: "Create a binary options market order to BUY 1.5 BTC>25000-240630 at price 25000.5 for subaccount '0x...' with fee recipient 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Binary options market order created successfully.", + action: "MSG_CREATE_BINARY_OPTIONS_MARKET_ORDER", + content: { + orderHash: "0x...", + txHash: "0x...", + }, + }, + }, +]; + +export const getSpotOrderHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Get spot order history for subaccount ID '0x...', market ID '0x...', market IDs ['0x...'], order types ['limit', 'market'], execution types ['limit', 'market'], direction 'buy', is conditional false, state 'booked', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot order history retrieved successfully.", + action: "GET_SPOT_ORDER_HISTORY", + content: { + orderHistory: [ + { + orderHash: "0x...", + marketId: "0x...", + active: true, + subaccountId: "0x...", + executionType: "limit", + orderType: "buy", + price: "25000.5", + triggerPrice: "0", + quantity: "1.5", + filledQuantity: "0.5", + state: "booked", + createdAt: 1641859200, + updatedAt: 1641859200, + direction: "buy", + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getSpotTradesExample = [ + { + user: "{{user1}}", + content: { + text: "Get spot trades for market IDs ['0x...'], subaccount ID '0x...', execution side 'taker', direction 'buy', execution types ['market', 'limit'], with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot trades retrieved successfully.", + action: "GET_SPOT_TRADES", + content: { + trades: [ + { + orderHash: "0x...", + subaccountId: "0x...", + marketId: "0x...", + tradeId: "trade_id", + executedAt: 1641859200, + executionSide: "taker", + tradeExecutionType: "market", + tradeDirection: "buy", + price: "25000.5", + quantity: "1.5", + fee: "25.0", + feeRecipient: "inj1...", + }, + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getAccountPortfolioBalancesExample = [ + { + user: "{{user1}}", + content: { + text: "Get account portfolio balances for address 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Account portfolio balances retrieved successfully.", + action: "GET_ACCOUNT_PORTFOLIO_BALANCES", + content: { + balances: [ + { + denom: "inj", + totalBalance: "1000000", + availableBalance: "900000", + lockedBalance: "100000", + }, + ], + subaccountBalances: [ + { + subaccountId: "0x...", + denom: "inj", + deposit: { + totalBalance: "1000000", + availableBalance: "900000", + }, + }, + ], + }, + }, + }, +]; + +export const getRewardsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve rewards for account 'inj1...' and epoch 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Rewards retrieved successfully.", + action: "GET_REWARDS", + content: { + rewards: [ + { + accountAddress: "inj1...", + rewards: [ + { + amount: "1000000", + denom: "inj", + }, + ], + distributedAt: 1641859200, + }, + ], + }, + }, + }, +]; + +export const getDerivativeOrderHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve derivative order history for subaccount ID '0x...', market ID '0x...', multiple market IDs ['0x...', '0x...'], order types ['limit', 'market'], execution types ['limit', 'market'], direction 'buy', non-conditional, state 'booked', with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative order history retrieved successfully.", + action: "GET_DERIVATIVE_ORDER_HISTORY", + content: { + orderHistory: [ + { + orderHash: "0xabc123...", + marketId: "0xmarket1...", + isActive: true, + subaccountId: "0xsubaccount1...", + executionType: "limit", + orderType: "buy", + price: "25000.5", + triggerPrice: "0", + quantity: "1.5", + filledQuantity: "0.5", + state: "booked", + createdAt: 1641859200, + updatedAt: 1641859200, + direction: "buy", + isConditional: false, + triggerAt: 0, + margin: "1000", + }, + // ...additional order history entries + ], + pagination: { + total: 50, + }, + }, + }, + }, +]; + +export const getDerivativeTradesExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch derivative trades for market ID '0x...', multiple market IDs ['0x...', '0x...'], subaccount ID '0x...', execution side 'taker', direction 'buy', execution types ['market', 'limit'], with pagination from 1 to 100 and limit 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Derivative trades retrieved successfully.", + action: "GET_DERIVATIVE_TRADES", + content: { + trades: [ + { + orderHash: "0xabc123...", + subaccountId: "0xsubaccount1...", + marketId: "0xmarket1...", + tradeId: "trade_001", + executedAt: 1641859200, + tradeExecutionType: "market", + executionSide: "taker", + tradeDirection: "buy", + executionPrice: "25000.5", + executionQuantity: "1.5", + executionMargin: "1000", + fee: "25.0", + feeRecipient: "inj1...", + isLiquidation: false, + payout: "37525.75", + }, + ], + pagination: { + total: 30, + }, + }, + }, + }, +]; + +export const getOrderStatesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve order states for subaccount ID '0x...', market ID '0x...', with order hashes ['0xorder1...', '0xorder2...'].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Order states retrieved successfully.", + action: "GET_ORDER_STATES", + content: { + orders: [ + { + orderHash: "0xorder1...", + state: "filled", + filledQuantity: "1.0", + remainingQuantity: "0.0", + filledAt: 1641859200, + }, + { + orderHash: "0xorder2...", + state: "cancelled", + filledQuantity: "0.0", + remainingQuantity: "2.0", + filledAt: 0, + }, + ], + }, + }, + }, +]; + +export const msgIncreasePositionMarginExample = [ + { + user: "{{user1}}", + content: { + text: "Increase position margin by 1,000 INJ for subaccount '0x...', market ID '0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Position margin increased successfully.", + action: "MSG_INCREASE_POSITION_MARGIN", + content: { + success: true, + txHash: "0xdef456...", + }, + }, + }, +]; + +export const msgRewardsOptOutExample = [ + { + user: "{{user1}}", + content: { + text: "Opt out of trading rewards for account 'inj1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully opted out of rewards.", + action: "MSG_REWARDS_OPT_OUT", + content: { + success: true, + txHash: "0xghi789...", + }, + }, + }, +]; + +export const msgExternalTransferExample = [ + { + user: "{{user1}}", + content: { + text: "Transfer 1,000,000 INJ from subaccount '0xsource...' to subaccount '0xdestination...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "External transfer completed successfully.", + action: "MSG_EXTERNAL_TRANSFER", + content: { + success: true, + txHash: "0xjkl012...", + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/explorer.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/explorer.ts new file mode 100644 index 000000000000..ba205aa66747 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/explorer.ts @@ -0,0 +1,359 @@ +export const getTxByHashExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve transaction details for hash 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Transaction details retrieved successfully.", + action: "GET_TX_BY_HASH", + content: { + id: "tx_id_12345", + blockNumber: 12345, + blockTimestamp: "2024-01-11T12:00:00Z", + hash: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + memo: "Payment for services", + code: 0, + data: "base64EncodedDataHere", + info: "Transaction executed successfully", + gasWanted: 100000, + gasUsed: 80000, + gasFee: { + amounts: [ + { + amount: "1000000", + denom: "inj", + }, + ], + gasLimit: 100000, + payer: "inj1payeraddress...", + granter: "inj1granteraddress...", + }, + txType: "MsgSend", + signatures: [ + { + pubkey: "cosmospub1addwnpepq...", + address: "inj1senderaddress...", + signature: "signatureDataHere", + sequence: 5, + }, + ], + messages: [ + { + key: "recipient", + value: "inj1recipientaddress...", + }, + ], + }, + }, + }, +]; + +export const getAccountTxExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the latest 10 transactions for account address inj1accountaddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Account transactions retrieved successfully.", + action: "GET_ACCOUNT_TX", + content: { + txs: [ + { + id: "tx_id_12345", + blockNumber: 12345, + blockTimestamp: "2024-01-11T12:00:00Z", + hash: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + txType: "MsgSend", + }, + // ...additional transactions + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getValidatorExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve details for validator address injvaloper1validatoraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator details retrieved successfully.", + action: "GET_EXPLORER_VALIDATOR", + content: { + id: "validator_id_123", + moniker: "ValidatorMoniker", + operatorAddress: "injvaloper1validatoraddress...", + consensusAddress: "injvalcons1validatorconsensus...", + jailed: false, + status: 1, + tokens: "1000000000", + delegatorShares: "1000000000", + description: { + moniker: "ValidatorMoniker", + identity: "validatorIdentity", + website: "https://validatorwebsite.com", + securityContact: "security@validator.com", + details: "Detailed description of the validator.", + }, + uptimePercentage: 99.9, + commissionRate: "0.1", + commissionMaxRate: "0.2", + commissionMaxChangeRate: "0.01", + }, + }, + }, +]; + +export const getValidatorUptimeExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve uptime details for validator address injvaloper1validatoraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator uptime details retrieved successfully.", + action: "GET_VALIDATOR_UPTIME", + content: [ + { + blockNumber: 12345, + status: "signed", + }, + { + blockNumber: 12346, + status: "missed", + }, + // ...additional uptime records + ], + }, + }, +]; + +export const getPeggyDepositTxsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve Peggy deposit transactions for sender eth1senderaddress and receiver inj1receiveraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Peggy deposit transactions retrieved successfully.", + action: "GET_PEGGY_DEPOSIT_TXS", + content: [ + { + sender: "eth1senderaddress", + receiver: "inj1receiveraddress", + eventNonce: 123, + eventHeight: 12345, + amount: "1000000000", + denom: "peggy0xabcdef", + orchestratorAddress: "inj1orchestratoraddress", + state: "completed", + txHashesList: [ + "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + ], + }, + // ...additional deposit transactions + ], + }, + }, +]; + +export const getPeggyWithdrawalTxsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve Peggy withdrawal transactions for sender inj1senderaddress and receiver eth1receiveraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Peggy withdrawal transactions retrieved successfully.", + action: "GET_PEGGY_WITHDRAWAL_TXS", + content: [ + { + sender: "inj1senderaddress", + receiver: "eth1receiveraddress", + amount: "1000000000", + denom: "peggy0xabcdef", + bridgeFee: "1000000", + outgoingTxId: 123, + batchTimeout: 100, + batchNonce: 5, + state: "completed", + txHashesList: [ + "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + ], + }, + // ...additional withdrawal transactions + ], + }, + }, +]; + +export const getBlocksExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the latest 10 blocks before block number 12345 and after block number 12300...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Blocks retrieved successfully.", + action: "GET_BLOCKS", + content: { + blocks: [ + { + height: 12345, + proposer: "injvaloper1proposeraddress...", + moniker: "ProposerMoniker", + blockHash: "0xblockhash1234567890abcdef...", + parentHash: "0xparenthash1234567890abcdef...", + numPreCommits: 150, + numTxs: 10, + timestamp: "2024-01-11T12:00:00Z", + }, + // ...additional blocks + ], + }, + }, + }, +]; + +export const getBlockExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve details for block with height 12345.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Block details retrieved successfully.", + action: "GET_BLOCK", + content: { + block: { + height: 12345, + proposer: "injvaloper1proposeraddress...", + moniker: "ProposerMoniker", + blockHash: "0xblockhash1234567890abcdef...", + parentHash: "0xparenthash1234567890abcdef...", + numPreCommits: 150, + numTxs: 10, + timestamp: "2024-01-11T12:00:00Z", + }, + }, + }, + }, +]; + +export const getTxsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve transactions of type MsgSend from the bank module between block numbers 12300 and 12345, limited to 10 results.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Transactions retrieved successfully.", + action: "GET_TXS", + content: { + transactions: [ + { + id: "tx_id_12345", + blockNumber: 12345, + blockTimestamp: "2024-01-11T12:00:00Z", + hash: "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + txType: "MsgSend", + }, + // ...additional transactions + ], + }, + }, + }, +]; + +export const getIBCTransferTxsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IBC transfer transactions sent by inj1senderaddress to cosmos1receiveraddress through source channel channel-1 and destination channel channel-0, limited to 10 results.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IBC transfer transactions retrieved successfully.", + action: "GET_IBC_TRANSFER_TXS", + content: [ + { + sender: "inj1senderaddress", + receiver: "cosmos1receiveraddress", + sourcePort: "transfer", + sourceChannel: "channel-1", + destinationPort: "transfer", + destinationChannel: "channel-0", + amount: "1000000000", + denom: "inj", + timeoutHeight: "1-1000000", + timeoutTimestamp: 1641945600, + state: "completed", + }, + // ...additional IBC transfer transactions + ], + }, + }, +]; + +export const getExplorerStatsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the latest explorer statistics.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Explorer statistics retrieved successfully.", + action: "GET_EXPLORER_STATS", + content: { + assets: "1000", + txsTotal: "1000000", + addresses: "50000", + injSupply: "100000000", + txsInPast30Days: "100000", + txsInPast24Hours: "10000", + blockCountInPast24Hours: "5000", + txsPerSecondInPast24Hours: "0.5", + txsPerSecondInPast100Blocks: "0.8", + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/gov.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/gov.ts new file mode 100644 index 000000000000..a0c93c275ac1 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/gov.ts @@ -0,0 +1,373 @@ +export const getGovernanceModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve governance module parameters, including votingParams, tallyParams, and depositParams.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Governance module parameters retrieved successfully.", + action: "GET_GOVERNANCE_MODULE_PARAMS", + content: { + votingParams: { + votingPeriod: 604800, + }, + tallyParams: { + quorum: "0.334", + threshold: "0.5", + vetoThreshold: "0.334", + }, + depositParams: { + minDepositList: [ + { + denom: "inj", + amount: "100000000000000000000", + }, + ], + maxDepositPeriod: 1209600, + }, + }, + }, + }, +]; + +export const getProposalsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve proposals with status 2 and paginate the results with a limit of 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Proposals retrieved successfully.", + action: "GET_PROPOSALS", + content: { + proposals: [ + { + proposalId: 1, + title: "Example Proposal", + summary: "This is an example proposal", + proposer: "inj1proposeraddress...", + status: 2, + finalTallyResult: { + yesCount: "100", + abstainCount: "10", + noCount: "5", + noWithVetoCount: "2", + }, + submitTime: 1632150400, + depositEndTime: 1633360000, + votingStartTime: 1633360000, + votingEndTime: 1633964800, + totalDeposits: [ + { + denom: "inj", + amount: "100000000000000000000", + }, + ], + }, + // ...additional proposals + ], + pagination: { + nextKey: "", + total: 100, + }, + }, + }, + }, +]; + +export const getProposalExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve details for proposal with ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Proposal details retrieved successfully.", + action: "GET_PROPOSAL", + content: { + proposalId: 1, + title: "Example Proposal", + summary: "This is an example proposal", + proposer: "inj1proposeraddress...", + status: 2, + finalTallyResult: { + yesCount: "100", + abstainCount: "10", + noCount: "5", + noWithVetoCount: "2", + }, + submitTime: 1632150400, + depositEndTime: 1633360000, + votingStartTime: 1633360000, + votingEndTime: 1633964800, + totalDeposits: [ + { + denom: "inj", + amount: "100000000000000000000", + }, + ], + }, + }, + }, +]; + +export const getProposalDepositsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve deposits for proposal ID 1 with pagination parameters.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Proposal deposits retrieved successfully.", + action: "GET_PROPOSAL_DEPOSITS", + content: { + deposits: [ + { + depositor: "inj1depositoraddress...", + amounts: [ + { + denom: "inj", + amount: "100000000000000000000", + }, + ], + }, + // ...additional deposits + ], + pagination: { + nextKey: "", + total: 10, + }, + }, + }, + }, +]; + +export const getProposalVotesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve votes for proposal ID 1 with pagination parameters.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Proposal votes retrieved successfully.", + action: "GET_PROPOSAL_VOTES", + content: { + votes: [ + { + proposalId: 1, + voter: "inj1voteraddress...", + options: [ + { + option: 1, + weight: "1.0", + }, + ], + metadata: "", + }, + // ...additional votes + ], + pagination: { + nextKey: "", + total: 100, + }, + }, + }, + }, +]; + +export const getProposalTallyExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve tally results for proposal ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Proposal tally retrieved successfully.", + action: "GET_PROPOSAL_TALLY", + content: { + yesCount: "100", + abstainCount: "10", + noCount: "5", + noWithVetoCount: "2", + }, + }, + }, +]; + +export const msgSubmitProposalExpiryFuturesMarketLaunchExample = [ + { + user: "{{user1}}", + content: { + text: "Submit an expiry futures market launch proposal titled 'Launch BTC-USDT Quarterly Futures'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Expiry futures market launch proposal submitted successfully.", + action: "MSG_SUBMIT_PROPOSAL_EXPIRY_FUTURES_MARKET_LAUNCH", + content: { + txHash: "0xsubmitproposalexpiryfutureshash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSubmitProposalSpotMarketLaunchExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a spot market launch proposal titled 'Launch INJ-USDT Spot Market'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot market launch proposal submitted successfully.", + action: "MSG_SUBMIT_PROPOSAL_SPOT_MARKET_LAUNCH", + content: { + txHash: "0xsubmitproposalspotmarkethash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSubmitProposalPerpetualMarketLaunchExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a perpetual market launch proposal titled 'Launch ETH-USDT Perpetual'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Perpetual market launch proposal submitted successfully.", + action: "MSG_SUBMIT_PROPOSAL_PERPETUAL_MARKET_LAUNCH", + content: { + txHash: "0xsubmitproposalperpetualmarkethash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgVoteExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a vote for proposal ID 1 with option 1 and weight 1.0.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vote submitted successfully.", + action: "MSG_VOTE", + content: { + txHash: "0xvotehash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSubmitTextProposalExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a text proposal titled 'Community Pool Spend'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Text proposal submitted successfully.", + action: "MSG_SUBMIT_TEXT_PROPOSAL", + content: { + txHash: "0xsubmittextproposalhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSubmitProposalSpotMarketParamUpdateExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a spot market parameter update proposal titled 'Update INJ-USDT Spot Market Parameters'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Spot market parameter update proposal submitted successfully.", + action: "MSG_SUBMIT_PROPOSAL_SPOT_MARKET_PARAM_UPDATE", + content: { + txHash: "0xsubmitproposalspotmarketparamupdatehash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSubmitGenericProposalExample = [ + { + user: "{{user1}}", + content: { + text: "Submit a generic governance proposal titled 'Generic Proposal'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Generic governance proposal submitted successfully.", + action: "MSG_SUBMIT_GENERIC_PROPOSAL", + content: { + txHash: "0xsubmitgenericproposalhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgGovDepositExample = [ + { + user: "{{user1}}", + content: { + text: "Deposit 100 INJ to proposal ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Deposit to proposal submitted successfully.", + action: "MSG_GOV_DEPOSIT", + content: { + txHash: "0xgovdeposithash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/ibc.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/ibc.ts new file mode 100644 index 000000000000..5c66323dbcd5 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/ibc.ts @@ -0,0 +1,102 @@ +export const getDenomTraceExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the denomination trace for hash transfer/channel-0/uatom.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination trace retrieved successfully.", + action: "GET_DENOM_TRACE", + content: { + denomTrace: { + path: "transfer/channel-0", + baseDenom: "uatom", + }, + }, + }, + }, +]; + +export const getDenomsTraceExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all denomination traces with a limit of 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination traces retrieved successfully.", + action: "GET_DENOMS_TRACE", + content: { + denomsTrace: [ + { + path: "transfer/channel-0", + baseDenom: "uatom", + }, + { + path: "transfer/channel-1", + baseDenom: "uosmo", + }, + // ...additional denom traces + ], + }, + }, + }, +]; + +export const getIBCTransferTxsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IBC transfer transactions sent by inj1senderaddress... to cosmos1receiveraddress... through source channel channel-0 and destination channel channel-1, limited to 10 results.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IBC transfer transactions retrieved successfully.", + action: "GET_IBC_TRANSFER_TXS", + content: [ + { + sender: "inj1senderaddress...", + receiver: "cosmos1receiveraddress...", + eventNonce: 123, + eventHeight: 12345, + amount: "1000000000", + denom: "peggy0xabcdef...", + orchestratorAddress: "inj1orchestratoraddress...", + state: "completed", + txHashesList: [ + "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", + ], + }, + // ...additional IBC transfer transactions + ], + }, + }, +]; + +export const msgIBCTransferExample = [ + { + user: "{{user1}}", + content: { + text: "Perform an IBC transfer of 1,000,000,000 peggy0xabcdef... from inj1senderaddress... to cosmos1receiveraddress... via port transfer and channel channel-0 with a timeout of 300 seconds.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IBC transfer submitted successfully.", + action: "MSG_IBC_TRANSFER", + content: { + txHash: "0xibctransferhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/insurance.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/insurance.ts new file mode 100644 index 000000000000..9180eb017cfa --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/insurance.ts @@ -0,0 +1,210 @@ +// ======================================= +// Insurance Fund Module +// ======================================= + +export const getInsuranceModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve insurance module parameters, including the default redemption notice period duration.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Insurance module parameters retrieved successfully.", + action: "GET_INSURANCE_MODULE_PARAMS", + content: { + defaultRedemptionNoticePeriodDuration: 1209600, + }, + }, + }, +]; + +export const getInsuranceFundsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch all insurance funds.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Insurance funds retrieved successfully.", + action: "GET_INSURANCE_FUNDS", + content: { + insuranceFunds: [ + { + depositDenom: "inj", + insurancePoolTokenDenom: "share1", + redemptionNoticePeriodDuration: 1209600, + balance: "1000000000000000000", + totalShare: "1000000000000000000", + marketId: "0x1234abcd...", + marketTicker: "BTC/USDT", + oracleBase: "BTC", + oracleQuote: "USDT", + oracleType: 1, + expiry: 1640995200, + }, + { + depositDenom: "inj", + insurancePoolTokenDenom: "share2", + redemptionNoticePeriodDuration: 1209600, + balance: "500000000000000000", + totalShare: "500000000000000000", + marketId: "0x5678efgh...", + marketTicker: "ETH/USDT", + oracleBase: "ETH", + oracleQuote: "USDT", + oracleType: 1, + expiry: 1643587200, + }, + // ...additional insurance funds + ], + }, + }, + }, +]; + +export const getInsuranceFundExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve details for the insurance fund with market ID 0x1234abcd...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Insurance fund details retrieved successfully.", + action: "GET_INSURANCE_FUND", + content: { + depositDenom: "inj", + insurancePoolTokenDenom: "share1", + redemptionNoticePeriodDuration: 1209600, + balance: "1000000000000000000", + totalShare: "1000000000000000000", + marketId: "0x1234abcd...", + marketTicker: "BTC/USDT", + oracleBase: "BTC", + oracleQuote: "USDT", + oracleType: 1, + expiry: 1640995200, + }, + }, + }, +]; + +export const getEstimatedRedemptionsExample = [ + { + user: "{{user1}}", + content: { + text: "Get estimated redemptions for market ID 0x1234abcd... and address inj1useraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Estimated redemptions retrieved successfully.", + action: "GET_ESTIMATED_REDEMPTIONS", + content: { + amounts: [ + { + amount: "1000000000000000000", + denom: "inj", + }, + { + amount: "500000000000000000", + denom: "share1", + }, + ], + }, + }, + }, +]; + +export const getPendingRedemptionsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve pending redemptions for market ID 0x1234abcd... and address inj1useraddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Pending redemptions retrieved successfully.", + action: "GET_PENDING_REDEMPTIONS", + content: { + amounts: [ + { + amount: "500000000000000000", + denom: "inj", + }, + ], + }, + }, + }, +]; + +export const msgCreateInsuranceFundExample = [ + { + user: "{{user1}}", + content: { + text: "Create a new insurance fund with market ID 0x1234abcd..., ticker 'BTC/USDT', and an initial deposit of 1,000,000,000 inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Insurance fund creation submitted successfully.", + action: "MSG_CREATE_INSURANCE_FUND", + content: { + txHash: "0xcreateinsurancefundhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgRequestRedemptionExample = [ + { + user: "{{user1}}", + content: { + text: "Request a redemption of 1,000,000,000 share1 from insurance fund with market ID 0x1234abcd...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Redemption request submitted successfully.", + action: "MSG_REQUEST_REDEMPTION", + content: { + txHash: "0xrequestredemptionhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgUnderwriteExample = [ + { + user: "{{user1}}", + content: { + text: "Underwrite 1,000,000,000 inj to insurance fund with market ID 0x1234abcd...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Underwriting submitted successfully.", + action: "MSG_UNDERWRITE", + content: { + txHash: "0xunderwritehash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/mint.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/mint.ts new file mode 100644 index 000000000000..6eb148c2682d --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/mint.ts @@ -0,0 +1,65 @@ +// ======================================= +// Mint Module +// ======================================= + +export const getMintModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve mint module parameters, including mintDenom, inflationRateChange, inflationMax, inflationMin, goalBonded, and blocksPerYear.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Mint module parameters retrieved successfully.", + action: "GET_MINT_MODULE_PARAMS", + content: { + mintDenom: "inj", + inflationRateChange: "0.130000000000000000", + inflationMax: "0.200000000000000000", + inflationMin: "0.070000000000000000", + goalBonded: "0.670000000000000000", + blocksPerYear: "6311520", + }, + }, + }, +]; + +export const getInflationExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the current inflation rate.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Current inflation rate retrieved successfully.", + action: "GET_INFLATION", + content: { + inflation: "0.130000000000000000", + }, + }, + }, +]; + +export const getAnnualProvisionsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the current annual provisions.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Annual provisions retrieved successfully.", + action: "GET_ANNUAL_PROVISIONS", + content: { + annualProvisions: "5000000000000000000000000", + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/mito.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/mito.ts new file mode 100644 index 000000000000..19105e266ef9 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/mito.ts @@ -0,0 +1,1232 @@ +// ======================================= +// Mito Module +// ======================================= + +export const getVaultExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve details for the vault with contract address inj1... and slug 'vault-slug'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vault details retrieved successfully.", + action: "GET_VAULT", + content: { + contractAddress: "inj1...", + codeId: "1", + vaultName: "Example Vault", + marketId: "0x123...", + currentTvl: 1000000, + profits: { + allTimeChange: 10.5, + threeMonthsChange: 5.2, + oneMonthChange: 2.1, + oneDayChange: 0.5, + oneWeekChange: 1.2, + oneYearChange: 15.3, + threeYearsChange: 45.6, + sixMonthsChange: 8.4, + }, + updatedAt: 1632150400, + vaultType: "perpetual", + lpTokenPrice: 1.05, + subaccountInfo: { + subaccountId: "0x123...", + balancesList: [ + { + denom: "inj", + totalBalance: "1000000000", + }, + ], + }, + masterContractAddress: "inj1...", + totalLpAmount: "1000000", + slug: "vault-slug", + createdAt: 1632150400, + notionalValueCap: "10000000", + tvlChanges: { + allTimeChange: 20.5, + }, + apy: 15.2, + apy7D: 14.8, + apy7DFq: 14.9, + apyue: 15.0, + apyV3: 15.1, + registrationMode: "open", + }, + }, + }, +]; + +export const getVaultsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve the latest 10 vaults with code ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vaults retrieved successfully.", + action: "GET_VAULTS", + content: { + vaults: [ + { + contractAddress: "inj1...", + vaultName: "Example Vault", + currentTvl: 1000000, + lpTokenPrice: 1.05, + apy: 15.2, + }, + { + contractAddress: "inj2...", + vaultName: "Another Vault", + currentTvl: 500000, + lpTokenPrice: 1.1, + apy: 14.5, + }, + // ...additional vaults + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getLpTokenPriceChartExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve LP token price chart for vault address inj1... from timestamp 1633360000 to 1640995200.", + }, + }, + { + user: "{{agent}}", + content: { + text: "LP token price chart retrieved successfully.", + action: "GET_LP_TOKEN_PRICE_CHART", + content: { + priceSnapshots: [ + { + price: 1.05, + updatedAt: 1633360000, + }, + { + price: 1.06, + updatedAt: 1633446400, + }, + // ...additional price snapshots + ], + }, + }, + }, +]; + +export const getTVLChartExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve TVL chart for vault address inj1... from timestamp 1633360000 to 1640995200.", + }, + }, + { + user: "{{agent}}", + content: { + text: "TVL chart retrieved successfully.", + action: "GET_TVL_CHART", + content: { + priceSnapshots: [ + { + price: 1000000, + updatedAt: 1633360000, + }, + { + price: 1005000, + updatedAt: 1633446400, + }, + // ...additional TVL snapshots + ], + }, + }, + }, +]; + +export const getVaultsByHolderAddressExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve vaults subscribed by holder address inj1... with vault address inj1..., skipping 0 and limiting to 10 records.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vaults by holder address retrieved successfully.", + action: "GET_VAULTS_BY_HOLDER_ADDRESS", + content: { + subscriptions: [ + { + vaultInfo: { + contractAddress: "inj1...", + vaultName: "Example Vault", + currentTvl: 1000000, + }, + lpAmount: "1000000", + holderAddress: "inj1...", + lpAmountPercentage: 0.1, + }, + { + vaultInfo: { + contractAddress: "inj2...", + vaultName: "Another Vault", + currentTvl: 500000, + }, + lpAmount: "500000", + holderAddress: "inj1...", + lpAmountPercentage: 0.05, + }, + // ...additional subscriptions + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getLPHoldersExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve LP holders for vault address inj1... and staking contract address inj1..., skipping 0 and limiting to 10 records.", + }, + }, + { + user: "{{agent}}", + content: { + text: "LP holders retrieved successfully.", + action: "GET_LP_HOLDERS", + content: { + holders: [ + { + holderAddress: "inj1...", + vaultAddress: "inj1...", + amount: "1000000", + updatedAt: 1633360000, + lpAmountPercentage: 0.1, + redemptionLockTime: "1640995200", + stakedAmount: "500000", + }, + { + holderAddress: "inj2...", + vaultAddress: "inj1...", + amount: "500000", + updatedAt: 1633446400, + lpAmountPercentage: 0.05, + redemptionLockTime: "1643587200", + stakedAmount: "250000", + }, + // ...additional holders + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getHolderPortfolioExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve portfolio for holder address inj1... and staking contract address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "Holder portfolio retrieved successfully.", + action: "GET_HOLDER_PORTFOLIO", + content: { + totalValue: 1000000, + pnl: 50000, + totalValueChartList: [ + { + price: 1000000, + updatedAt: 1633360000, + }, + { + price: 1005000, + updatedAt: 1633446400, + }, + // ...additional total value snapshots + ], + pnlChartList: [ + { + price: 50000, + updatedAt: 1633360000, + }, + { + price: 50500, + updatedAt: 1633446400, + }, + // ...additional PnL snapshots + ], + updatedAt: 1633446400, + }, + }, + }, +]; + +export const getLeaderboardExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve leaderboard for epoch ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Leaderboard retrieved successfully.", + action: "GET_LEADERBOARD", + content: { + entries: [ + { + address: "inj1...", + accruedPoints: "100", + }, + { + address: "inj2...", + accruedPoints: "95", + }, + // ...additional leaderboard entries + ], + snapshotBlock: "1000000", + updatedAt: 1633360000, + rank: "1", + }, + }, + }, +]; + +export const getLeaderboardEpochsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve leaderboard epochs with a limit of 10, from epoch ID 1 to 10.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Leaderboard epochs retrieved successfully.", + action: "GET_LEADERBOARD_EPOCHS", + content: { + epochs: [ + { + epochId: 1, + startAt: 1633360000, + endAt: 1640995200, + isLive: true, + }, + { + epochId: 2, + startAt: 1640995200, + endAt: 1643587200, + isLive: false, + }, + // ...additional epochs + ], + pagination: { + total: 10, + }, + }, + }, + }, +]; + +export const getTransferHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve transfer history for vault address inj1... and account address inj1..., skipping 0 and limiting to 10 records up to number 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Transfer history retrieved successfully.", + action: "GET_TRANSFER_HISTORY", + content: { + transfers: [ + { + lpAmount: "1000000", + coins: [ + { + denom: "inj", + amount: "1000000", + }, + ], + usdValue: "1000000", + isDeposit: true, + executedAt: 1633360000, + account: "inj1...", + vault: "inj1...", + txHash: "0x...", + tidByVault: 1, + tidByAccount: 1, + }, + { + lpAmount: "500000", + coins: [ + { + denom: "inj", + amount: "500000", + }, + ], + usdValue: "500000", + isDeposit: false, + executedAt: 1633446400, + account: "inj2...", + vault: "inj1...", + txHash: "0x...", + tidByVault: 2, + tidByAccount: 2, + }, + // ...additional transfer records + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getStakingPoolsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve staking pools for staker address inj1... and staking contract address inj1..., skipping 0 and limiting to 10 records.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Staking pools retrieved successfully.", + action: "GET_STAKING_POOLS", + content: { + pools: [ + { + vaultName: "Example Vault", + vaultAddress: "inj1...", + stakeDenom: "inj", + gauges: [ + { + id: "1", + owner: "inj1...", + startTimestamp: 1633360000, + endTimestamp: 1640995200, + rewardTokens: [ + { + denom: "inj", + amount: "1000000", + }, + ], + lastDistribution: 1633360000, + status: "active", + }, + ], + apr: 15.2, + totalLiquidity: 1000000, + stakingAddress: "inj1...", + aprBreakdown: { + inj: 15.2, + }, + }, + { + vaultName: "Another Vault", + vaultAddress: "inj2...", + stakeDenom: "inj", + gauges: [ + { + id: "2", + owner: "inj2...", + startTimestamp: 1633446400, + endTimestamp: 1643587200, + rewardTokens: [ + { + denom: "inj", + amount: "500000", + }, + ], + lastDistribution: 1633446400, + status: "active", + }, + ], + apr: 14.5, + totalLiquidity: 500000, + stakingAddress: "inj2...", + aprBreakdown: { + inj: 14.5, + }, + }, + // ...additional staking pools + ], + pagination: { + total: 10, + }, + }, + }, + }, +]; + +export const getStakingHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve staking history for staker address inj1..., skipping 0 and limiting to 10 records up to number 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Staking history retrieved successfully.", + action: "GET_STAKING_HISTORY", + content: { + activities: [ + { + action: "stake", + txHash: "0x...", + staker: "inj1...", + vaultAddress: "inj1...", + numberByAccount: 1, + timestamp: 1633360000, + rewardedTokens: [ + { + denom: "inj", + amount: "1000000", + }, + ], + stakeAmount: { + denom: "inj", + amount: "1000000", + }, + }, + { + action: "unstake", + txHash: "0x...", + staker: "inj2...", + vaultAddress: "inj1...", + numberByAccount: 2, + timestamp: 1633446400, + rewardedTokens: [ + { + denom: "inj", + amount: "500000", + }, + ], + stakeAmount: { + denom: "inj", + amount: "500000", + }, + }, + // ...additional staking activities + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getStakingRewardsByAccountExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve staking rewards for staker address inj1... and staking contract address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "Staking rewards by account retrieved successfully.", + action: "GET_STAKING_REWARDS_BY_ACCOUNT", + content: { + rewards: [ + { + apr: 15.2, + vaultName: "Example Vault", + vaultAddress: "inj1...", + lockTimestamp: 1633360000, + claimableRewards: [ + { + denom: "inj", + amount: "1000000", + }, + ], + stakedAmount: { + denom: "inj", + amount: "1000000", + }, + lockedAmount: { + denom: "inj", + amount: "1000000", + }, + }, + { + apr: 14.5, + vaultName: "Another Vault", + vaultAddress: "inj2...", + lockTimestamp: 1633446400, + claimableRewards: [ + { + denom: "inj", + amount: "500000", + }, + ], + stakedAmount: { + denom: "inj", + amount: "500000", + }, + lockedAmount: { + denom: "inj", + amount: "500000", + }, + }, + // ...additional rewards + ], + pagination: { + total: 10, + }, + }, + }, + }, +]; + +export const getMissionsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve missions for account address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "Missions retrieved successfully.", + action: "GET_MISSIONS", + content: { + missions: [ + { + id: "mission1", + points: "100", + completed: true, + accruedPoints: "50", + updatedAt: 1633360000, + progress: 0.5, + expected: 100, + }, + { + id: "mission2", + points: "200", + completed: false, + accruedPoints: "150", + updatedAt: 1633446400, + progress: 0.75, + expected: 200, + }, + // ...additional missions + ], + }, + }, + }, +]; + +export const getMissionLeaderboardExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve mission leaderboard for user address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "Mission leaderboard retrieved successfully.", + action: "GET_MISSION_LEADERBOARD", + content: { + entries: [ + { + address: "inj1...", + accruedPoints: "100", + }, + { + address: "inj2...", + accruedPoints: "95", + }, + // ...additional leaderboard entries + ], + updatedAt: 1633360000, + rank: "1", + }, + }, + }, +]; + +export const getIDOExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IDO information for contract address inj1... and account address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDO information retrieved successfully.", + action: "GET_IDO", + content: { + ido: { + startTime: 1633360000, + endTime: 1640995200, + owner: "inj1...", + status: "active", + tokenInfo: { + denom: "inj", + supply: "1000000", + symbol: "INJ", + decimal: 18, + logoUrl: "https://example.com/logo.png", + }, + capPerAddress: "1000000", + contractAddress: "inj1...", + subscribedAmount: "500000", + projectTokenAmount: "1000000", + targetAmountInQuoteDenom: "1000000", + secondBeforeStartToSetQuotePrice: 3600, + targetAmountInUsd: "1000000", + tokenPrice: 1.0, + isAccountWhiteListed: true, + isLaunchWithVault: true, + isVestingScheduleEnabled: true, + name: "Example IDO", + progress: [ + { + status: "active", + timestamp: 1633360000, + }, + ], + quoteDenom: "inj", + stakeToSubscription: [ + { + stakedAmount: "1000000", + subscribableAmount: "500000", + }, + ], + useWhitelist: true, + marketId: "0x...", + vaultAddress: "inj1...", + }, + }, + }, + }, +]; + +export const getIDOsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all active IDOs with a limit of 10, up to IDO number 100, for account address inj1... and owner address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDOs retrieved successfully.", + action: "GET_IDOS", + content: { + idos: [ + { + startTime: 1633360000, + endTime: 1640995200, + owner: "inj1...", + status: "active", + contractAddress: "inj1...", + name: "Example IDO", + }, + { + startTime: 1633446400, + endTime: 1643587200, + owner: "inj2...", + status: "upcoming", + contractAddress: "inj2...", + name: "Another IDO", + }, + // ...additional IDOs + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getIDOSubscribersExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve subscribers for IDO with contract address inj1..., skipping 0 and limiting to 10 records sorted by subscribed amount.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDO subscribers retrieved successfully.", + action: "GET_IDO_SUBSCRIBERS", + content: { + idoAddress: "inj1...", + accounts: [ + { + accountAddress: "inj1...", + updatedAt: 1633360000, + weight: "1.0", + }, + { + accountAddress: "inj2...", + updatedAt: 1633446400, + weight: "0.8", + }, + // ...additional subscriber accounts + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getIDOSubscriptionExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IDO subscription details for contract address inj1... and account address inj1....", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDO subscription details retrieved successfully.", + action: "GET_IDO_SUBSCRIPTION", + content: { + subscription: { + maxSubscriptionCoin: { + denom: "inj", + amount: "1000000", + }, + committedAmount: "500000", + price: 1.0, + claimableCoins: [ + { + denom: "token", + amount: "500000", + }, + ], + rewardClaimed: false, + tokenInfo: { + denom: "inj", + supply: "1000000", + symbol: "INJ", + decimal: 18, + logoUrl: "https://example.com/logo.png", + }, + quoteDenom: "inj", + updatedAt: 1633360000, + stakedAmount: "1000000", + marketId: "0x...", + }, + }, + }, + }, +]; + +export const getIDOActivitiesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IDO activities for contract address inj1..., account address inj1..., skipping 0 and limiting to 10 records up to number 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDO activities retrieved successfully.", + action: "GET_IDO_ACTIVITIES", + content: { + activities: [ + { + address: "inj1...", + subscribedCoin: { + denom: "inj", + amount: "1000000", + }, + usdValue: 1000000, + timestamp: 1633360000, + txHash: "0x...", + }, + { + address: "inj2...", + subscribedCoin: { + denom: "inj", + amount: "500000", + }, + usdValue: 500000, + timestamp: 1633446400, + txHash: "0x...", + }, + // ...additional activities + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getIDOWhitelistExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve IDO whitelist for contract address inj1..., skipping 0 and limiting to 10 records.", + }, + }, + { + user: "{{agent}}", + content: { + text: "IDO whitelist retrieved successfully.", + action: "GET_IDO_WHITELIST", + content: { + idoAddress: "inj1...", + accounts: [ + { + accountAddress: "inj1...", + updatedAt: 1633360000, + weight: "1.0", + }, + { + accountAddress: "inj2...", + updatedAt: 1633446400, + weight: "0.8", + }, + // ...additional whitelist accounts + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +export const getClaimReferencesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve claim references for IDO with contract address inj1... and account address inj1..., skipping 0 and limiting to 10 records up to number 100.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Claim references retrieved successfully.", + action: "GET_CLAIM_REFERENCES", + content: { + claimReferences: [ + { + denom: "inj", + updatedAt: 1633360000, + claimedAmount: "500000", + claimableAmount: "1000000", + accountAddress: "inj1...", + cwContractAddress: "inj1...", + idoContractAddress: "inj1...", + startVestingTime: 1633360000, + vestingDurationSeconds: 2592000, + }, + { + denom: "token", + updatedAt: 1633446400, + claimedAmount: "300000", + claimableAmount: "700000", + accountAddress: "inj2...", + cwContractAddress: "inj2...", + idoContractAddress: "inj2...", + startVestingTime: 1633446400, + vestingDurationSeconds: 2592000, + }, + // ...additional claim references + ], + pagination: { + total: 100, + }, + }, + }, + }, +]; + +//Mito execute messages examples + +export const getLaunchpadSubscribeExample = [ + { + user: "{{user1}}", + content: { + text: "Subscribe to launchpad with 1000 INJ tokens.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Launchpad subscription processed successfully.", + action: "LAUNCHPAD_SUBSCRIBE", + content: { + amount: 1000, + quoteTokenDenom: "inj", + quoteTokenDecimals: 18, + contractAddress: "inj1...", + }, + }, + }, +]; + +export const getSubscribeVaultExample = [ + { + user: "{{user1}}", + content: { + text: "Subscribe to vault with 1.5 INJ and 1000 USDT.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vault subscription processed successfully.", + action: "SUBSCRIBE_VAULT", + content: { + market: { + baseDenom: "inj", + baseDecimals: 18, + quoteDecimals: 6, + quoteDenom: "usdt", + }, + baseAmount: 1.5, + quoteAmount: 1000, + subscriptionType: "BaseOnly", + vaultDetails: { + vaultSubaccountId: "0x...", + vaultMasterAddress: "inj1...", + vaultType: "crates.io:vault-cpmm-spot", + }, + slippage: { + max_penalty: "0.1", + }, + }, + }, + }, +]; + +export const getInstantiateCPMMVaultExample = [ + { + user: "{{user1}}", + content: { + text: "Create a new CPMM vault for INJ/USDT trading pair.", + }, + }, + { + user: "{{agent}}", + content: { + text: "CPMM vault instantiated successfully.", + action: "INSTANTIATE_CPMM_VAULT", + content: { + MITO_MASTER_CONTRACT_ADDRESS: "inj1...", + CPMM_CONTRACT_CODE: 123, + senderWalletAddress: "inj1...", + marketId: "0x...", + feeBps: 30, + baseDecimals: 18, + quoteDecimals: 6, + funds: [ + { + denom: "inj", + amount: "1000000000000000000", + }, + ], + notionalValueCap: "1000000", + pricingStrategy: { + SmoothingPricingWithRelativePriceRange: { + bid_range: "0.01", + ask_range: "0.01", + }, + }, + maxInvariantSensitivityBps: "100", + maxPriceSensitivityBps: "100", + orderType: "LIMIT", + }, + }, + }, +]; + +export const getLaunchpadClaimExample = [ + { + user: "{{user1}}", + content: { + text: "Claim tokens from launchpad contract.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Launchpad tokens claimed successfully.", + action: "LAUNCHPAD_CLAIM", + content: { + contractAddress: "inj1...", + }, + }, + }, +]; + +export const getVaultSubscribeExample = [ + { + user: "{{user1}}", + content: { + text: "Subscribe to a spot trading vault with INJ/USDT.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vault subscription processed successfully.", + action: "VAULT_SUBSCRIBE", + content: { + vaultType: "crates.io:vault-cpmm-spot", + slippage: { + max_penalty: "0.1", + }, + vaultSubaccountId: "0x...", + baseAmount: 1.5, + quoteAmount: 1000, + market: { + baseDenom: "inj", + baseDecimals: 18, + quoteDenom: "usdt", + quoteDecimals: 6, + }, + subscriptionType: "BaseOnly", + masterAddress: "inj1...", + }, + }, + }, +]; + +export const getRedeemFromVaultExample = [ + { + user: "{{user1}}", + content: { + text: "Redeem 0.01 LP tokens from the vault.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vault redemption processed successfully.", + action: "REDEEM_FROM_VAULT", + content: { + vaultSubaccountId: "0x...", + redeemAmount: 0.01, + vaultBaseDecimals: 18, + masterAddress: "inj1...", + vaultLpDenom: "factory/...", + marketType: "Spot", + redemptionType: "BaseOnly", + slippage: { + max_penalty: "0.1", + }, + }, + }, + }, +]; + +export const getStakeVaultLPExample = [ + { + user: "{{user1}}", + content: { + text: "Stake 0.01 LP tokens in the vault.", + }, + }, + { + user: "{{agent}}", + content: { + text: "LP tokens staked successfully.", + action: "STAKE_VAULT_LP", + content: { + amount: 0.01, + vaultLpDenom: "factory/...", + vaultTokenDecimals: 18, + stakingContractAddress: "inj1...", + }, + }, + }, +]; + +export const getUnstakeVaultLPExample = [ + { + user: "{{user1}}", + content: { + text: "Unstake 0.01 LP tokens from the vault.", + }, + }, + { + user: "{{agent}}", + content: { + text: "LP tokens unstaked successfully.", + action: "UNSTAKE_VAULT_LP", + content: { + amount: 0.01, + vaultLpDenom: "factory/...", + vaultTokenDecimals: 18, + stakingContractAddress: "inj1...", + }, + }, + }, +]; + +export const getClaimVaultRewardsExample = [ + { + user: "{{user1}}", + content: { + text: "Claim staking rewards from the vault.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vault rewards claimed successfully.", + action: "CLAIM_VAULT_REWARDS", + content: { + vaultLpDenom: "factory/...", + stakingContractAddress: "inj1...", + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/peggy.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/peggy.ts new file mode 100644 index 000000000000..b2dd09a2c0b9 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/peggy.ts @@ -0,0 +1,63 @@ +// ======================================= +// Peggy Module +// ======================================= + +export const getPeggyModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve Peggy module parameters, including bridgeChainId, peggyId, signedValsetsWindow, signedBatchesWindow, signedClaimsWindow, targetBatchTimeout, averageBlockTime, averageEthereumBlockTime, slash fractions, unbondSlashingValsetsWindow, bridgeContractAddress, bridgeActive status, and oracles.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Peggy module parameters retrieved successfully.", + action: "GET_PEGGY_MODULE_PARAMS", + content: { + bridgeParams: { + bridgeChainId: "1", + peggyId: "peggy1", + signedValsetsWindow: "10000", + signedBatchesWindow: "10000", + signedClaimsWindow: "10000", + targetBatchTimeout: "43200000", + averageBlockTime: "5000", + averageEthereumBlockTime: "15000", + slashFractionValset: "0.001", + slashFractionBatch: "0.001", + slashFractionClaim: "0.001", + slashFractionConflictingClaim: "0.001", + unbondSlashingValsetsWindow: "10000", + bridgeContractAddress: "0xBridgeContractAddress...", + bridgeActive: true, + oracles: [ + "0xOracleAddress1...", + "0xOracleAddress2...", + // ...additional oracle addresses + ], + }, + }, + }, + }, +]; + +export const msgSendToEthExample = [ + { + user: "{{user1}}", + content: { + text: "Send 1,000,000,000 inj with a bridge fee of 1,000,000 inj to Ethereum address 0xEthereumAddress...", + }, + }, + { + user: "{{agent}}", + content: { + text: "Tokens sent to Ethereum successfully.", + action: "MSG_SEND_TO_ETH", + content: { + txHash: "0xibctransferhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/permissions.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/permissions.ts new file mode 100644 index 000000000000..bec41a88c991 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/permissions.ts @@ -0,0 +1,209 @@ +// ======================================= +// Permission Module +// ======================================= + +export const getAddressesByRoleExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all addresses with the role 'minter' for denomination 'peggy0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Addresses with role 'minter' retrieved successfully.", + action: "GET_ADDRESSES_BY_ROLE", + content: { + addresses: [ + "inj1address1...", + "inj1address2...", + "inj1address3...", + ], + }, + }, + }, +]; + +export const getAddressRolesExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch roles for address 'inj1address1...' and denomination 'peggy0x...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Roles for address 'inj1address1...' retrieved successfully.", + action: "GET_ADDRESS_ROLES", + content: { + roles: ["minter", "burner"], + }, + }, + }, +]; + +export const getAllNamespacesExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch all namespaces.", + }, + }, + { + user: "{{agent}}", + content: { + text: "All namespaces retrieved successfully.", + action: "GET_ALL_NAMESPACES", + content: { + namespaces: [ + { + denom: "peggy0x...", + wasmHook: "inj1hookaddress...", + mintsPaused: false, + sendsPaused: false, + burnsPaused: false, + rolePermissions: [ + { + role: "minter", + permissions: 1, + }, + { + role: "burner", + permissions: 2, + }, + ], + addressRoles: [ + { + address: "inj1address1...", + roles: ["minter"], + }, + { + address: "inj1address2...", + roles: ["burner"], + }, + ], + }, + { + denom: "peggy0xabc...", + wasmHook: "inj1anotherhook...", + mintsPaused: true, + sendsPaused: false, + burnsPaused: true, + rolePermissions: [ + { + role: "minter", + permissions: 1, + }, + ], + addressRoles: [ + { + address: "inj1address3...", + roles: ["minter"], + }, + ], + }, + // ...additional namespaces + ], + }, + }, + }, +]; + +export const getPermissionsModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve Peggy module parameters, including bridge settings and oracle addresses.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Peggy module parameters retrieved successfully.", + action: "GET_PERMISSIONS_MODULE_PARAMS", + content: { + wasmHookQueryMaxGas: "1000000", + }, + }, + }, +]; + +export const getNamespaceByDenomExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch namespace details for denomination 'peggy0x...' and include role information.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Namespace details retrieved successfully.", + action: "GET_NAMESPACE_BY_DENOM", + content: { + namespace: { + denom: "peggy0x...", + wasmHook: "inj1hookaddress...", + mintsPaused: false, + sendsPaused: false, + burnsPaused: false, + rolePermissions: [ + { + role: "minter", + permissions: 1, + }, + ], + addressRoles: [ + { + address: "inj1address1...", + roles: ["minter"], + }, + ], + }, + }, + }, + }, +]; + +export const getVouchersForAddressExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve vouchers for address 'inj1address1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Vouchers for address 'inj1address1...' retrieved successfully.", + action: "GET_VOUCHERS_FOR_ADDRESS", + content: { + vouchers: [ + { + coins: [ + { + amount: "1000000000000000000", + denom: "peggy0x...", + }, + { + amount: "500000000000000000", + denom: "peggy0xabc...", + }, + ], + }, + { + coins: [ + { + amount: "2000000000000000000", + denom: "peggy0xdef...", + }, + ], + }, + // ...additional vouchers + ], + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/staking.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/staking.ts new file mode 100644 index 000000000000..c33199f0c08a --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/staking.ts @@ -0,0 +1,726 @@ +// ======================================= +// Staking Module +// ======================================= + +export const getStakingModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve staking module parameters including unbonding time, max validators, max entries, historical entries, and bond denomination.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Staking module parameters retrieved successfully.", + action: "GET_STAKING_MODULE_PARAMS", + content: { + unbondingTime: 1209600, + maxValidators: 100, + maxEntries: 7, + historicalEntries: 10000, + bondDenom: "inj", + }, + }, + }, +]; + +export const getPoolExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch staking pool information.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Staking pool information retrieved successfully.", + action: "GET_POOL", + content: { + notBondedTokens: "1000000000000000000", + bondedTokens: "5000000000000000000", + }, + }, + }, +]; + +export const getValidatorsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve validators with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validators retrieved successfully.", + action: "GET_VALIDATORS", + content: { + validators: [ + { + operatorAddress: "injvaloper1...", + consensusPubkey: "injvalconspub1...", + jailed: false, + status: 2, + tokens: "1000000", + delegatorShares: "1000000.000000000000000000", + description: { + moniker: "Validator One", + identity: "", + website: "https://validatorone.com", + securityContact: "security@validatorone.com", + details: "Leading validator in the network.", + }, + unbondingHeight: "0", + unbondingTime: "0", + commission: { + commissionRates: { + rate: "0.100000000000000000", + maxRate: "0.200000000000000000", + maxChangeRate: "0.010000000000000000", + }, + updateTime: "0", + }, + minSelfDelegation: "1000000", + }, + // ...additional validators + ], + pagination: { + nextKey: "def456...", + total: "100", + }, + }, + }, + }, +]; + +export const getValidatorExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch details for validator with address 'injvaloper1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator details retrieved successfully.", + action: "GET_VALIDATOR", + content: { + operatorAddress: "injvaloper1...", + consensusPubkey: "injvalconspub1...", + jailed: false, + status: 2, + tokens: "1000000", + delegatorShares: "1000000.000000000000000000", + description: { + moniker: "Validator One", + identity: "", + website: "https://validatorone.com", + securityContact: "security@validatorone.com", + details: "Leading validator in the network.", + }, + unbondingHeight: "0", + unbondingTime: "0", + commission: { + commissionRates: { + rate: "0.100000000000000000", + maxRate: "0.200000000000000000", + maxChangeRate: "0.010000000000000000", + }, + updateTime: "0", + }, + minSelfDelegation: "1000000", + }, + }, + }, +]; + +export const getValidatorDelegationsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve delegations for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator delegations retrieved successfully.", + action: "GET_VALIDATOR_DELEGATIONS", + content: { + delegations: [ + { + delegation: { + delegatorAddress: "inj1delegator1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegations + ], + pagination: { + nextKey: "ghi789...", + total: "50", + }, + }, + }, + }, +]; + +export const getValidatorDelegationsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely retrieve delegations for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator delegations retrieved successfully (no-throw).", + action: "GET_VALIDATOR_DELEGATIONS_NO_THROW", + content: { + delegations: [ + { + delegation: { + delegatorAddress: "inj1delegator1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegations + ], + pagination: { + nextKey: "ghi789...", + total: "50", + }, + }, + }, + }, +]; + +export const getValidatorUnbondingDelegationsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch unbonding delegations for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator unbonding delegations retrieved successfully.", + action: "GET_VALIDATOR_UNBONDING_DELEGATIONS", + content: { + unbondingDelegations: [ + { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "1000000000000000000", + balance: "1000000000000000000", + }, + ], + }, + // ...additional unbonding delegations + ], + pagination: { + nextKey: "jkl012...", + total: "20", + }, + }, + }, + }, +]; + +export const getValidatorUnbondingDelegationsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely fetch unbonding delegations for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator unbonding delegations retrieved successfully (no-throw).", + action: "GET_VALIDATOR_UNBONDING_DELEGATIONS_NO_THROW", + content: { + unbondingDelegations: [ + { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "1000000000000000000", + balance: "1000000000000000000", + }, + ], + }, + // ...additional unbonding delegations + ], + pagination: { + nextKey: "jkl012...", + total: "20", + }, + }, + }, + }, +]; + +export const getDelegationsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch all delegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegations retrieved successfully.", + action: "GET_DELEGATIONS", + content: { + delegations: [ + { + delegation: { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegations + ], + pagination: { + nextKey: "mno345...", + total: "100", + }, + }, + }, + }, +]; + +export const getDelegationsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely fetch all delegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegations retrieved successfully (no-throw).", + action: "GET_DELEGATIONS_NO_THROW", + content: { + delegations: [ + { + delegation: { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegations + ], + pagination: { + nextKey: "mno345...", + total: "100", + }, + }, + }, + }, +]; + +export const getUnbondingDelegationsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve unbonding delegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Unbonding delegations retrieved successfully.", + action: "GET_UNBONDING_DELEGATIONS", + content: { + unbondingDelegations: [ + { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "1000000000000000000", + balance: "1000000000000000000", + }, + ], + }, + // ...additional unbonding delegations + ], + pagination: { + nextKey: "ghi789...", + total: "30", + }, + }, + }, + }, +]; + +export const getReDelegationsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch redelegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Redelegations retrieved successfully.", + action: "GET_REDELEGATIONS", + content: { + redelegations: [ + { + delegatorAddress: "inj1...", + validatorSrcAddress: "injvaloper1...", + validatorDstAddress: "injvaloper2...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "500000000000000000", + sharesDst: "500000.000000000000000000", + }, + ], + }, + // ...additional redelegations + ], + pagination: { + nextKey: "stu901...", + total: "40", + }, + }, + }, + }, +]; + +export const msgCreateValidatorExample = [ + { + user: "{{user1}}", + content: { + text: "Create a new validator with moniker 'Validator One', identity 'keybase-id', website 'https://validatorone.com', security contact 'security@validatorone.com', details 'Leading validator in the network.', commission rate 0.10, max rate 0.20, max change rate 0.01, minimum self-delegation of 1000000000000000000 inj, delegator address 'inj1...', validator address 'injvaloper1...', public key 'injvalconspub1...', and initial self-delegation of 1000000000000000000 inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator creation submitted successfully.", + action: "MSG_CREATE_VALIDATOR", + content: { + txHash: "0xcreatevalidatorhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgEditValidatorExample = [ + { + user: "{{user1}}", + content: { + text: "Edit validator 'injvaloper1...' with new moniker 'Validator One Updated', new identity 'new-keybase-id', new website 'https://new-validatorone.com', new security contact 'newsecurity@validatorone.com', new details 'Updated details.', new commission rate 0.15, and new minimum self-delegation of 2000000000000000000 inj.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Validator edited successfully.", + action: "MSG_EDIT_VALIDATOR", + content: { + txHash: "0xeditvalidatorhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgDelegateExample = [ + { + user: "{{user1}}", + content: { + text: "Delegate 1000000000000000000 inj from delegator address 'inj1...' to validator address 'injvaloper1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegation submitted successfully.", + action: "MSG_DELEGATE", + content: { + txHash: "0xdelegationhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgBeginRedelegateExample = [ + { + user: "{{user1}}", + content: { + text: "Begin redelegating 1000000000000000000 inj from validator 'injvaloper1...' to validator 'injvaloper2...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Redelegation submitted successfully.", + action: "MSG_BEGIN_REDELEGATE", + content: { + txHash: "0xredelegationhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgUndelegateExample = [ + { + user: "{{user1}}", + content: { + text: "Undelegate 1000000000000000000 inj from delegator address 'inj1...' to validator address 'injvaloper1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Undelegation submitted successfully.", + action: "MSG_UNDELEGATE", + content: { + txHash: "0xundelegationhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgCancelUnbondingDelegationExample = [ + { + user: "{{user1}}", + content: { + text: "Cancel undelegation of 1000000000000000000 inj from delegator address 'inj1...' to validator address 'injvaloper1...' initiated at height 1000000.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Unbonding delegation cancellation submitted successfully.", + action: "MSG_CANCEL_UNBONDING_DELEGATION", + content: { + txHash: "0xcancelundelegationhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const getDelegationExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch delegation details for delegator address 'inj1...' and validator address 'injvaloper1...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegation details retrieved successfully.", + action: "GET_DELEGATION", + content: { + delegation: { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + shares: "1000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + }, + }, +]; + +export const getDelegatorsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all delegators for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegators retrieved successfully.", + action: "GET_DELEGATORS", + content: { + delegators: [ + { + delegation: { + delegatorAddress: "inj1delegator1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegators + ], + pagination: { + nextKey: "def456...", + total: "50", + }, + }, + }, + }, +]; + +export const getDelegatorsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely retrieve all delegators for validator 'injvaloper1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Delegators retrieved successfully (no-throw).", + action: "GET_DELEGATORS_NO_THROW", + content: { + delegators: [ + { + delegation: { + delegatorAddress: "inj1delegator1...", + validatorAddress: "injvaloper1...", + shares: "1000000.000000000000000000", + }, + balance: { + denom: "inj", + amount: "1000000000000000000", + }, + }, + // ...additional delegators + ], + pagination: { + nextKey: "def456...", + total: "50", + }, + }, + }, + }, +]; + +export const getUnbondingDelegationsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely retrieve unbonding delegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Unbonding delegations retrieved successfully (no-throw).", + action: "GET_UNBONDING_DELEGATIONS_NO_THROW", + content: { + unbondingDelegations: [ + { + delegatorAddress: "inj1...", + validatorAddress: "injvaloper1...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "1000000000000000000", + balance: "1000000000000000000", + }, + ], + }, + // ...additional unbonding delegations + ], + pagination: { + nextKey: "ghi789...", + total: "30", + }, + }, + }, + }, +]; + +export const getReDelegationsNoThrowExample = [ + { + user: "{{user1}}", + content: { + text: "Safely fetch redelegations for delegator address 'inj1...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Redelegations retrieved successfully (no-throw).", + action: "GET_REDELEGATIONS_NO_THROW", + content: { + redelegations: [ + { + delegatorAddress: "inj1...", + validatorSrcAddress: "injvaloper1...", + validatorDstAddress: "injvaloper2...", + entries: [ + { + creationHeight: "1000000", + completionTime: "1633446400", + initialBalance: "500000000000000000", + sharesDst: "500000.000000000000000000", + }, + ], + }, + // ...additional redelegations + ], + pagination: { + nextKey: "stu901...", + total: "40", + }, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/token-factory.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/token-factory.ts new file mode 100644 index 000000000000..fa95fd9bf78a --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/token-factory.ts @@ -0,0 +1,192 @@ +// ======================================= +// Token Factory Module +// ======================================= + +export const getDenomsFromCreatorExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all denominations created by creator address 'inj1creator...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denominations created by 'inj1creator...' retrieved successfully.", + action: "GET_DENOMS_FROM_CREATOR", + content: { + denoms: [ + "peggy0xabc...", + "peggy0xdef...", + "peggy0xghi...", + // ...additional denominations + ], + }, + }, + }, +]; + +export const getDenomAuthorityMetadataExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch authority metadata for denomination 'peggy0xabc...' created by 'inj1creator...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Authority metadata for denomination 'peggy0xabc...' retrieved successfully.", + action: "GET_DENOM_AUTHORITY_METADATA", + content: { + authorityMetadata: { + admin: "inj1admin...", + mintRestricted: false, + burnRestricted: true, + }, + }, + }, + }, +]; + +export const getTokenFactoryModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve Token Factory module parameters.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Token Factory module parameters retrieved successfully.", + action: "GET_TOKEN_FACTORY_MODULE_PARAMS", + content: { + mintDenom: "inj", + mintDenomMinAmount: "1000", + mintDenomMaxAmount: "1000000", + }, + }, + }, +]; + +export const getTokenFactoryModuleStateExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch current state of the Token Factory module.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Token Factory module state retrieved successfully.", + action: "GET_TOKEN_FACTORY_MODULE_STATE", + content: { + totalDenoms: 150, + activeDenoms: 145, + pausedDenoms: 5, + }, + }, + }, +]; + +export const msgBurnExample = [ + { + user: "{{user1}}", + content: { + text: "Burn 5000000 peggy0xabc... from sender address 'inj1sender...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Burn transaction submitted successfully.", + action: "MSG_BURN", + content: { + txHash: "0xburntxhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgChangeAdminExample = [ + { + user: "{{user1}}", + content: { + text: "Change admin of denomination 'peggy0xabc...' to new admin address 'inj1newadmin...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Admin change for denomination 'peggy0xabc...' submitted successfully.", + action: "MSG_CHANGE_ADMIN", + content: { + txHash: "0xchangeadminhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgCreateDenomExample = [ + { + user: "{{user1}}", + content: { + text: "Create a new denomination 'peggy0xjkl...' with sub-denomination 'subdenom'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination 'peggy0xjkl...' created successfully.", + action: "MSG_CREATE_DENOM", + content: { + txHash: "0xcreatedenomhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgMintExample = [ + { + user: "{{user1}}", + content: { + text: "Mint 10000000 peggy0xabc... to creator address 'inj1creator...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Mint transaction submitted successfully.", + action: "MSG_MINT", + content: { + txHash: "0xminttxhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgSetDenomMetadataExample = [ + { + user: "{{user1}}", + content: { + text: "Set metadata for denomination 'peggy0xabc...' with name 'Peggy Token', symbol 'PEG', description 'Peggy token description', and display denomination 'peg'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Denomination metadata for 'peggy0xabc...' set successfully.", + action: "MSG_SET_DENOM_METADATA", + content: { + txHash: "0xsetmetadatahash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/examples/wasm.ts b/packages/plugin-injective/injective-sdk-client-ts/src/examples/wasm.ts new file mode 100644 index 000000000000..02284db33ba3 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/examples/wasm.ts @@ -0,0 +1,608 @@ +// ======================================= +// WASM and WasmX Module +// ======================================= + +export const getWasmxModuleParamsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve WasmX module parameters.", + }, + }, + { + user: "{{agent}}", + content: { + text: "WasmX module parameters retrieved successfully.", + action: "GET_WASMX_MODULE_PARAMS", + content: { + params: { + is_execution_enabled: true, + registration_fee: { + denom: "inj", + amount: "100000000000000000000", + }, + max_begin_block_tx_gas: 1000000, + max_contract_gas_limit: 500000, + min_gas_price: "1000000000", + }, + }, + }, + }, +]; + +export const getWasmxModuleStateExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch current state of the WasmX module.", + }, + }, + { + user: "{{agent}}", + content: { + text: "WasmX module state retrieved successfully.", + action: "GET_WASMX_MODULE_STATE", + content: { + params: { + is_execution_enabled: true, + registration_fee: { + denom: "inj", + amount: "100000000000000000000", + }, + max_begin_block_tx_gas: 1000000, + max_contract_gas_limit: 500000, + min_gas_price: "1000000000", + }, + registered_contracts: [ + { + address: "inj1contract...", + gas_limit: 1000000, + gas_price: "1000000000", + is_executable: true, + code_id: 1, + }, + // ...additional registered contracts + ], + }, + }, + }, +]; + +export const getContractAccountsBalanceExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve contract accounts balance for contract address 'inj1contract...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract accounts balance retrieved successfully.", + action: "GET_CONTRACT_ACCOUNTS_BALANCE", + content: { + tokenInfo: { + name: "Example Token", + symbol: "EXT", + decimals: 18, + total_supply: "1000000000000000000000000", + mint: "inj1creator...", + }, + contractInfo: { + codeId: 1, + creator: "inj1creator...", + admin: "inj1admin...", + label: "Example Contract", + }, + marketingInfo: { + project: "Example Project", + description: "Example Description", + logo: { + url: "https://example.com/logo.png", + }, + marketing: "Example Marketing Info", + }, + contractAccountsBalance: [ + { + account: "inj1account...", + balance: "1000000000000000000", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "100", + }, + }, + }, + }, +]; + +export const getContractStateExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract state for contract address 'inj1contract...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract state retrieved successfully.", + action: "GET_CONTRACT_STATE", + content: { + tokenInfo: { + name: "Example Token", + symbol: "EXT", + decimals: 18, + total_supply: "1000000000000000000000000", + mint: "inj1creator...", + }, + contractInfo: { + codeId: 1, + creator: "inj1creator...", + admin: "inj1admin...", + label: "Example Contract", + }, + marketingInfo: { + project: "Example Project", + description: "Example Description", + logo: { + url: "https://example.com/logo.png", + }, + marketing: "Example Marketing Info", + }, + contractAccountsBalance: [ + { + account: "inj1account...", + balance: "1000000000000000000", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "100", + }, + }, + }, + }, +]; + +export const getContractInfoExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve contract information for contract address 'inj1contract...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract information retrieved successfully.", + action: "GET_CONTRACT_INFO", + content: { + codeId: 1, + creator: "inj1creator...", + admin: "inj1admin...", + label: "Example Contract", + created: { + blockHeight: 1000000, + txIndex: 0, + }, + ibcPortId: "wasm.1", + extension: { + typeUrl: "example", + value: "base64encodeddata", + }, + }, + }, + }, +]; + +export const getContractHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract history for contract address 'inj1contract...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract history retrieved successfully.", + action: "GET_CONTRACT_HISTORY", + content: { + entriesList: [ + { + operation: "CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT", + codeId: 1, + updated: { + blockHeight: 1000000, + txIndex: 0, + }, + msg: "base64encodeddata", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "10", + }, + }, + }, + }, +]; + +export const getSmartContractStateExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve smart contract state for contract address 'inj1contract...' with query { get_state: {} }.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Smart contract state retrieved successfully.", + action: "GET_SMART_CONTRACT_STATE", + content: { + // Contract-specific state data + state: { + key1: "value1", + key2: "value2", + // ...additional state data + }, + }, + }, + }, +]; + +export const getRawContractStateExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch raw contract state for contract address 'inj1contract...' with key 'base64encodedkey'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Raw contract state retrieved successfully.", + action: "GET_RAW_CONTRACT_STATE", + content: { + data: "base64encodedvalue", + }, + }, + }, +]; + +export const getContractCodesExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all contract codes with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract codes retrieved successfully.", + action: "GET_CONTRACT_CODES", + content: { + codeInfosList: [ + { + codeId: 1, + creator: "inj1creator...", + dataHash: "base64encodeddata", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "50", + }, + }, + }, + }, +]; + +export const getContractCodeExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract code for code ID 1.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract code retrieved successfully.", + action: "GET_CONTRACT_CODE", + content: { + codeInfo: { + codeId: 1, + creator: "inj1creator...", + dataHash: "base64encodeddata", + }, + data: "base64encodedwasmcode", + }, + }, + }, +]; + +export const getContractCodeContractsExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve all contracts for code ID 1 with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contracts for code ID 1 retrieved successfully.", + action: "GET_CONTRACT_CODE_CONTRACTS", + content: { + contractsList: ["inj1contract1...", "inj2contract2..."], + pagination: { + nextKey: "xyz789...", + total: "20", + }, + }, + }, + }, +]; + +export const msgStoreCodeExample = [ + { + user: "{{user1}}", + content: { + text: "Store new contract code with sender 'inj1sender...' and WASM bytecode 'base64encodedwasmcode'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract code stored successfully.", + action: "MSG_STORE_CODE", + content: { + txHash: "0xstorecodehash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgUpdateAdminExample = [ + { + user: "{{user1}}", + content: { + text: "Update admin of contract 'inj1contract...' to new admin address 'inj2newadmin...'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract admin updated successfully.", + action: "MSG_UPDATE_ADMIN", + content: { + txHash: "0xupdateadminhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgExecuteContractExample = [ + { + user: "{{user1}}", + content: { + text: "Execute contract 'inj2contract...' with message { execute: { action: 'transfer', amount: '1000000000000000000', recipient: 'inj3recipient...' } } and send funds [{ denom: 'inj', amount: '1000000000000000000' }].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract executed successfully.", + action: "MSG_EXECUTE_CONTRACT", + content: { + txHash: "0xexecutecontracthash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgMigrateContractExample = [ + { + user: "{{user1}}", + content: { + text: "Migrate contract 'inj2contract...' to new code ID 2 with migration message { migrate: { new_parameter: 'value' } }.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract migrated successfully.", + action: "MSG_MIGRATE_CONTRACT", + content: { + txHash: "0xmigratecontracthash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgInstantiateContractExample = [ + { + user: "{{user1}}", + content: { + text: "Instantiate contract with sender 'inj1sender...', admin 'inj2admin...', code ID 1, label 'Example Contract', instantiation message { name: 'Example Token', symbol: 'EXT', decimals: 18, initial_balances: [{ address: 'inj3address...', amount: '1000000000000000000000000' }] }, and send funds [{ denom: 'inj', amount: '1000000000000000000' }].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract instantiated successfully.", + action: "MSG_INSTANTIATE_CONTRACT", + content: { + txHash: "0xinstantiatecontracthash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgExecuteContractCompatExample = [ + { + user: "{{user1}}", + content: { + text: "Execute contract 'inj2contract...' in compatibility mode with message { send: { to: 'inj3recipient...', amount: '1000000000000000000' } } and send funds [{ denom: 'inj', amount: '1000000000000000000' }].", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract executed successfully in compatibility mode.", + action: "MSG_EXECUTE_CONTRACT_COMPAT", + content: { + txHash: "0xexecutecompathash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const msgPrivilegedExecuteContractExample = [ + { + user: "{{user1}}", + content: { + text: "Privileged execute contract 'inj2contract...' with message { privileged_action: { parameter: 'value' } }.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Privileged contract execution submitted successfully.", + action: "MSG_PRIVILEGED_EXECUTE_CONTRACT", + content: { + txHash: "0xprivilegedexecutehash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + success: true, + }, + }, + }, +]; + +export const getContractStateByKeyExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract state for contract address 'inj1contract...' with key 'base64encodedkey'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract state for key 'base64encodedkey' retrieved successfully.", + action: "GET_CONTRACT_STATE_BY_KEY", + content: { + data: "base64encodedvalue", + }, + }, + }, +]; + +export const getContractHistoryByOperationExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract history for contract address 'inj1contract...' with operation type 'Init'.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract history for operation type 'Init' retrieved successfully.", + action: "GET_CONTRACT_HISTORY_BY_OPERATION", + content: { + entries: [ + { + operation: "Init", + codeId: 1, + updated: { + blockHeight: 1000000, + txIndex: 0, + }, + msg: "base64encodeddata", + }, + ], + }, + }, + }, +]; + +export const getContractCodeHistoryExample = [ + { + user: "{{user1}}", + content: { + text: "Retrieve complete contract code history for contract address 'inj1contract...' with pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Complete contract code history retrieved successfully.", + action: "GET_CONTRACT_CODE_HISTORY", + content: { + history: [ + { + codeId: 1, + timeStamp: "2024-01-01T00:00:00Z", + operation: "Init", + msg: "base64encodeddata", + initiator: "inj1admin...", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "10", + }, + }, + }, + }, +]; + +export const getContractEventsExample = [ + { + user: "{{user1}}", + content: { + text: "Fetch contract events for contract address 'inj1contract...' with event type 'wasm' and pagination key 'abc123...', offset 0, limit 100, and count total.", + }, + }, + { + user: "{{agent}}", + content: { + text: "Contract events retrieved successfully.", + action: "GET_CONTRACT_EVENTS", + content: { + events: [ + { + type: "wasm", + attributes: [ + { + key: "action", + value: "transfer", + }, + { + key: "amount", + value: "1000000000000000000", + }, + ], + blockHeight: 1000000, + txHash: "0xeventtxhash123def456ghi789jkl012mno345pqr678stu901vwx234yz", + }, + ], + pagination: { + nextKey: "xyz789...", + total: "100", + }, + }, + }, + }, +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/GrpcException.ts b/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/GrpcException.ts new file mode 100644 index 000000000000..7f5f48cdc144 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/GrpcException.ts @@ -0,0 +1,24 @@ +import { + GeneralException, + UnspecifiedErrorCode, +} from "@injectivelabs/exceptions"; + +export class GrpcException extends GeneralException { + constructor( + error: Error | string, + public code = UnspecifiedErrorCode, + public contextModule?: string + ) { + super(error instanceof Error ? error : new Error(error)); + this.name = "GrpcException"; + } + + public toJSON() { + return { + name: this.name, + message: this.message, + code: this.code, + contextModule: this.contextModule, + }; + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/index.ts b/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/index.ts new file mode 100644 index 000000000000..d85ddc9ae63b --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/exceptions/index.ts @@ -0,0 +1 @@ +export * from "./GrpcException"; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/grpc/grpc-base.ts b/packages/plugin-injective/injective-sdk-client-ts/src/grpc/grpc-base.ts new file mode 100644 index 000000000000..6ee22177a52e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/grpc/grpc-base.ts @@ -0,0 +1,242 @@ +// We need to add the following: +// basically wrap rpc requests, query, and response +// TODO : Assert type safety for the requests +import { Network, getNetworkEndpoints } from "@injectivelabs/networks"; +//chain imports +import { + ChainGrpcAuctionApi, + ChainGrpcAuthApi, + ChainGrpcAuthZApi, + ChainGrpcBankApi, + ChainGrpcDistributionApi, + ChainGrpcExchangeApi, + ChainGrpcGovApi, + ChainGrpcIbcApi, + ChainGrpcInsuranceFundApi, + ChainGrpcMintApi, + ChainGrpcOracleApi, + ChainGrpcPeggyApi, + ChainGrpcPermissionsApi, + ChainGrpcStakingApi, + ChainGrpcTendermintApi, + ChainGrpcTokenFactoryApi, + ChainGrpcWasmApi, + ChainGrpcWasmXApi, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +//indexer imports +import { + IndexerGrpcAccountApi, + IndexerGrpcArchiverApi, + IndexerGrpcAuctionApi, + IndexerGrpcDerivativesApi, + IndexerGrpcExplorerApi, + IndexerGrpcInsuranceFundApi, + IndexerGrpcMitoApi, + IndexerGrpcOracleApi, + IndexerGrpcAccountPortfolioApi, + IndexerGrpcSpotApi, + IndexerGrpcTradingApi, + IndexerGrpcWeb3GwApi, +} from "@injectivelabs/sdk-ts"; +//minimal rest imports +import { + ChainRestAuthApi, + ChainRestTendermintApi, + getInjectiveAddress, + getEthereumAddress, +} from "@injectivelabs/sdk-ts"; + +export type RequestMethod = ( + request: TRequest +) => Promise; + +export interface GrpcRequestOptions { + method: RequestMethod; + params: TRequest; + endpoint?: string; +} + +export interface GrpcQueryOptions { + method: RequestMethod; + params: TRequest; + endpoint?: string; +} + +export class InjectiveGrpcBase { + protected readonly network: Network; + protected readonly endpoints: ReturnType; + //rest for auth + protected readonly chainRestAuthApi: ChainRestAuthApi; + protected readonly chainRestTendermintApi: ChainRestTendermintApi; + //add all chain grpc endpoints here + protected readonly chainGrpcAuctionApi: ChainGrpcAuctionApi; + protected readonly chainGrpcAuthApi: ChainGrpcAuthApi; + protected readonly chainGrpcAuthZApi: ChainGrpcAuthZApi; + protected readonly chainGrpcBankApi: ChainGrpcBankApi; + protected readonly chainGrpcDistributionApi: ChainGrpcDistributionApi; + protected readonly chainGrpcExchangeApi: ChainGrpcExchangeApi; + protected readonly chainGrpcGovApi: ChainGrpcGovApi; + protected readonly chainGrpcIbcApi: ChainGrpcIbcApi; + protected readonly chainGrpcInsuranceFundApi: ChainGrpcInsuranceFundApi; + protected readonly chainGrpcMintApi: ChainGrpcMintApi; + protected readonly chainGrpcOracleApi: ChainGrpcOracleApi; + protected readonly chainGrpcPeggyApi: ChainGrpcPeggyApi; + protected readonly chainGrpcPermissionsApi: ChainGrpcPermissionsApi; + protected readonly chainGrpcStakingApi: ChainGrpcStakingApi; + protected readonly chainGrpcTendermintApi: ChainGrpcTendermintApi; + protected readonly chainGrpcTokenFactoryApi: ChainGrpcTokenFactoryApi; + protected readonly chainGrpcWasmApi: ChainGrpcWasmApi; + protected readonly chainGrpcWasmXApi: ChainGrpcWasmXApi; + + //add all indexer grpc endpoints here + protected readonly indexerGrpcAuctionApi: IndexerGrpcAuctionApi; + //these are majorly exchange module's + protected readonly indexerGrpcDerivativesApi: IndexerGrpcDerivativesApi; + protected readonly indexerGrpcAccountApi: IndexerGrpcAccountApi; + protected readonly indexerGrpcAccountPortfolioApi: IndexerGrpcAccountPortfolioApi; + protected readonly indexerGrpcSpotApi: IndexerGrpcSpotApi; + protected readonly indexerGrpcInsuranceFundApi: IndexerGrpcInsuranceFundApi; + protected readonly indexerGrpcTradingApi: IndexerGrpcTradingApi; + protected readonly indexerGrpcArchiverApi: IndexerGrpcArchiverApi; + + //this is explorer import + protected readonly indexerGrpcExplorerApi: IndexerGrpcExplorerApi; + + protected readonly indexerGrpcMitoApi: IndexerGrpcMitoApi; + protected readonly indexerGrpcOracleApi: IndexerGrpcOracleApi; + protected readonly indexerGrpcWeb3GwApi: IndexerGrpcWeb3GwApi; + + protected readonly ethAddress: string; + protected readonly injAddress: string; + private privateKey: string; + protected msgBroadcaster!: MsgBroadcasterWithPk; + constructor( + protected readonly networkType: keyof typeof Network = "Mainnet", + protected readonly injectivePrivateKey: string, + protected readonly ethPublicKey?: string, + protected readonly injPublicKey?: string + ) { + this.network = Network[networkType]; + this.endpoints = getNetworkEndpoints(this.network); + //Initialize the broadcaster + + // Initialize Chain gRPCs + this.chainGrpcAuctionApi = new ChainGrpcAuctionApi(this.endpoints.grpc); + this.chainGrpcAuthApi = new ChainGrpcAuthApi(this.endpoints.grpc); + this.chainGrpcAuthZApi = new ChainGrpcAuthZApi(this.endpoints.grpc); + this.chainGrpcBankApi = new ChainGrpcBankApi(this.endpoints.grpc); + this.chainGrpcDistributionApi = new ChainGrpcDistributionApi( + this.endpoints.grpc + ); + this.chainGrpcExchangeApi = new ChainGrpcExchangeApi( + this.endpoints.grpc + ); + this.chainGrpcGovApi = new ChainGrpcGovApi(this.endpoints.grpc); + this.chainGrpcIbcApi = new ChainGrpcIbcApi(this.endpoints.grpc); + this.chainGrpcInsuranceFundApi = new ChainGrpcInsuranceFundApi( + this.endpoints.grpc + ); + this.chainGrpcMintApi = new ChainGrpcMintApi(this.endpoints.grpc); + this.chainGrpcOracleApi = new ChainGrpcOracleApi(this.endpoints.grpc); + this.chainGrpcPeggyApi = new ChainGrpcPeggyApi(this.endpoints.grpc); + this.chainGrpcPermissionsApi = new ChainGrpcPermissionsApi( + this.endpoints.grpc + ); + this.chainGrpcStakingApi = new ChainGrpcStakingApi(this.endpoints.grpc); + this.chainGrpcTendermintApi = new ChainGrpcTendermintApi( + this.endpoints.grpc + ); + this.chainGrpcTokenFactoryApi = new ChainGrpcTokenFactoryApi( + this.endpoints.grpc + ); + this.chainGrpcWasmApi = new ChainGrpcWasmApi(this.endpoints.grpc); + this.chainGrpcWasmXApi = new ChainGrpcWasmXApi(this.endpoints.grpc); + + // Initialize Indexer gRPCs + // All exchange related functions + this.indexerGrpcDerivativesApi = new IndexerGrpcDerivativesApi( + this.endpoints.indexer + ); + this.indexerGrpcAccountApi = new IndexerGrpcAccountApi( + this.endpoints.indexer + ); + this.indexerGrpcInsuranceFundApi = new IndexerGrpcInsuranceFundApi( + this.endpoints.indexer + ); + this.indexerGrpcAccountPortfolioApi = + new IndexerGrpcAccountPortfolioApi(this.endpoints.indexer); + this.indexerGrpcTradingApi = new IndexerGrpcTradingApi( + this.endpoints.indexer + ); + this.indexerGrpcSpotApi = new IndexerGrpcSpotApi( + this.endpoints.indexer + ); + // End of exchange functions + this.indexerGrpcArchiverApi = new IndexerGrpcArchiverApi( + this.endpoints.indexer + ); + this.indexerGrpcAuctionApi = new IndexerGrpcAuctionApi( + this.endpoints.indexer + ); + this.indexerGrpcExplorerApi = new IndexerGrpcExplorerApi( + this.endpoints.indexer + ); + //TODO: WARNING replace with testnet env, dont leave this hardcoded + const MITO_API_ENDPOINT = + "https://k8s.mainnet.mito.grpc-web.injective.network"; + this.indexerGrpcMitoApi = new IndexerGrpcMitoApi(MITO_API_ENDPOINT); + this.indexerGrpcOracleApi = new IndexerGrpcOracleApi( + this.endpoints.indexer + ); + this.indexerGrpcWeb3GwApi = new IndexerGrpcWeb3GwApi( + this.endpoints.indexer + ); + + // Minimal REST endpoint - TODO: need to move this into REST client + + this.chainRestAuthApi = new ChainRestAuthApi(this.endpoints.rest); + this.chainRestTendermintApi = new ChainRestTendermintApi( + this.endpoints.rest + ); + + // Initialize EthAddress and InjAddress + this.ethAddress = + ethPublicKey || + (injPublicKey ? getEthereumAddress(injPublicKey) : ""); + + this.injAddress = + injPublicKey || + (ethPublicKey ? getInjectiveAddress(ethPublicKey) : ""); + + this.privateKey = injectivePrivateKey; + + this.msgBroadcaster = new MsgBroadcasterWithPk({ + network: this.network, + privateKey: this.privateKey, + }); + } + /** + * Get network configuration + * @returns Current network endpoints + */ + protected getNetworkConfig() { + return { + network: this.network, + endpoints: this.endpoints, + }; + } + + /** + * Check if the connection is alive + * @returns Promise resolving to boolean indicating connection status + */ + protected async isConnectionAlive(): Promise { + try { + await this.chainGrpcAuthApi.fetchModuleParams(); + return true; + } catch { + return false; + } + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/Ibc.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/Ibc.ts new file mode 100644 index 000000000000..6b990c78b1ea --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/Ibc.ts @@ -0,0 +1,78 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base.js"; +import { PaginationOption } from "@injectivelabs/ts-types"; +import { MsgTransfer, TxResponse } from "@injectivelabs/sdk-ts"; +import * as IBCTypes from "../types/ibc"; // Assuming IBC types are in ibc.ts +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * IBC Module Chain GRPC Async Functions with Error Handling + */ + +/** + * Fetches the denomination trace for a specific hash. + * + * @this InjectiveGrpcBase + * @param {IBCTypes.GetDenomTraceParams} params - Parameters including the denomination hash. + * @returns {Promise} The standard response containing the denomination trace or an error. + */ +export async function getDenomTrace( + this: InjectiveGrpcBase, + params: IBCTypes.GetDenomTraceParams +): Promise { + try { + const result = await this.chainGrpcIbcApi.fetchDenomTrace(params.hash); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomTraceError", err); + } +} + +/** + * Fetches a list of denomination traces with optional pagination. + * + * @this InjectiveGrpcBase + * @param {IBCTypes.GetDenomsTraceParams} [params] - Optional parameters including pagination options. + * @returns {Promise} The standard response containing a list of denomination traces or an error. + */ +export async function getDenomsTrace( + this: InjectiveGrpcBase, + params: IBCTypes.GetDenomsTraceParams +): Promise { + try { + const result = await this.chainGrpcIbcApi.fetchDenomsTrace( + params.pagination + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomsTraceError", err); + } +} + +/** + * Broadcasts an IBC transfer message. + * + * @this InjectiveGrpcBase + * @param {IBCTypes.MsgIBCTransferParams} params - Parameters to perform the IBC transfer. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgIBCTransfer( + this: InjectiveGrpcBase, + params: IBCTypes.MsgIBCTransferParams +): Promise { + try { + const msg = MsgTransfer.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgIBCTransferError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/auction.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/auction.ts new file mode 100644 index 000000000000..8b0454acfcbd --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/auction.ts @@ -0,0 +1,128 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { MsgBid } from "@injectivelabs/sdk-ts"; +import * as AuctionTypes from "../types/auction"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; +import { INJ_DENOM } from "@injectivelabs/utils"; + +/** + * Fetches the auction module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getAuctionModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = this.chainGrpcAuctionApi.fetchModuleParams(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAuctionModuleParamsError", err); + } +} + +/** + * Fetches the auction module state. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module state or an error. + */ +export async function getAuctionModuleState( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcAuctionApi.fetchModuleState(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAuctionModuleStateError", err); + } +} + +/** + * Fetches the current auction basket. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing the current basket or an error. + */ +export async function getCurrentBasket( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcAuctionApi.fetchCurrentBasket(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getCurrentBasketError", err); + } +} + +/** + * Fetches details of a specific auction round. + * + * @this InjectiveGrpcBase + * @param {AuctionTypes.GetAuctionRoundParams} params - Parameters including the auction round number. + * @returns {Promise} The standard response containing auction round details or an error. + */ +export async function getAuctionRound( + this: InjectiveGrpcBase, + params: AuctionTypes.GetAuctionRoundParams +): Promise { + try { + const result = await this.indexerGrpcAuctionApi.fetchAuction( + params.round + ); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAuctionRoundError", err); + } +} + +/** + * Fetches a list of auctions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {AuctionTypes.GetAuctionsParams} params - Parameters to filter auctions. + * @returns {Promise} The standard response containing a list of auctions or an error. + */ +export async function getAuctions( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.indexerGrpcAuctionApi.fetchAuctions(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAuctionsError", err); + } +} + +/** + * Places a bid in an auction round. + * + * @this InjectiveGrpcBase + * @param {AuctionTypes.MsgBidRequestParams} params - Parameters including round number and bid amount. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgBid( + this: InjectiveGrpcBase, + params: AuctionTypes.MsgBidRequestParams +): Promise { + try { + const amount = { denom: INJ_DENOM, amount: params.amount }; + const msg = MsgBid.fromJSON({ + round: params.round, + injectiveAddress: this.injAddress, + amount: amount, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBidError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/auth.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/auth.ts new file mode 100644 index 000000000000..9ea8258a638e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/auth.ts @@ -0,0 +1,61 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types"; + +/** + * Fetches the authentication module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getAuthModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcAuthApi.fetchModuleParams(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAuthModuleParamsError", err); + } +} + +/** + * Fetches the details of the current account. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing account details or an error. + */ +export async function getAccountDetails( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcAuthApi.fetchAccount( + this.injAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAccountDetailsError", err); + } +} + +/** + * Fetches all accounts associated with the current address. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing all accounts or an error. + */ +export async function getAccounts( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcAuthApi.fetchAccounts(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAccountsError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/authz.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/authz.ts new file mode 100644 index 000000000000..f6c1379f2585 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/authz.ts @@ -0,0 +1,141 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { MsgGrant, MsgRevoke, MsgAuthzExec } from "@injectivelabs/sdk-ts"; +import * as AuthzTypes from "../types/auth"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches all grants based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.GetGrantsParams} params - Parameters to filter grants. + * @returns {Promise} The standard response containing grants or an error. + */ +export async function getGrants( + this: InjectiveGrpcBase, + params: AuthzTypes.GetGrantsParams +): Promise { + try { + const result = await this.chainGrpcAuthZApi.fetchGrants(params); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getGrantsError", err); + } +} + +/** + * Fetches all grants granted by a specific granter. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.GetGranterGrantsParams} params - Parameters including the granter's address. + * @returns {Promise} The standard response containing grants or an error. + */ +export async function getGranterGrants( + this: InjectiveGrpcBase, + params: AuthzTypes.GetGranterGrantsParams +): Promise { + try { + const result = await this.chainGrpcAuthZApi.fetchGranterGrants( + params.granter + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getGranterGrantsError", err); + } +} + +/** + * Fetches all grants received by a specific grantee. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.GetGranteeGrantsParams} params - Parameters including the grantee's address. + * @returns {Promise} The standard response containing grants or an error. + */ +export async function getGranteeGrants( + this: InjectiveGrpcBase, + params: AuthzTypes.GetGranteeGrantsParams +): Promise { + try { + const result = await this.chainGrpcAuthZApi.fetchGranteeGrants( + params.grantee + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getGranteeGrantsError", err); + } +} + +/** + * Grants authorization to a grantee to perform specific actions on behalf of the granter. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.MsgGrantParams} params - Parameters including message type, grantee, and granter. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgGrant( + this: InjectiveGrpcBase, + params: AuthzTypes.MsgGrantParams +): Promise { + try { + const msg = MsgGrant.fromJSON({ + messageType: params.messageType, + grantee: params.grantee, + granter: params.granter, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgGrantError", err); + } +} + +/** + * Executes authorized messages on behalf of the grantee. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.MsgAuthzExecParams} params - Parameters including grantee and messages to execute. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgExec( + this: InjectiveGrpcBase, + params: AuthzTypes.MsgAuthzExecParams +): Promise { + try { + const msg = MsgAuthzExec.fromJSON({ + grantee: params.grantee, + msgs: params.msgs, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgExecError", err); + } +} + +/** + * Revokes previously granted authorizations from a grantee. + * + * @this InjectiveGrpcBase + * @param {AuthzTypes.MsgRevokeParams} params - Parameters including message type, grantee, and granter. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgRevoke( + this: InjectiveGrpcBase, + params: AuthzTypes.MsgRevokeParams +): Promise { + try { + const msg = MsgRevoke.fromJSON({ + messageType: params.messageType, + grantee: params.grantee, + granter: params.granter, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgRevokeError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/bank.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/bank.ts new file mode 100644 index 000000000000..cf6af2dc3fdc --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/bank.ts @@ -0,0 +1,232 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { MsgSend, MsgMultiSend } from "@injectivelabs/sdk-ts"; +import * as BankTypes from "../types/bank"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +// Bank Module Chain GRPC Async Functions with Error Handling + +/** + * Fetches the bank module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getBankModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchModuleParams(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBankModuleParamsError", err); + } +} + +/** + * Fetches the balance of a specific account. + * + * @this InjectiveGrpcBase + * @param {BankTypes.GetBankBalanceParams} params - Parameters including account address. + * @returns {Promise} The standard response containing the balance or an error. + */ +export async function getBankBalance( + this: InjectiveGrpcBase, + params: BankTypes.GetBankBalanceParams +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchBalance({ + ...params, + accountAddress: this.injAddress, + }); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBankBalanceError", err); + } +} + +/** + * Fetches all balances for the current account. + * + * @this InjectiveGrpcBase + * @param {BankTypes.GetBankBalancesParams} params - Parameters including account identifier. + * @returns {Promise} The standard response containing all balances or an error. + */ +export async function getBankBalances( + this: InjectiveGrpcBase, + params: BankTypes.GetBankBalancesParams +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchBalances( + this.injAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBankBalancesError", err); + } +} + +/** + * Fetches the total supply of all denominations. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing total supply or an error. + */ +export async function getTotalSupply( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchTotalSupply(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTotalSupplyError", err); + } +} + +/** + * Fetches the total supply for all denominations. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing all total supplies or an error. + */ +export async function getAllTotalSupply( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchAllTotalSupply(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAllTotalSupplyError", err); + } +} + +/** + * Fetches the supply of a specific denomination. + * + * @this InjectiveGrpcBase + * @param {BankTypes.GetSupplyOfParams} params - Parameters including denomination. + * @returns {Promise} The standard response containing the supply or an error. + */ +export async function getSupplyOf( + this: InjectiveGrpcBase, + params: BankTypes.GetSupplyOfParams +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchSupplyOf(params.denom); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSupplyOfError", err); + } +} + +/** + * Fetches metadata for all denominations. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing denomination metadata or an error. + */ +export async function getDenomsMetadata( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchDenomsMetadata(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomsMetadataError", err); + } +} + +/** + * Fetches metadata for a specific denomination. + * + * @this InjectiveGrpcBase + * @param {BankTypes.GetDenomMetadataParams} params - Parameters including denomination. + * @returns {Promise} The standard response containing denomination metadata or an error. + */ +export async function getDenomMetadata( + this: InjectiveGrpcBase, + params: BankTypes.GetDenomMetadataParams +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchDenomMetadata( + params.denom + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomMetadataError", err); + } +} + +/** + * Fetches the owners of a specific denomination. + * + * @this InjectiveGrpcBase + * @param {BankTypes.GetDenomOwnersParams} params - Parameters including denomination. + * @returns {Promise} The standard response containing denomination owners or an error. + */ +export async function getDenomOwners( + this: InjectiveGrpcBase, + params: BankTypes.GetDenomOwnersParams +): Promise { + try { + const result = await this.chainGrpcBankApi.fetchDenomOwners( + params.denom + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomOwnersError", err); + } +} + +/** + * Sends tokens from one account to another. + * + * @this InjectiveGrpcBase + * @param {BankTypes.MsgSendParams} params - Parameters including sender, receiver, and amount. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSend( + this: InjectiveGrpcBase, + params: BankTypes.MsgSendParams +): Promise { + try { + const msg = MsgSend.fromJSON({ + amount: params.amount, + srcInjectiveAddress: params.srcInjectiveAddress, + dstInjectiveAddress: params.dstInjectiveAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSendError", err); + } +} + +/** + * Sends tokens from multiple senders to multiple receivers. + * + * @this InjectiveGrpcBase + * @param {BankTypes.MsgMultiSendParams} params - Parameters including inputs and outputs. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgMultiSend( + this: InjectiveGrpcBase, + params: BankTypes.MsgMultiSendParams +): Promise { + try { + const msg = MsgMultiSend.fromJSON({ + inputs: params.inputs, + outputs: params.outputs, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgMultiSendError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/distribution.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/distribution.ts new file mode 100644 index 000000000000..8c1d740f3392 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/distribution.ts @@ -0,0 +1,173 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgWithdrawDelegatorReward, + MsgWithdrawValidatorCommission, +} from "@injectivelabs/sdk-ts"; +import * as DistributionTypes from "../types/distribution"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +// Distribution Module Async Functions with Error Handling + +/** + * Fetches the distribution module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getDistributionModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcDistributionApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDistributionModuleParamsError", err); + } +} + +/** + * Fetches the delegator rewards for a specific validator. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.GetDelegatorRewardsForValidatorParams} params - Parameters including delegator and validator addresses. + * @returns {Promise} The standard response containing delegator rewards or an error. + */ +export async function getDelegatorRewardsForValidator( + this: InjectiveGrpcBase, + params: DistributionTypes.GetDelegatorRewardsForValidatorParams +): Promise { + try { + const result = + await this.chainGrpcDistributionApi.fetchDelegatorRewardsForValidator( + { + delegatorAddress: params.delegatorAddress, + validatorAddress: params.validatorAddress, + } + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegatorRewardsForValidatorError", err); + } +} + +/** + * Fetches the delegator rewards for a specific validator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.GetDelegatorRewardsForValidatorParams} params - Parameters including delegator and validator addresses. + * @returns {Promise} The standard response containing delegator rewards or an error. + */ +export async function getDelegatorRewardsForValidatorNoThrow( + this: InjectiveGrpcBase, + params: DistributionTypes.GetDelegatorRewardsForValidatorParams +): Promise { + try { + const result = + await this.chainGrpcDistributionApi.fetchDelegatorRewardsForValidatorNoThrow( + { + delegatorAddress: params.delegatorAddress, + validatorAddress: params.validatorAddress, + } + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getDelegatorRewardsForValidatorNoThrowError", + err + ); + } +} + +/** + * Fetches the rewards for a delegator. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.GetDelegatorRewardsParams} params - Parameters including the delegator's Injective address. + * @returns {Promise} The standard response containing delegator rewards or an error. + */ +export async function getDelegatorRewards( + this: InjectiveGrpcBase, + params: DistributionTypes.GetDelegatorRewardsParams +): Promise { + try { + const result = + await this.chainGrpcDistributionApi.fetchDelegatorRewards( + params.injectiveAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegatorRewardsError", err); + } +} + +/** + * Fetches the rewards for a delegator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.GetDelegatorRewardsParams} params - Parameters including the delegator's Injective address. + * @returns {Promise} The standard response containing delegator rewards or an error. + */ +export async function getDelegatorRewardsNoThrow( + this: InjectiveGrpcBase, + params: DistributionTypes.GetDelegatorRewardsParams +): Promise { + try { + const result = + await this.chainGrpcDistributionApi.fetchDelegatorRewardsNoThrow( + params.injectiveAddress + ); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegatorRewardsNoThrowError", err); + } +} + +/** + * Broadcasts a message to withdraw delegator rewards. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.MsgWithdrawDelegatorRewardParams} params - Parameters including delegator and validator addresses. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgWithdrawDelegatorReward( + this: InjectiveGrpcBase, + params: DistributionTypes.MsgWithdrawDelegatorRewardParams +): Promise { + try { + const msg = MsgWithdrawDelegatorReward.fromJSON({ + delegatorAddress: params.delegatorAddress, + validatorAddress: params.validatorAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgWithdrawDelegatorRewardError", err); + } +} + +/** + * Broadcasts a message to withdraw validator commission. + * + * @this InjectiveGrpcBase + * @param {DistributionTypes.MsgWithdrawValidatorCommissionParams} params - Parameters including the validator's address. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgWithdrawValidatorCommission( + this: InjectiveGrpcBase, + params: DistributionTypes.MsgWithdrawValidatorCommissionParams +): Promise { + try { + const msg = MsgWithdrawValidatorCommission.fromJSON({ + validatorAddress: params.validatorAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgWithdrawValidatorCommissionError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/exchange.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/exchange.ts new file mode 100644 index 000000000000..014a8296bb8b --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/exchange.ts @@ -0,0 +1,1679 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + BinaryOptionsMarket, + DerivativeLimitOrder, + DerivativeOrderHistory, + Position, + PositionV2, + DerivativeTrade, + FundingPayment, + FundingRate, + ExchangePagination, + SubaccountTransfer, + SpotLimitOrder, + SpotOrderHistory, + SpotTrade, + AtomicSwap, + MsgAdminUpdateBinaryOptionsMarket, + MsgBatchCancelBinaryOptionsOrders, + MsgBatchCancelDerivativeOrders, + MsgBatchCancelSpotOrders, + MsgBatchUpdateOrders, + MsgCancelBinaryOptionsOrder, + MsgCancelDerivativeOrder, + MsgCancelSpotOrder, + MsgCreateBinaryOptionsLimitOrder, + MsgCreateBinaryOptionsMarketOrder, + MsgCreateDerivativeLimitOrder, + MsgCreateDerivativeMarketOrder, + MsgCreateSpotLimitOrder, + MsgCreateSpotMarketOrder, + MsgDeposit, + MsgIncreasePositionMargin, + MsgInstantSpotMarketLaunch, + MsgLiquidatePosition, + MsgReclaimLockedFunds, + MsgRewardsOptOut, + MsgSignData, + MsgWithdraw, + MsgExternalTransfer, +} from "@injectivelabs/sdk-ts"; +import * as ExchangeTypes from "../types/exchange"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Exchange Module Chain GRPC Async Functions with Error Handling + */ + +/** + * Fetches the exchange module parameters. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetModuleParamsParams} [params] - Optional parameters to filter module parameters. + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getModuleParams( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetModuleParamsParams +): Promise { + try { + const result = await this.chainGrpcExchangeApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getModuleParamsError", err); + } +} + +/** + * Fetches the current state of the exchange module. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetModuleStateParams} [params] - Optional parameters to filter module state. + * @returns {Promise} The standard response containing module state or an error. + */ +export async function getModuleState( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetModuleStateParams +): Promise { + try { + const result = await this.chainGrpcExchangeApi.fetchModuleState(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getModuleStateError", err); + } +} + +/** + * Fetches the fee discount schedule. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetFeeDiscountScheduleParams} [params] - Optional parameters to filter fee discount schedule. + * @returns {Promise} The standard response containing fee discount schedule or an error. + */ +export async function getFeeDiscountSchedule( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetFeeDiscountScheduleParams +): Promise { + try { + const result = + await this.chainGrpcExchangeApi.fetchFeeDiscountSchedule(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getFeeDiscountScheduleError", err); + } +} + +/** + * Fetches the fee discount account information for a specific Injective address. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetFeeDiscountAccountInfoParams} params - Parameters including the Injective address. + * @returns {Promise} The standard response containing fee discount account info or an error. + */ +export async function getFeeDiscountAccountInfo( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetFeeDiscountAccountInfoParams +): Promise { + try { + const result = + await this.chainGrpcExchangeApi.fetchFeeDiscountAccountInfo( + params.injAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getFeeDiscountAccountInfoError", err); + } +} + +/** + * Fetches the trading rewards campaign details. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetTradingRewardsCampaignParams} [params] - Optional parameters to filter trading rewards campaign. + * @returns {Promise} The standard response containing trading rewards campaign details or an error. + */ +export async function getTradingRewardsCampaign( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetTradingRewardsCampaignParams +): Promise { + try { + const result = + await this.chainGrpcExchangeApi.fetchTradingRewardsCampaign(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTradingRewardsCampaignError", err); + } +} + +/** + * Fetches the trade reward points for specified Injective addresses. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetTradeRewardPointsParams} params - Parameters including Injective addresses. + * @returns {Promise} The standard response containing trade reward points or an error. + */ +export async function getTradeRewardPoints( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetTradeRewardPointsParams +): Promise { + try { + const result = await this.chainGrpcExchangeApi.fetchTradeRewardPoints( + params.injectiveAddresses + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTradeRewardPointsError", err); + } +} + +/** + * Fetches the pending trade reward points for specified Injective addresses. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetPendingTradeRewardPointsParams} params - Parameters including Injective addresses. + * @returns {Promise} The standard response containing pending trade reward points or an error. + */ +export async function getPendingTradeRewardPoints( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetPendingTradeRewardPointsParams +): Promise { + try { + const result = + await this.chainGrpcExchangeApi.fetchPendingTradeRewardPoints( + params.injectiveAddresses + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPendingTradeRewardPointsError", err); + } +} + +/** + * Fetches the exchange positions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.getPositionsParams} [params] - Optional parameters to filter exchange positions. + * @returns {Promise} The standard response containing exchange positions or an error. + */ +export async function getExchangePositions( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetExchangePositionsParams +): Promise { + try { + const result = await this.chainGrpcExchangeApi.fetchPositions(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPositionsError", err); + } +} + +/** + * Fetches the trade nonce for a specific subaccount. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSubaccountTradeNonceParams} params - Parameters including the subaccount ID. + * @returns {Promise} The standard response containing trade nonce or an error. + */ +export async function getSubaccountTradeNonce( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSubaccountTradeNonceParams +): Promise { + try { + const result = + await this.chainGrpcExchangeApi.fetchSubaccountTradeNonce( + params.subaccountId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSubaccountTradeNonceError", err); + } +} + +/** + * Checks if an account is opted out of rewards. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetIsOptedOutOfRewardsParams} params - Parameters including the account address. + * @returns {Promise} The standard response indicating opt-out status or an error. + */ +export async function getIsOptedOutOfRewards( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetIsOptedOutOfRewardsParams +): Promise { + try { + const result = await this.chainGrpcExchangeApi.fetchIsOptedOutOfRewards( + params.account + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIsOptedOutOfRewardsError", err); + } +} + +/** + * Fetches all derivative markets. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeMarketsParams} [params] - Optional parameters to filter derivative markets. + * @returns {Promise} The standard response containing derivative markets or an error. + */ +export async function getDerivativeMarkets( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetDerivativeMarketsParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchMarkets( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeMarketsError", err); + } +} + +/** + * Fetches a specific derivative market by its ID. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeMarketParams} params - Parameters including the market ID. + * @returns {Promise} The standard response containing derivative market details or an error. + */ +export async function getDerivativeMarket( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetDerivativeMarketParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchMarket( + params.marketId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeMarketError", err); + } +} + +/** + * Fetches all binary options markets. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetBinaryOptionsMarketsParams} [params] - Optional parameters to filter binary options markets. + * @returns {Promise} The standard response containing binary options markets or an error. + */ +export async function getBinaryOptionsMarkets( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetBinaryOptionsMarketsParams +): Promise { + try { + const result = + await this.indexerGrpcDerivativesApi.fetchBinaryOptionsMarkets( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBinaryOptionsMarketsError", err); + } +} + +/** + * Fetches a specific binary options market by its ID. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetBinaryOptionsMarketParams} params - Parameters including the market ID. + * @returns {Promise} The standard response containing binary options market details or an error. + */ +export async function getBinaryOptionsMarket( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetBinaryOptionsMarketParams +): Promise { + try { + const result = + await this.indexerGrpcDerivativesApi.fetchBinaryOptionsMarket( + params.marketId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBinaryOptionsMarketError", err); + } +} + +/** + * Fetches all derivative orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeOrdersParams} [params] - Optional parameters to filter derivative orders. + * @returns {Promise} The standard response containing derivative orders or an error. + */ +export async function getDerivativeOrders( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetDerivativeOrdersParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchOrders( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeOrdersError", err); + } +} + +/** + * Fetches the history of derivative orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeOrderHistoryParams} [params] - Optional parameters to filter derivative order history. + * @returns {Promise} The standard response containing derivative order history or an error. + */ +export async function getDerivativeOrderHistory( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetDerivativeOrderHistoryParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchOrderHistory( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeOrderHistoryError", err); + } +} + +/** + * Fetches all positions. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetPositionsParams} [params] - Optional parameters to filter positions. + * @returns {Promise} The standard response containing positions or an error. + */ +export async function getPositionsList( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetPositionsParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchPositions( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPositionsListError", err); + } +} + +/** + * Fetches all positions version 2. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetPositionsV2Params} [params] - Optional parameters to filter positions version 2. + * @returns {Promise} The standard response containing positions version 2 or an error. + */ +export async function getPositionsV2( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetPositionsV2Params +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchPositionsV2( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPositionsV2Error", err); + } +} + +/** + * Fetches all derivative trades. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeTradesParams} [params] - Optional parameters to filter derivative trades. + * @returns {Promise} The standard response containing derivative trades or an error. + */ +export async function getDerivativeTrades( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetDerivativeTradesParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchTrades( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeTradesError", err); + } +} + +/** + * Fetches all funding payments. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetFundingPaymentsParams} [params] - Optional parameters to filter funding payments. + * @returns {Promise} The standard response containing funding payments or an error. + */ +export async function getFundingPayments( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetFundingPaymentsParams +): Promise { + try { + const result = + await this.indexerGrpcDerivativesApi.fetchFundingPayments( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getFundingPaymentsError", err); + } +} + +/** + * Fetches all funding rates. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetFundingRatesParams} [params] - Optional parameters to filter funding rates. + * @returns {Promise} The standard response containing funding rates or an error. + */ +export async function getFundingRates( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetFundingRatesParams +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchFundingRates( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getFundingRatesError", err); + } +} + +/** + * Fetches the list of derivative subaccount orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeSubaccountOrdersListParams} [params] - Optional parameters to filter subaccount orders. + * @returns {Promise} The standard response containing subaccount orders or an error. + */ +export async function getDerivativeSubaccountOrdersList( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetDerivativeSubaccountOrdersListParams +): Promise { + try { + const result = + await this.indexerGrpcDerivativesApi.fetchSubaccountOrdersList( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getDerivativeSubaccountOrdersListError", + err + ); + } +} + +/** + * Fetches the list of derivative subaccount trades. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeSubaccountTradesListParams} params - Parameters to filter subaccount trades. + * @returns {Promise} The standard response containing subaccount trades or an error. + */ +export async function getDerivativeSubaccountTradesList( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetDerivativeSubaccountTradesListParams +): Promise { + try { + const result = + await this.indexerGrpcDerivativesApi.fetchSubaccountTradesList( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getDerivativeSubaccountTradesListError", + err + ); + } +} + +/** + * Fetches the orderbooks version 2 for specified market IDs. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeOrderbooksV2Params} params - Parameters including market IDs. + * @returns {Promise<{ + * marketId: string; + * orderbook: OrderbookWithSequence; + * }[] | StandardResponse>} The standard response containing orderbooks or an error. + */ +export async function getDerivativeOrderbooksV2( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetDerivativeOrderbooksV2Params +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchOrderbooksV2( + params.marketIds + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeOrderbooksV2Error", err); + } +} + +/** + * Fetches the orderbook version 2 for a specific market ID. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDerivativeOrderbookV2Params} params - Parameters including the market ID. + * @returns {Promise} The standard response containing the orderbook or an error. + */ +export async function getDerivativeOrderbookV2( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetDerivativeOrderbookV2Params +): Promise { + try { + const result = await this.indexerGrpcDerivativesApi.fetchOrderbookV2( + params.marketId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDerivativeOrderbookV2Error", err); + } +} + +/** + * Fetches the rewards for specified Injective addresses. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetRewardsParams} params - Parameters including Injective addresses. + * @returns {Promise} The standard response containing rewards or an error. + */ +export async function getRewards( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetRewardsParams +): Promise { + try { + const result = await this.indexerGrpcAccountApi.fetchRewards(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getRewardsError", err); + } +} + +/** + * Fetches the list of subaccounts for a specific address. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSubaccountsListParams} params - Parameters including the account address. + * @returns {Promise} The standard response containing subaccounts list or an error. + */ +export async function getSubaccountsList( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSubaccountsListParams +): Promise { + try { + const result = await this.indexerGrpcAccountApi.fetchSubaccountsList( + params.address + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSubaccountsListError", err); + } +} + +/** + * Fetches the balances list for a specific subaccount. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSubaccountBalancesListParams} params - Parameters including the subaccount ID. + * @returns {Promise} The standard response containing subaccount balances list or an error. + */ +export async function getSubaccountBalancesList( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSubaccountBalancesListParams +): Promise { + try { + const result = + await this.indexerGrpcAccountApi.fetchSubaccountBalancesList( + params.subaccountId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSubaccountBalancesListError", err); + } +} + +/** + * Fetches the history of a specific subaccount. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSubaccountHistoryParams} params - Parameters including subaccount details. + * @returns {Promise} The standard response containing subaccount history or an error. + */ +export async function getSubaccountHistory( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSubaccountHistoryParams +): Promise { + try { + const result = + await this.indexerGrpcAccountApi.fetchSubaccountHistory(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSubaccountHistoryError", err); + } +} + +/** + * Fetches the order summary for a specific subaccount. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSubaccountOrderSummaryParams} params - Parameters including subaccount details. + * @returns {Promise} The standard response containing subaccount order summary or an error. + */ +export async function getSubaccountOrderSummary( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSubaccountOrderSummaryParams +): Promise { + try { + const result = + await this.indexerGrpcAccountApi.fetchSubaccountOrderSummary( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSubaccountOrderSummaryError", err); + } +} + +/** + * Fetches the states of orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetOrderStatesParams} [params] - Optional parameters to filter order states. + * @returns {Promise} The standard response containing order states or an error. + */ +export async function getOrderStates( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetOrderStatesParams +): Promise { + try { + const result = await this.indexerGrpcAccountApi.fetchOrderStates( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getOrderStatesError", err); + } +} + +/** + * Fetches the account portfolio for a specific address. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetAccountPortfolioParams} params - Parameters including the account address. + * @returns {Promise} The standard response containing account portfolio or an error. + */ +export async function getAccountPortfolio( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetAccountPortfolioParams +): Promise { + try { + const result = + await this.indexerGrpcAccountPortfolioApi.fetchAccountPortfolio( + params.address + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAccountPortfolioError", err); + } +} + +/** + * Fetches the balances of the account portfolio for a specific address. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetAccountPortfolioBalancesParams} params - Parameters including the account address. + * @returns {Promise} The standard response containing account portfolio balances or an error. + */ +export async function getAccountPortfolioBalances( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetAccountPortfolioBalancesParams +): Promise { + try { + const result = + await this.indexerGrpcAccountPortfolioApi.fetchAccountPortfolioBalances( + params.address + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAccountPortfolioBalancesError", err); + } +} + +/** + * Fetches all spot markets. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotMarketsParams} [params] - Optional parameters to filter spot markets. + * @returns {Promise} The standard response containing spot markets or an error. + */ +export async function getSpotMarkets( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotMarketsParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchMarkets(params || {}); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotMarketsError", err); + } +} + +/** + * Fetches a specific spot market by its ID. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotMarketParams} params - Parameters including the market ID. + * @returns {Promise} The standard response containing spot market details or an error. + */ +export async function getSpotMarket( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSpotMarketParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchMarket( + params.marketId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotMarketError", err); + } +} + +/** + * Fetches all spot orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotOrdersParams} [params] - Optional parameters to filter spot orders. + * @returns {Promise} The standard response containing spot orders or an error. + */ +export async function getSpotOrders( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotOrdersParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchOrders(params || {}); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotOrdersError", err); + } +} + +/** + * Fetches the history of spot orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotOrderHistoryParams} [params] - Optional parameters to filter spot order history. + * @returns {Promise} The standard response containing spot order history or an error. + */ +export async function getSpotOrderHistory( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotOrderHistoryParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchOrderHistory( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotOrderHistoryError", err); + } +} + +/** + * Fetches all spot trades. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotTradesParams} [params] - Optional parameters to filter spot trades. + * @returns {Promise} The standard response containing spot trades or an error. + */ +export async function getSpotTrades( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotTradesParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchTrades(params || {}); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotTradesError", err); + } +} + +/** + * Fetches the list of spot subaccount orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotSubaccountOrdersListParams} [params] - Optional parameters to filter spot subaccount orders. + * @returns {Promise} The standard response containing spot subaccount orders or an error. + */ +export async function getSpotSubaccountOrdersList( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotSubaccountOrdersListParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchSubaccountOrdersList( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotSubaccountOrdersListError", err); + } +} + +/** + * Fetches the list of spot subaccount trades. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotSubaccountTradesListParams} [params] - Optional parameters to filter spot subaccount trades. + * @returns {Promise} The standard response containing spot subaccount trades or an error. + */ +export async function getSpotSubaccountTradesList( + this: InjectiveGrpcBase, + params?: ExchangeTypes.GetSpotSubaccountTradesListParams +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchSubaccountTradesList( + params || {} + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotSubaccountTradesListError", err); + } +} + +/** + * Fetches the orderbooks version 2 for specified spot market IDs. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotOrderbooksV2Params} params - Parameters including spot market IDs. + * @returns {Promise} The standard response containing spot orderbooks or an error. + */ +export async function getSpotOrderbooksV2( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSpotOrderbooksV2Params +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchOrderbooksV2( + params.marketIds + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotOrderbooksV2Error", err); + } +} + +/** + * Fetches the orderbook version 2 for a specific spot market ID. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetSpotOrderbookV2Params} params - Parameters including the spot market ID. + * @returns {Promise} The standard response containing the spot orderbook or an error. + */ +export async function getSpotOrderbookV2( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetSpotOrderbookV2Params +): Promise { + try { + const result = await this.indexerGrpcSpotApi.fetchOrderbookV2( + params.marketId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSpotOrderbookV2Error", err); + } +} + +/** + * Fetches the atomic swap history. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetAtomicSwapHistoryParams} params - Parameters to filter atomic swap history. + * @returns {Promise} The standard response containing atomic swap history or an error. + */ +export async function getAtomicSwapHistory( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetAtomicSwapHistoryParams +): Promise< + | { + swapHistory: AtomicSwap[]; + pagination: ExchangePagination; + } + | StandardResponse +> { + try { + const result = + await this.indexerGrpcSpotApi.fetchAtomicSwapHistory(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAtomicSwapHistoryError", err); + } +} + +/** + * Fetches all grid strategies. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetGridStrategiesParams} params - Parameters to filter grid strategies. + * @returns {Promise} The standard response containing grid strategies or an error. + */ +export async function getGridStrategies( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetGridStrategiesParams +): Promise { + try { + const result = + await this.indexerGrpcTradingApi.fetchGridStrategies(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getGridStrategiesError", err); + } +} + +/** + * Fetches the historical balance. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetHistoricalBalanceParams} params - Parameters to filter historical balance. + * @returns {Promise} The standard response containing historical balance or an error. + */ +export async function getHistoricalBalance( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetHistoricalBalanceParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchHistoricalBalance(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getHistoricalBalanceError", err); + } +} + +/** + * Fetches the historical realized PnL (Rpnl). + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetHistoricalRpnlParams} params - Parameters to filter historical Rpnl. + * @returns {Promise} The standard response containing historical Rpnl or an error. + */ +export async function getHistoricalRpnl( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetHistoricalRpnlParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchHistoricalRpnl(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getHistoricalRpnlError", err); + } +} + +/** + * Fetches the historical trading volumes. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetHistoricalVolumesParams} params - Parameters to filter historical volumes. + * @returns {Promise} The standard response containing historical volumes or an error. + */ +export async function getHistoricalVolumes( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetHistoricalVolumesParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchHistoricalVolumes(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getHistoricalVolumesError", err); + } +} + +/** + * Fetches the PnL leaderboard. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetPnlLeaderboardParams} params - Parameters to filter PnL leaderboard. + * @returns {Promise} The standard response containing PnL leaderboard or an error. + */ +export async function getPnlLeaderboard( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetPnlLeaderboardParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchPnlLeaderboard(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPnlLeaderboardError", err); + } +} + +/** + * Fetches the volume leaderboard. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetVolLeaderboardParams} params - Parameters to filter volume leaderboard. + * @returns {Promise} The standard response containing volume leaderboard or an error. + */ +export async function getVolLeaderboard( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetVolLeaderboardParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchVolLeaderboard(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getVolLeaderboardError", err); + } +} + +/** + * Fetches the PnL leaderboard with fixed resolution. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetPnlLeaderboardFixedResolutionParams} params - Parameters to filter PnL leaderboard with fixed resolution. + * @returns {Promise} The standard response containing PnL leaderboard with fixed resolution or an error. + */ +export async function getPnlLeaderboardFixedResolution( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetPnlLeaderboardFixedResolutionParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchPnlLeaderboardFixedResolution( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getPnlLeaderboardFixedResolutionError", + err + ); + } +} + +/** + * Fetches the volume leaderboard with fixed resolution. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetVolLeaderboardFixedResolutionParams} params - Parameters to filter volume leaderboard with fixed resolution. + * @returns {Promise} The standard response containing volume leaderboard with fixed resolution or an error. + */ +export async function getVolLeaderboardFixedResolution( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetVolLeaderboardFixedResolutionParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchVolLeaderboardFixedResolution( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getVolLeaderboardFixedResolutionError", + err + ); + } +} + +/** + * Fetches the holders of a specific denomination. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.GetDenomHoldersParams} params - Parameters including the denomination. + * @returns {Promise} The standard response containing denomination holders or an error. + */ +export async function getDenomHolders( + this: InjectiveGrpcBase, + params: ExchangeTypes.GetDenomHoldersParams +): Promise { + try { + const result = + await this.indexerGrpcArchiverApi.fetchDenomHolders(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomHoldersError", err); + } +} + +/** + * Broadcasts a message to update a binary options market as an admin. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgAdminUpdateBinaryOptionsMarketParams} params - Parameters to update the binary options market. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgAdminUpdateBinaryOptionsMarket( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgAdminUpdateBinaryOptionsMarketParams +): Promise { + try { + const msg = MsgAdminUpdateBinaryOptionsMarket.fromJSON({ ...params }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgAdminUpdateBinaryOptionsMarketError", + err + ); + } +} + +/** + * Broadcasts a message to batch cancel binary options orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgBatchCancelBinaryOptionsOrdersParams} params - Parameters to batch cancel binary options orders. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBatchCancelBinaryOptionsOrders( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgBatchCancelBinaryOptionsOrdersParams +): Promise { + try { + const msg = MsgBatchCancelBinaryOptionsOrders.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgBatchCancelBinaryOptionsOrdersError", + err + ); + } +} + +/** + * Broadcasts a message to batch cancel derivative orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgBatchCancelDerivativeOrdersParams} params - Parameters to batch cancel derivative orders. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBatchCancelDerivativeOrders( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgBatchCancelDerivativeOrdersParams +): Promise { + try { + const msg = MsgBatchCancelDerivativeOrders.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBatchCancelDerivativeOrdersError", err); + } +} + +/** + * Broadcasts a message to batch cancel spot orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgBatchCancelSpotOrdersParams} params - Parameters to batch cancel spot orders. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBatchCancelSpotOrders( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgBatchCancelSpotOrdersParams +): Promise { + try { + const msg = MsgBatchCancelSpotOrders.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBatchCancelSpotOrdersError", err); + } +} + +/** + * Broadcasts a message to batch update orders. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgBatchUpdateOrdersParams} params - Parameters to batch update orders. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBatchUpdateOrders( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgBatchUpdateOrdersParams +): Promise { + try { + const msg = MsgBatchUpdateOrders.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBatchUpdateOrdersError", err); + } +} + +/** + * Broadcasts a message to cancel a binary options order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCancelBinaryOptionsOrderParams} params - Parameters to cancel a binary options order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCancelBinaryOptionsOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCancelBinaryOptionsOrderParams +): Promise { + try { + const msg = MsgCancelBinaryOptionsOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCancelBinaryOptionsOrderError", err); + } +} + +/** + * Broadcasts a message to cancel a derivative order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCancelDerivativeOrderParams} params - Parameters to cancel a derivative order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCancelDerivativeOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCancelDerivativeOrderParams +): Promise { + try { + const msg = MsgCancelDerivativeOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCancelDerivativeOrderError", err); + } +} + +/** + * Broadcasts a message to cancel a spot order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCancelSpotOrderParams} params - Parameters to cancel a spot order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCancelSpotOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCancelSpotOrderParams +): Promise { + try { + const msg = MsgCancelSpotOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCancelSpotOrderError", err); + } +} + +/** + * Broadcasts a message to create a binary options limit order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateBinaryOptionsLimitOrderParams} params - Parameters to create a binary options limit order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateBinaryOptionsLimitOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateBinaryOptionsLimitOrderParams +): Promise { + try { + const msg = MsgCreateBinaryOptionsLimitOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgCreateBinaryOptionsLimitOrderError", + err + ); + } +} + +/** + * Broadcasts a message to create a binary options market order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateBinaryOptionsMarketOrderParams} params - Parameters to create a binary options market order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateBinaryOptionsMarketOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateBinaryOptionsMarketOrderParams +): Promise { + try { + const msg = MsgCreateBinaryOptionsMarketOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgCreateBinaryOptionsMarketOrderError", + err + ); + } +} + +/** + * Broadcasts a message to create a derivative limit order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateDerivativeLimitOrderParams} params - Parameters to create a derivative limit order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateDerivativeLimitOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateDerivativeLimitOrderParams +): Promise { + try { + const msg = MsgCreateDerivativeLimitOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateDerivativeLimitOrderError", err); + } +} + +/** + * Broadcasts a message to create a derivative market order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateDerivativeMarketOrderParams} params - Parameters to create a derivative market order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateDerivativeMarketOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateDerivativeMarketOrderParams +): Promise { + try { + const msg = MsgCreateDerivativeMarketOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateDerivativeMarketOrderError", err); + } +} + +/** + * Broadcasts a message to create a spot limit order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateSpotLimitOrderParams} params - Parameters to create a spot limit order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateSpotLimitOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateSpotLimitOrderParams +): Promise { + try { + const msg = MsgCreateSpotLimitOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateSpotLimitOrderError", err); + } +} + +/** + * Broadcasts a message to create a spot market order. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgCreateSpotMarketOrderParams} params - Parameters to create a spot market order. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateSpotMarketOrder( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgCreateSpotMarketOrderParams +): Promise { + try { + const msg = MsgCreateSpotMarketOrder.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateSpotMarketOrderError", err); + } +} + +/** + * Broadcasts a message to deposit funds. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgDepositParams} params - Parameters to deposit funds. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgDeposit( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgDepositParams +): Promise { + try { + const msg = MsgDeposit.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgDepositError", err); + } +} + +/** + * Broadcasts a message to perform an external transfer. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgExternalTransferParams} params - Parameters to perform an external transfer. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgExternalTransfer( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgExternalTransferParams +): Promise { + try { + const msg = MsgExternalTransfer.fromJSON({ + ...params, + amount: params.totalAmount, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgExternalTransferError", err); + } +} + +/** + * Broadcasts a message to increase position margin. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgIncreasePositionMarginParams} params - Parameters to increase position margin. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgIncreasePositionMargin( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgIncreasePositionMarginParams +): Promise { + try { + const msg = MsgIncreasePositionMargin.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgIncreasePositionMarginError", err); + } +} + +/** + * Broadcasts a message to instantly launch a spot market. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgInstantSpotMarketLaunchParams} params - Parameters to instantly launch a spot market. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgInstantSpotMarketLaunch( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgInstantSpotMarketLaunchParams +): Promise { + try { + const msg = MsgInstantSpotMarketLaunch.fromJSON({ ...params }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgInstantSpotMarketLaunchError", err); + } +} + +/** + * Broadcasts a message to liquidate a position. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgLiquidatePositionParams} params - Parameters to liquidate a position. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgLiquidatePosition( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgLiquidatePositionParams +): Promise { + try { + const msg = MsgLiquidatePosition.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgLiquidatePositionError", err); + } +} + +/** + * Broadcasts a message to reclaim locked funds. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgReclaimLockedFundsParams} params - Parameters to reclaim locked funds. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgReclaimLockedFunds( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgReclaimLockedFundsParams +): Promise { + try { + const msg = MsgReclaimLockedFunds.fromJSON({ ...params }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgReclaimLockedFundsError", err); + } +} + +/** + * Broadcasts a message to opt out of rewards. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgRewardsOptOutParams} params - Parameters to opt out of rewards. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgRewardsOptOut( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgRewardsOptOutParams +): Promise { + try { + const msg = MsgRewardsOptOut.fromJSON({ ...params }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgRewardsOptOutError", err); + } +} + +/** + * Broadcasts a message to sign data. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgSignDataParams} params - Parameters to sign data. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgSignData( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgSignDataParams +): Promise { + try { + const msg = MsgSignData.fromJSON({ ...params }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSignDataError", err); + } +} + +/** + * Broadcasts a message to withdraw funds. + * + * @this InjectiveGrpcBase + * @param {ExchangeTypes.MsgWithdrawParams} params - Parameters to withdraw funds. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgWithdraw( + this: InjectiveGrpcBase, + params: ExchangeTypes.MsgWithdrawParams +): Promise { + try { + const msg = MsgWithdraw.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgWithdrawError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/explorer.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/explorer.ts new file mode 100644 index 000000000000..5464a51d070e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/explorer.ts @@ -0,0 +1,227 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import * as ExplorerTypes from "../types/explorer"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Explorer Module Chain GRPC Async Functions with Error Handling + */ + +/** + * Fetches a transaction by its hash. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetTxByHashParams} params - Parameters including the transaction hash. + * @returns {Promise} The standard response containing transaction details or an error. + */ +export async function getTxByHash( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetTxByHashParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchTxByHash( + params.hash + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTxByHashError", err); + } +} + +/** + * Fetches transactions for a specific account. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetAccountTxParams} params - Parameters including account details. + * @returns {Promise} The standard response containing account transactions or an error. + */ +export async function getAccountTx( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetAccountTxParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchAccountTx(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAccountTxError", err); + } +} + +/** + * Fetches details of a specific validator. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetExplorerValidatorParams} params - Parameters including the validator's address. + * @returns {Promise} The standard response containing validator details or an error. + */ +export async function getValidator( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetExplorerValidatorParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchValidator( + params.address + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorError", err); + } +} + +/** + * Fetches the uptime of a specific validator. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetValidatorUptimeParams} params - Parameters including the validator's address. + * @returns {Promise} The standard response indicating validator uptime or an error. + */ +export async function getValidatorUptime( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetValidatorUptimeParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchValidatorUptime( + params.validatorAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorUptimeError", err); + } +} + +/** + * Fetches Peggy deposit transactions. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetPeggyDepositTxsParams} params - Parameters to filter Peggy deposit transactions. + * @returns {Promise} The standard response containing Peggy deposit transactions or an error. + */ +export async function getPeggyDepositTxs( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetPeggyDepositTxsParams +): Promise { + try { + const result = + await this.indexerGrpcExplorerApi.fetchPeggyDepositTxs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPeggyDepositTxsError", err); + } +} + +/** + * Fetches Peggy withdrawal transactions. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetPeggyWithdrawalTxsParams} params - Parameters to filter Peggy withdrawal transactions. + * @returns {Promise} The standard response containing Peggy withdrawal transactions or an error. + */ +export async function getPeggyWithdrawalTxs( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetPeggyWithdrawalTxsParams +): Promise { + try { + const result = + await this.indexerGrpcExplorerApi.fetchPeggyWithdrawalTxs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPeggyWithdrawalTxsError", err); + } +} + +/** + * Fetches a list of blocks based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetBlocksParams} params - Parameters to filter blocks. + * @returns {Promise} The standard response containing blocks or an error. + */ +export async function getBlocks( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetBlocksParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchBlocks(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBlocksError", err); + } +} + +/** + * Fetches details of a specific block by its ID. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetBlockParams} params - Parameters including the block ID. + * @returns {Promise} The standard response containing block details or an error. + */ +export async function getBlock( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetBlockParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchBlock(params.id); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getBlockError", err); + } +} + +/** + * Fetches a list of transactions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetTxsParams} params - Parameters to filter transactions. + * @returns {Promise} The standard response containing transactions or an error. + */ +export async function getTxs( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetTxsParams +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchTxs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTxsError", err); + } +} + +/** + * Fetches IBC transfer transactions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {ExplorerTypes.GetIBCTransferTxsParams} params - Parameters to filter IBC transfer transactions. + * @returns {Promise} The standard response containing IBC transfer transactions or an error. + */ +export async function getIBCTransferTxs( + this: InjectiveGrpcBase, + params: ExplorerTypes.GetIBCTransferTxsParams +): Promise { + try { + const result = + await this.indexerGrpcExplorerApi.fetchIBCTransferTxs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIBCTransferTxsError", err); + } +} + +/** + * Fetches explorer statistics. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing explorer statistics or an error. + */ +export async function getExplorerStats( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.indexerGrpcExplorerApi.fetchExplorerStats(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getStatsError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/gov.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/gov.ts new file mode 100644 index 000000000000..06ea77fc2799 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/gov.ts @@ -0,0 +1,350 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgSubmitProposalExpiryFuturesMarketLaunch, + MsgSubmitProposalSpotMarketLaunch, + MsgSubmitProposalPerpetualMarketLaunch, + MsgVote, + MsgSubmitTextProposal, + MsgSubmitProposalSpotMarketParamUpdate, + MsgSubmitGenericProposal, + MsgGovDeposit, + TxResponse, +} from "@injectivelabs/sdk-ts"; +import * as GovernanceTypes from "../types/gov"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Governance Module Chain GRPC Async Functions with Error Handling + */ + +/** + * Fetches the governance module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing governance module parameters or an error. + */ +export async function getGovernanceModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getModuleParamsError", err); + } +} + +/** + * Fetches a list of proposals based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.GetProposalsParams} params - Parameters to filter proposals. + * @returns {Promise} The standard response containing a list of proposals or an error. + */ +export async function getProposals( + this: InjectiveGrpcBase, + params: GovernanceTypes.GetProposalsParams +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchProposals(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getProposalsError", err); + } +} + +/** + * Fetches details of a specific proposal by its ID. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.GetProposalParams} params - Parameters including the proposal ID. + * @returns {Promise} The standard response containing proposal details or an error. + */ +export async function getProposal( + this: InjectiveGrpcBase, + params: GovernanceTypes.GetProposalParams +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchProposal( + params.proposalId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getProposalError", err); + } +} + +/** + * Fetches deposits for a specific proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.GetProposalDepositsParams} params - Parameters including the proposal ID. + * @returns {Promise} The standard response containing proposal deposits or an error. + */ +export async function getProposalDeposits( + this: InjectiveGrpcBase, + params: GovernanceTypes.GetProposalDepositsParams +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchProposalDeposits(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getProposalDepositsError", err); + } +} + +/** + * Fetches votes for a specific proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.GetProposalVotesParams} params - Parameters including the proposal ID. + * @returns {Promise} The standard response containing proposal votes or an error. + */ +export async function getProposalVotes( + this: InjectiveGrpcBase, + params: GovernanceTypes.GetProposalVotesParams +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchProposalVotes(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getProposalVotesError", err); + } +} + +/** + * Fetches the tally results of a specific proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.GetProposalTallyParams} params - Parameters including the proposal ID. + * @returns {Promise} The standard response containing proposal tally or an error. + */ +export async function getProposalTally( + this: InjectiveGrpcBase, + params: GovernanceTypes.GetProposalTallyParams +): Promise { + try { + const result = await this.chainGrpcGovApi.fetchProposalTally( + params.proposalId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getProposalTallyError", err); + } +} + +/** + * Submits a proposal to launch an expiry futures market. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitProposalExpiryFuturesMarketLaunchParams} params - Parameters to submit the proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitProposalExpiryFuturesMarketLaunch( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitProposalExpiryFuturesMarketLaunchParams +): Promise { + try { + const msg = MsgSubmitProposalExpiryFuturesMarketLaunch.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgSubmitProposalExpiryFuturesMarketLaunchError", + err + ); + } +} + +/** + * Submits a proposal to launch a spot market. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitProposalSpotMarketLaunchParams} params - Parameters to submit the proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitProposalSpotMarketLaunch( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitProposalSpotMarketLaunchParams +): Promise { + try { + const msg = MsgSubmitProposalSpotMarketLaunch.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgSubmitProposalSpotMarketLaunchError", + err + ); + } +} + +/** + * Submits a proposal to launch a perpetual market. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitProposalPerpetualMarketLaunchParams} params - Parameters to submit the proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitProposalPerpetualMarketLaunch( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitProposalPerpetualMarketLaunchParams +): Promise { + try { + const msg = MsgSubmitProposalPerpetualMarketLaunch.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgSubmitProposalPerpetualMarketLaunchError", + err + ); + } +} + +/** + * Casts a vote on a specific proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgVoteParams} params - Parameters to cast the vote. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgVote( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgVoteParams +): Promise { + try { + const msg = MsgVote.fromJSON({ + ...params, + voter: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgVoteError", err); + } +} + +/** + * Submits a text-based proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitTextProposalParams} params - Parameters to submit the text proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitTextProposal( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitTextProposalParams +): Promise { + try { + const msg = MsgSubmitTextProposal.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSubmitTextProposalError", err); + } +} + +/** + * Submits a proposal to update spot market parameters. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitProposalSpotMarketParamUpdateParams} params - Parameters to submit the proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitProposalSpotMarketParamUpdate( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitProposalSpotMarketParamUpdateParams +): Promise { + try { + const msg = MsgSubmitProposalSpotMarketParamUpdate.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "msgSubmitProposalSpotMarketParamUpdateError", + err + ); + } +} + +/** + * Submits a generic proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgSubmitGenericProposalParams} params - Parameters to submit the generic proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgSubmitGenericProposal( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgSubmitGenericProposalParams +): Promise { + try { + const msg = MsgSubmitGenericProposal.fromJSON({ + ...params, + proposer: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSubmitGenericProposalError", err); + } +} + +/** + * Deposits tokens to a specific proposal. + * + * @this InjectiveGrpcBase + * @param {GovernanceTypes.MsgGovDepositParams} params - Parameters to deposit tokens to a proposal. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgGovDeposit( + this: InjectiveGrpcBase, + params: GovernanceTypes.MsgGovDepositParams +): Promise { + try { + const msg = MsgGovDeposit.fromJSON({ + ...params, + depositor: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgDepositError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/index.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/index.ts new file mode 100644 index 000000000000..446d888ee7e0 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/index.ts @@ -0,0 +1,408 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { Network } from "@injectivelabs/networks"; + +import * as AuctionModule from "./auction"; +import * as AuthModule from "./auth"; +import * as AuthZModule from "./authz"; +import * as BankModule from "./bank"; +import * as DistributionModule from "./distribution"; +import * as ExchangeModule from "./exchange"; +import * as GovernanceModule from "./gov"; +import * as IbcModule from "./Ibc"; +import * as InsuranceFundModule from "./insurance"; +import * as MintModule from "./mint"; +import * as MitoModule from "./mito"; +import * as ExplorerModule from "./explorer"; +import * as OracleModule from "./oracle"; +import * as PeggyModule from "./peggy"; +import * as PermissionsModule from "./permissions"; +import * as StakingModule from "./staking"; +import * as TokenFactoryModule from "./token-factory"; +import * as WasmModule from "./wasm"; +import * as WasmXModule from "./wasmx"; + +export class InjectiveGrpcClient extends InjectiveGrpcBase { + constructor( + networkType: keyof typeof Network = "Mainnet", + injectivePrivateKey: string, + ethPublicKey?: string, + injPublicKey?: string + ) { + if (!ethPublicKey && !injPublicKey) { + throw new Error("Either eth or inj public key is required"); + } + super(networkType, injectivePrivateKey, ethPublicKey, injPublicKey); + console.log("InjectiveGrpcClient constructor init"); + } + // Auction endpoints + public getAuctionModuleParams = + AuctionModule.getAuctionModuleParams.bind(this); + public getAuctionModuleState = + AuctionModule.getAuctionModuleState.bind(this); + public getCurrentBasket = AuctionModule.getCurrentBasket.bind(this); + public getAuctionRound = AuctionModule.getAuctionRound.bind(this); + public getAuctions = AuctionModule.getAuctions.bind(this); + + //Auth endpoints + public getAuthModuleParams = AuthModule.getAuthModuleParams.bind(this); + public getAccountDetails = AuthModule.getAccountDetails.bind(this); + public getAccounts = AuthModule.getAccounts.bind(this); + + //Authz endpoints + public getGrants = AuthZModule.getGrants.bind(this); + public getGranterGrants = AuthZModule.getGranterGrants.bind(this); + public getGranteeGrants = AuthZModule.getGranteeGrants.bind(this); + + //Bank endpoints + public getBankModuleParams = BankModule.getBankModuleParams.bind(this); + public getBankBalance = BankModule.getBankBalance.bind(this); + public getTotalSupply = BankModule.getTotalSupply.bind(this); + public getAllTotalSupply = BankModule.getAllTotalSupply.bind(this); + public getSupplyOf = BankModule.getSupplyOf.bind(this); + public getDenomsMetadata = BankModule.getDenomsMetadata.bind(this); + public getDenomMetadata = BankModule.getDenomMetadata.bind(this); + public getDenomOwners = BankModule.getDenomOwners.bind(this); + + //Distribution endpoints + public getDistributionModuleParams = + DistributionModule.getDistributionModuleParams.bind(this); + public getDelegatorRewardsForValidator = + DistributionModule.getDelegatorRewardsForValidator.bind(this); + public getDelegatorRewardsForValidatorNoThrow = + DistributionModule.getDelegatorRewardsForValidatorNoThrow.bind(this); + public getDelegatorRewards = + DistributionModule.getDelegatorRewards.bind(this); + public getDelegatorRewardsNoThrow = + DistributionModule.getDelegatorRewardsNoThrow.bind(this); + + //Exchange endpoints + //============================CHAIN=============================== + public getModuleParams = ExchangeModule.getModuleParams.bind(this); + public getModuleState = ExchangeModule.getModuleState.bind(this); + public getFeeDiscountSchedule = + ExchangeModule.getFeeDiscountSchedule.bind(this); + public getFeeDiscountAccountInfo = + ExchangeModule.getFeeDiscountAccountInfo.bind(this); + public getTradingRewardsCampaign = + ExchangeModule.getTradingRewardsCampaign.bind(this); + public getTradeRewardPoints = + ExchangeModule.getTradeRewardPoints.bind(this); + public getPendingTradeRewardPoints = + ExchangeModule.getPendingTradeRewardPoints.bind(this); + public getExchangePositions = + ExchangeModule.getExchangePositions.bind(this); + public getSubaccountTradeNonce = + ExchangeModule.getSubaccountTradeNonce.bind(this); + public getIsOptedOutOfRewards = + ExchangeModule.getIsOptedOutOfRewards.bind(this); + //===========================INDEXER============================== + public getDerivativeMarkets = + ExchangeModule.getDerivativeMarkets.bind(this); + public getDerivativeMarket = ExchangeModule.getDerivativeMarket.bind(this); + public getBinaryOptionsMarkets = + ExchangeModule.getBinaryOptionsMarkets.bind(this); + public getBinaryOptionsMarket = + ExchangeModule.getBinaryOptionsMarket.bind(this); + public getDerivativeOrders = ExchangeModule.getDerivativeOrders.bind(this); + public getDerivativeOrderHistory = + ExchangeModule.getDerivativeOrderHistory.bind(this); + public getPositionsV2 = ExchangeModule.getPositionsV2.bind(this); + public getDerivativeTrades = ExchangeModule.getDerivativeTrades.bind(this); + public getFundingPayments = ExchangeModule.getFundingPayments.bind(this); + public getFundingRates = ExchangeModule.getFundingRates.bind(this); + public getDerivativeSubaccountOrdersList = + ExchangeModule.getDerivativeSubaccountOrdersList.bind(this); + public getDerivativeSubaccountTradesList = + ExchangeModule.getDerivativeSubaccountTradesList.bind(this); + public getDerivativeOrderbooksV2 = + ExchangeModule.getDerivativeOrderbooksV2.bind(this); + public getDerivativeOrderbookV2 = + ExchangeModule.getDerivativeOrderbookV2.bind(this); + public getRewards = ExchangeModule.getRewards.bind(this); + public getSubaccountsList = ExchangeModule.getSubaccountsList.bind(this); + public getSubaccountBalancesList = + ExchangeModule.getSubaccountBalancesList.bind(this); + public getSubaccountHistory = + ExchangeModule.getSubaccountHistory.bind(this); + public getSubaccountOrderSummary = + ExchangeModule.getSubaccountOrderSummary.bind(this); + public getOrderStates = ExchangeModule.getOrderStates.bind(this); + public getAccountPortfolio = ExchangeModule.getAccountPortfolio.bind(this); + public getAccountPortfolioBalances = + ExchangeModule.getAccountPortfolioBalances.bind(this); + public getSpotMarkets = ExchangeModule.getSpotMarkets.bind(this); + public getSpotMarket = ExchangeModule.getSpotMarket.bind(this); + public getSpotOrders = ExchangeModule.getSpotOrders.bind(this); + public getSpotOrderHistory = ExchangeModule.getSpotOrderHistory.bind(this); + public getSpotTrades = ExchangeModule.getSpotTrades.bind(this); + public getSpotSubaccountOrdersList = + ExchangeModule.getSpotSubaccountOrdersList.bind(this); + public getSpotSubaccountTradesList = + ExchangeModule.getSpotSubaccountTradesList.bind(this); + public getSpotOrderbooksV2 = ExchangeModule.getSpotOrderbooksV2.bind(this); + public getSpotOrderbookV2 = ExchangeModule.getSpotOrderbookV2.bind(this); + public getAtomicSwapHistory = + ExchangeModule.getAtomicSwapHistory.bind(this); + public getGridStrategies = ExchangeModule.getGridStrategies.bind(this); + public getHistoricalBalance = + ExchangeModule.getHistoricalBalance.bind(this); + public getHistoricalRpnl = ExchangeModule.getHistoricalRpnl.bind(this); + public getHistoricalVolumes = + ExchangeModule.getHistoricalVolumes.bind(this); + public getPnlLeaderboard = ExchangeModule.getPnlLeaderboard.bind(this); + public getVolLeaderboard = ExchangeModule.getVolLeaderboard.bind(this); + public getPnlLeaderboardFixedResolution = + ExchangeModule.getPnlLeaderboardFixedResolution.bind(this); + public getVolLeaderboardFixedResolution = + ExchangeModule.getVolLeaderboardFixedResolution.bind(this); + public getDenomHolders = ExchangeModule.getDenomHolders.bind(this); + //Governance functions + public getGovernanceModuleParams = + GovernanceModule.getGovernanceModuleParams.bind(this); + public getProposals = GovernanceModule.getProposals.bind(this); + public getProposal = GovernanceModule.getProposal.bind(this); + public getProposalDeposits = + GovernanceModule.getProposalDeposits.bind(this); + public getProposalVotes = GovernanceModule.getProposalVotes.bind(this); + public getProposalTally = GovernanceModule.getProposalTally.bind(this); + //ibc functions + public getDenomTrace = IbcModule.getDenomTrace.bind(this); + public getDenomsTrace = IbcModule.getDenomsTrace.bind(this); + //Insurance functions + public getInsuranceModuleParams = + InsuranceFundModule.getInsuranceModuleParams.bind(this); + public getInsuranceFunds = InsuranceFundModule.getInsuranceFunds.bind(this); + public getInsuranceFund = InsuranceFundModule.getInsuranceFund.bind(this); + public getInsuranceFundDeposits = + InsuranceFundModule.getEstimatedRedemptions.bind(this); + public getInsuranceFundRedemptions = + InsuranceFundModule.getPendingRedemptions.bind(this); + //Mint functions + public getMintModuleParams = MintModule.getMintModuleParams.bind(this); + public getInflation = MintModule.getInflation.bind(this); + public getAnnualProvisions = MintModule.getAnnualProvisions.bind(this); + //Mito functions + public getVault = MitoModule.getVault.bind(this); + public getVaults = MitoModule.getVaults.bind(this); + public getLpTokenPriceChart = MitoModule.getLpTokenPriceChart.bind(this); + public getTVLChart = MitoModule.getTVLChart.bind(this); + public getVaultsByHolderAddress = + MitoModule.getVaultsByHolderAddress.bind(this); + public getLPHolders = MitoModule.getLPHolders.bind(this); + public getHolderPortfolio = MitoModule.getHolderPortfolio.bind(this); + public getLeaderboard = MitoModule.getLeaderboard.bind(this); + public getTransferHistory = MitoModule.getTransferHistory.bind(this); + public getLeaderboardEpochs = MitoModule.getLeaderboardEpochs.bind(this); + public getStakingPools = MitoModule.getStakingPools.bind(this); + public getStakingHistory = MitoModule.getStakingHistory.bind(this); + public getStakingRewardsByAccount = + MitoModule.getStakingRewardsByAccount.bind(this); + public getMissions = MitoModule.getMissions.bind(this); + public getMissionLeaderboard = MitoModule.getMissionLeaderboard.bind(this); + public getIDO = MitoModule.getIDO.bind(this); + public getIDOs = MitoModule.getIDOs.bind(this); + public getIDOSubscribers = MitoModule.getIDOSubscribers.bind(this); + public getIDOSubscription = MitoModule.getIDOSubscription.bind(this); + public getIDOActivities = MitoModule.getIDOActivities.bind(this); + public getIDOWhitelist = MitoModule.getIDOWhitelist.bind(this); + public getClaimReferences = MitoModule.getClaimReferences.bind(this); + //Oracle functions + public getOracleModuleParams = + OracleModule.getOracleModuleParams.bind(this); + //Peggy functions + public getPeggyModuleParams = PeggyModule.getPeggyModuleParams.bind(this); + //Permissions functions + public getAddressesByRole = PermissionsModule.getAddressesByRole.bind(this); + public getAddressRoles = PermissionsModule.getAddressRoles.bind(this); + public getAllNamespaces = PermissionsModule.getAllNamespaces.bind(this); + public getPermissionsModuleParams = + PermissionsModule.getPermissionsModuleParams.bind(this); + public getNamespaceByDenom = + PermissionsModule.getNamespaceByDenom.bind(this); + public getVouchersForAddress = + PermissionsModule.getVouchersForAddress.bind(this); + //Staking functions + public getStakingModuleParams = + StakingModule.getStakingModuleParams.bind(this); + public getPool = StakingModule.getPool.bind(this); + public getValidators = StakingModule.getValidators.bind(this); + public getStakingValidator = StakingModule.getValidator.bind(this); + public getValidatorDelegations = + StakingModule.getValidatorDelegations.bind(this); + public getValidatorDelegationsNoThrow = + StakingModule.getValidatorDelegationsNoThrow.bind(this); + public getValidatorUnbondingDelegations = + StakingModule.getValidatorUnbondingDelegations.bind(this); + public getValidatorUnbondingDelegationsNoThrow = + StakingModule.getValidatorUnbondingDelegationsNoThrow.bind(this); + public getDelegation = StakingModule.getDelegation.bind(this); + public getDelegations = StakingModule.getDelegations.bind(this); + public getDelegationsNoThrow = + StakingModule.getDelegationsNoThrow.bind(this); + public getDelegators = StakingModule.getDelegators.bind(this); + public getDelegatorsNoThrow = StakingModule.getDelegatorsNoThrow.bind(this); + public getUnbondingDelegations = + StakingModule.getUnbondingDelegations.bind(this); + public getUnbondingDelegationsNoThrow = + StakingModule.getUnbondingDelegationsNoThrow.bind(this); + public getReDelegations = StakingModule.getReDelegations.bind(this); + public getReDelegationsNoThrow = + StakingModule.getReDelegationsNoThrow.bind(this); + //Token Factory functions + public getDenomsFromCreator = + TokenFactoryModule.getDenomsFromCreator.bind(this); + public getDenomAuthorityMetadata = + TokenFactoryModule.getDenomAuthorityMetadata.bind(this); + public getTokenFactoryModuleParams = + TokenFactoryModule.getTokenFactoryModuleParams.bind(this); + public getTokenFactoryModuleState = + TokenFactoryModule.getTokenFactoryModuleState.bind(this); + //Wasm contract functions + public getContractAccountsBalance = + WasmModule.getContractAccountsBalance.bind(this); + public getContractState = WasmModule.getContractState.bind(this); + public getContractInfo = WasmModule.getContractInfo.bind(this); + public getContractHistory = WasmModule.getContractHistory.bind(this); + public getSmartContractState = WasmModule.getSmartContractState.bind(this); + public getRawContractState = WasmModule.getRawContractState.bind(this); + public getContractCodes = WasmModule.getContractCodes.bind(this); + public getContractCode = WasmModule.getContractCode.bind(this); + public getContractCodeContracts = + WasmModule.getContractCodeContracts.bind(this); + //Wasmx functions + public getWasmxModuleParams = WasmXModule.getWasmxModuleParams.bind(this); + public getWasmxWasmModuleState = WasmXModule.getWasmxModuleState.bind(this); + //Explorer functions + //===========================INDEXER============================== + public getTxByHash = ExplorerModule.getTxByHash.bind(this); + public getAccountTx = ExplorerModule.getAccountTx.bind(this); + public getExplorerValidator = ExplorerModule.getValidator.bind(this); + public getValidatorUptime = ExplorerModule.getValidatorUptime.bind(this); + public getPeggyDepositTxs = ExplorerModule.getPeggyDepositTxs.bind(this); + public getPeggyWithdrawalTxs = + ExplorerModule.getPeggyWithdrawalTxs.bind(this); + public getBlocks = ExplorerModule.getBlocks.bind(this); + public getBlock = ExplorerModule.getBlock.bind(this); + public getTxs = ExplorerModule.getTxs.bind(this); + public getIBCTransferTxs = ExplorerModule.getIBCTransferTxs.bind(this); + public getExplorerStats = ExplorerModule.getExplorerStats.bind(this); + + // Messages Broadcasting endpoints + // Auction message functions + public msgBid = AuctionModule.msgBid.bind(this); + + // AuthZ message functions + public msgGrant = AuthZModule.msgGrant.bind(this); + public msgExec = AuthZModule.msgExec.bind(this); + public msgRevoke = AuthZModule.msgRevoke.bind(this); + + // Bank message functions + public msgSend = BankModule.msgSend.bind(this); + public msgMultiSend = BankModule.msgMultiSend.bind(this); + + // Distribution message functions + public msgWithdrawDelegatorReward = + DistributionModule.msgWithdrawDelegatorReward.bind(this); + public msgWithdrawValidatorCommission = + DistributionModule.msgWithdrawValidatorCommission.bind(this); + + // Exchange message functions + public msgAdminUpdateBinaryOptionsMarket = + ExchangeModule.msgAdminUpdateBinaryOptionsMarket.bind(this); + public msgBatchCancelBinaryOptionsOrders = + ExchangeModule.msgBatchCancelBinaryOptionsOrders.bind(this); + public msgBatchCancelDerivativeOrders = + ExchangeModule.msgBatchCancelDerivativeOrders.bind(this); + public msgBatchCancelSpotOrders = + ExchangeModule.msgBatchCancelSpotOrders.bind(this); + public msgBatchUpdateOrders = + ExchangeModule.msgBatchUpdateOrders.bind(this); + public msgCancelBinaryOptionsOrder = + ExchangeModule.msgCancelBinaryOptionsOrder.bind(this); + public msgCancelDerivativeOrder = + ExchangeModule.msgCancelDerivativeOrder.bind(this); + public msgCancelSpotOrder = ExchangeModule.msgCancelSpotOrder.bind(this); + public msgCreateBinaryOptionsLimitOrder = + ExchangeModule.msgCreateBinaryOptionsLimitOrder.bind(this); + public msgCreateBinaryOptionsMarketOrder = + ExchangeModule.msgCreateBinaryOptionsMarketOrder.bind(this); + public msgCreateDerivativeLimitOrder = + ExchangeModule.msgCreateDerivativeLimitOrder.bind(this); + public msgCreateDerivativeMarketOrder = + ExchangeModule.msgCreateDerivativeMarketOrder.bind(this); + public msgCreateSpotLimitOrder = + ExchangeModule.msgCreateSpotLimitOrder.bind(this); + public msgCreateSpotMarketOrder = + ExchangeModule.msgCreateSpotMarketOrder.bind(this); + public msgDeposit = ExchangeModule.msgDeposit.bind(this); + public msgExternalTransfer = ExchangeModule.msgExternalTransfer.bind(this); + public msgIncreasePositionMargin = + ExchangeModule.msgIncreasePositionMargin.bind(this); + public msgInstantSpotMarketLaunch = + ExchangeModule.msgInstantSpotMarketLaunch.bind(this); + public msgLiquidatePosition = + ExchangeModule.msgLiquidatePosition.bind(this); + public msgReclaimLockedFunds = + ExchangeModule.msgReclaimLockedFunds.bind(this); + public msgRewardsOptOut = ExchangeModule.msgRewardsOptOut.bind(this); + public msgSignData = ExchangeModule.msgSignData.bind(this); + public msgWithdraw = ExchangeModule.msgWithdraw.bind(this); + + // Governance message functions + public msgSubmitProposalExpiryFuturesMarketLaunch = + GovernanceModule.msgSubmitProposalExpiryFuturesMarketLaunch.bind(this); + public msgSubmitProposalSpotMarketLaunch = + GovernanceModule.msgSubmitProposalSpotMarketLaunch.bind(this); + public msgSubmitProposalPerpetualMarketLaunch = + GovernanceModule.msgSubmitProposalPerpetualMarketLaunch.bind(this); + public msgVote = GovernanceModule.msgVote.bind(this); + public msgSubmitTextProposal = + GovernanceModule.msgSubmitTextProposal.bind(this); + public msgSubmitProposalSpotMarketParamUpdate = + GovernanceModule.msgSubmitProposalSpotMarketParamUpdate.bind(this); + public msgSubmitGenericProposal = + GovernanceModule.msgSubmitGenericProposal.bind(this); + public msgGovDeposit = GovernanceModule.msgGovDeposit.bind(this); + + // IBC message functions + public msgIBCTransfer = IbcModule.msgIBCTransfer.bind(this); + + // Insurance Fund message functions + public msgCreateInsuranceFund = + InsuranceFundModule.msgCreateInsuranceFund.bind(this); + public msgRequestRedemption = + InsuranceFundModule.msgRequestRedemption.bind(this); + public msgUnderwrite = InsuranceFundModule.msgUnderwrite.bind(this); + + // Peggy message functions + public msgSendToEth = PeggyModule.msgSendToEth.bind(this); + + // Staking message functions + public msgBeginRedelegate = StakingModule.msgBeginRedelegate.bind(this); + public msgDelegate = StakingModule.msgDelegate.bind(this); + public msgUndelegate = StakingModule.msgUndelegate.bind(this); + public msgCreateValidator = StakingModule.msgCreateValidator.bind(this); + public msgEditValidator = StakingModule.msgEditValidator.bind(this); + public msgCancelUnbondingDelegation = + StakingModule.msgCancelUnbondingDelegation.bind(this); + + // Token Factory message functions + public msgBurn = TokenFactoryModule.msgBurn.bind(this); + public msgChangeAdmin = TokenFactoryModule.msgChangeAdmin.bind(this); + public msgCreateDenom = TokenFactoryModule.msgCreateDenom.bind(this); + public msgMint = TokenFactoryModule.msgMint.bind(this); + public msgSetDenomMetadata = + TokenFactoryModule.msgSetDenomMetadata.bind(this); + + // Wasm message functions + public msgStoreCode = WasmModule.msgStoreCode.bind(this); + public msgUpdateAdmin = WasmModule.msgUpdateAdmin.bind(this); + public msgExecuteContract = WasmModule.msgExecuteContract.bind(this); + public msgMigrateContract = WasmModule.msgMigrateContract.bind(this); + public msgInstantiateContract = + WasmModule.msgInstantiateContract.bind(this); + public msgExecuteContractCompat = + WasmModule.msgExecuteContractCompat.bind(this); + public msgPrivilegedExecuteContract = + WasmModule.msgPrivilegedExecuteContract.bind(this); +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/insurance.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/insurance.ts new file mode 100644 index 000000000000..c266fe16ba6e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/insurance.ts @@ -0,0 +1,197 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgCreateInsuranceFund, + MsgRequestRedemption, + MsgUnderwrite, + TxResponse, +} from "@injectivelabs/sdk-ts"; +import { + MsgCreateInsuranceFundParams, + MsgRequestRedemptionParams, + MsgUnderwriteParams, + GetInsuranceFundParams, + GetEstimatedRedemptionsParams, + GetPendingRedemptionsParams, +} from "../types/insurance"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches the insurance module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing insurance module parameters or an error. + */ +export async function getInsuranceModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcInsuranceFundApi.fetchModuleParams(); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getInsuranceModuleParamsError", err); + } +} + +/** + * Fetches a list of all insurance funds. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing a list of insurance funds or an error. + */ +export async function getInsuranceFunds( + this: InjectiveGrpcBase +): Promise { + try { + const result = + await this.chainGrpcInsuranceFundApi.fetchInsuranceFunds(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getInsuranceFundsError", err); + } +} + +/** + * Fetches details of a specific insurance fund by its market ID. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.GetInsuranceFundParams} params - Parameters including the market ID. + * @returns {Promise} The standard response containing insurance fund details or an error. + */ +export async function getInsuranceFund( + this: InjectiveGrpcBase, + params: GetInsuranceFundParams +): Promise { + try { + const result = await this.chainGrpcInsuranceFundApi.fetchInsuranceFund( + params.marketId + ); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getInsuranceFundError", err); + } +} + +/** + * Fetches estimated redemptions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.GetEstimatedRedemptionsParams} params - Parameters to filter estimated redemptions. + * @returns {Promise} The standard response containing estimated redemptions or an error. + */ +export async function getEstimatedRedemptions( + this: InjectiveGrpcBase, + params: GetEstimatedRedemptionsParams +): Promise { + try { + const result = + await this.chainGrpcInsuranceFundApi.fetchEstimatedRedemptions( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getEstimatedRedemptionsError", err); + } +} + +/** + * Fetches pending redemptions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.GetPendingRedemptionsParams} params - Parameters to filter pending redemptions. + * @returns {Promise} The standard response containing pending redemptions or an error. + */ +export async function getPendingRedemptions( + this: InjectiveGrpcBase, + params: GetPendingRedemptionsParams +): Promise { + try { + const result = + await this.chainGrpcInsuranceFundApi.fetchPendingRedemptions( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPendingRedemptionsError", err); + } +} + +/** + * Broadcasts a message to create a new insurance fund. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.MsgCreateInsuranceFundParams} params - Parameters to create the insurance fund. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgCreateInsuranceFund( + this: InjectiveGrpcBase, + params: MsgCreateInsuranceFundParams +): Promise { + try { + const msg = MsgCreateInsuranceFund.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateInsuranceFundError", err); + } +} + +/** + * Broadcasts a message to request a redemption from an insurance fund. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.MsgRequestRedemptionParams} params - Parameters to request the redemption. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgRequestRedemption( + this: InjectiveGrpcBase, + params: MsgRequestRedemptionParams +): Promise { + try { + const msg = MsgRequestRedemption.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgRequestRedemptionError", err); + } +} + +/** + * Broadcasts a message to underwrite an insurance fund. + * + * @this InjectiveGrpcBase + * @param {InsuranceTypes.MsgUnderwriteParams} params - Parameters to underwrite the insurance fund. + * @returns {Promise} The standard response containing the transaction result or an error. + */ +export async function msgUnderwrite( + this: InjectiveGrpcBase, + params: MsgUnderwriteParams +): Promise { + try { + const msg = MsgUnderwrite.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgUnderwriteError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/mint.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/mint.ts new file mode 100644 index 000000000000..d4e381245a1c --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/mint.ts @@ -0,0 +1,63 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches the parameters of the Mint module. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing Mint module parameters. + * - On failure: A standard response containing an error message. + */ +export async function getMintModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcMintApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getMintModuleParamsError", err); + } +} + +/** + * Retrieves the current inflation rate. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing the current inflation rate. + * - On failure: A standard response containing an error message. + */ +export async function getInflation( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcMintApi.fetchInflation(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getInflationError", err); + } +} + +/** + * Obtains the annual provisions. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing the annual provisions. + * - On failure: A standard response containing an error message. + */ +export async function getAnnualProvisions( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcMintApi.fetchAnnualProvisions(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAnnualProvisionsError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/mito.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/mito.ts new file mode 100644 index 000000000000..7bad58676fa0 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/mito.ts @@ -0,0 +1,763 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import * as MitoTypes from "../types/mito"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; +import { + MsgExecuteContractCompat, + MsgPrivilegedExecuteContract, + getDefaultSubaccountId, + ExecPrivilegedArgVaultSubscribe, + ExecPrivilegedArgVaultRedeem, + spotQuantityToChainQuantityToFixed, +} from "@injectivelabs/sdk-ts"; +/** + * Fetches the details of a specific vault. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetVaultParams} params - Parameters including the vault identifier. + * @returns {Promise} + * - On success: A standard response containing vault details. + * - On failure: A standard response containing an error message. + */ +export async function getVault( + this: InjectiveGrpcBase, + params: MitoTypes.GetVaultParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchVault(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getVaultError", err); + } +} + +/** + * Fetches a list of all vaults with optional filtering. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetVaultsParams} [params={}] - Optional parameters to filter the list of vaults. + * @returns {Promise} + * - On success: A standard response containing a list of vaults. + * - On failure: A standard response containing an error message. + */ +export async function getVaults( + this: InjectiveGrpcBase, + params: MitoTypes.GetVaultsParams = {} +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchVaults(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getVaultsError", err); + } +} + +/** + * Retrieves the price chart data for LP tokens. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetLpTokenPriceChartParams} params - Parameters including the LP token identifier and chart options. + * @returns {Promise} + * - On success: A standard response containing LP token price chart data. + * - On failure: A standard response containing an error message. + */ +export async function getLpTokenPriceChart( + this: InjectiveGrpcBase, + params: MitoTypes.GetLpTokenPriceChartParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchLpTokenPriceChart(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getLpTokenPriceChartError", err); + } +} + +/** + * Retrieves the Total Value Locked (TVL) chart data. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetTVLChartParams} params - Parameters including time range and other chart options. + * @returns {Promise} + * - On success: A standard response containing TVL chart data. + * - On failure: A standard response containing an error message. + */ +export async function getTVLChart( + this: InjectiveGrpcBase, + params: MitoTypes.GetTVLChartParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchTVLChartRequest(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTVLChartError", err); + } +} + +/** + * Fetches vaults associated with a specific holder address. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetVaultsByHolderAddressParams} params - Parameters including the holder's address. + * @returns {Promise} + * - On success: A standard response containing vaults linked to the holder. + * - On failure: A standard response containing an error message. + */ +export async function getVaultsByHolderAddress( + this: InjectiveGrpcBase, + params: MitoTypes.GetVaultsByHolderAddressParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchVaultsByHolderAddress(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getVaultsByHolderAddressError", err); + } +} + +/** + * Retrieves a list of LP token holders. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetLPHoldersParams} params - Parameters to filter LP token holders. + * @returns {Promise} + * - On success: A standard response containing a list of LP token holders. + * - On failure: A standard response containing an error message. + */ +export async function getLPHolders( + this: InjectiveGrpcBase, + params: MitoTypes.GetLPHoldersParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchLPHolders(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getLPHoldersError", err); + } +} + +/** + * Retrieves the portfolio details of a specific holder. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetHolderPortfolioParams} params - Parameters including the holder's address. + * @returns {Promise} + * - On success: A standard response containing the holder's portfolio details. + * - On failure: A standard response containing an error message. + */ +export async function getHolderPortfolio( + this: InjectiveGrpcBase, + params: MitoTypes.GetHolderPortfolioParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchHolderPortfolio(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getHolderPortfolioError", err); + } +} + +/** + * Retrieves the leaderboard for a specific epoch. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetLeaderboardParams} params - Parameters including the epoch identifier. + * @returns {Promise} + * - On success: A standard response containing leaderboard details for the epoch. + * - On failure: A standard response containing an error message. + */ +export async function getLeaderboard( + this: InjectiveGrpcBase, + params: MitoTypes.GetLeaderboardParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchLeaderboard( + params.epochId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getLeaderboardError", err); + } +} + +/** + * Fetches the transfer history based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetTransferHistoryParams} params - Parameters to filter transfer history. + * @returns {Promise} + * - On success: A standard response containing transfer history data. + * - On failure: A standard response containing an error message. + */ +export async function getTransferHistory( + this: InjectiveGrpcBase, + params: MitoTypes.GetTransferHistoryParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchTransferHistory(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTransferHistoryError", err); + } +} + +/** + * Retrieves the epochs associated with leaderboards. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetLeaderboardEpochsParams} [params={}] - Optional parameters to filter leaderboard epochs. + * @returns {Promise} + * - On success: A standard response containing leaderboard epochs. + * - On failure: A standard response containing an error message. + */ +export async function getLeaderboardEpochs( + this: InjectiveGrpcBase, + params: MitoTypes.GetLeaderboardEpochsParams = {} +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchLeaderboardEpochs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getLeaderboardEpochsError", err); + } +} + +/** + * Retrieves information about staking pools. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetStakingPoolsParams} params - Parameters to filter staking pools. + * @returns {Promise} + * - On success: A standard response containing staking pool details. + * - On failure: A standard response containing an error message. + */ +export async function getStakingPools( + this: InjectiveGrpcBase, + params: MitoTypes.GetStakingPoolsParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchStakingPools(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getStakingPoolsError", err); + } +} + +/** + * Retrieves the staking history based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetStakingHistoryParams} [params={}] - Optional parameters to filter staking history. + * @returns {Promise} + * - On success: A standard response containing staking history data. + * - On failure: A standard response containing an error message. + */ +export async function getStakingHistory( + this: InjectiveGrpcBase, + params: MitoTypes.GetStakingHistoryParams = {} +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchStakingHistory(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getStakingHistoryError", err); + } +} + +/** + * Retrieves staking rewards for a specific account. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetStakingRewardsByAccountParams} params - Parameters including the account identifier. + * @returns {Promise} + * - On success: A standard response containing staking rewards details. + * - On failure: A standard response containing an error message. + */ +export async function getStakingRewardsByAccount( + this: InjectiveGrpcBase, + params: MitoTypes.GetStakingRewardsByAccountParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchStakingRewardsByAccount(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getStakingRewardsByAccountError", err); + } +} + +/** + * Fetches a list of missions based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetMissionsParams} params - Parameters to filter missions. + * @returns {Promise} + * - On success: A standard response containing a list of missions. + * - On failure: A standard response containing an error message. + */ +export async function getMissions( + this: InjectiveGrpcBase, + params: MitoTypes.GetMissionsParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchMissions(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getMissionsError", err); + } +} + +/** + * Retrieves the leaderboard for missions based on the user address. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetMissionLeaderboardParams} [params={}] - Optional parameters including the user's address. + * @returns {Promise} + * - On success: A standard response containing the mission leaderboard. + * - On failure: A standard response containing an error message. + */ +export async function getMissionLeaderboard( + this: InjectiveGrpcBase, + params: MitoTypes.GetMissionLeaderboardParams = {} +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchMissionLeaderboard( + params.userAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getMissionLeaderboardError", err); + } +} + +/** + * Fetches details of a specific Initial DEX Offering (IDO). + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOParams} params - Parameters including the IDO identifier. + * @returns {Promise} + * - On success: A standard response containing IDO details. + * - On failure: A standard response containing an error message. + */ +export async function getIDO( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchIDO(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOError", err); + } +} + +/** + * Retrieves a list of all IDOs with optional filtering. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOsParams} [params={}] - Optional parameters to filter the list of IDOs. + * @returns {Promise} + * - On success: A standard response containing a list of IDOs. + * - On failure: A standard response containing an error message. + */ +export async function getIDOs( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOsParams = {} +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchIDOs(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOsError", err); + } +} + +/** + * Fetches subscribers for a specific IDO. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOSubscribersParams} params - Parameters including the IDO identifier. + * @returns {Promise} + * - On success: A standard response containing a list of subscribers. + * - On failure: A standard response containing an error message. + */ +export async function getIDOSubscribers( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOSubscribersParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchIDOSubscribers(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOSubscribersError", err); + } +} + +/** + * Retrieves the subscription details for a specific IDO. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOSubscriptionParams} params - Parameters including the IDO identifier. + * @returns {Promise} + * - On success: A standard response containing subscription details. + * - On failure: A standard response containing an error message. + */ +export async function getIDOSubscription( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOSubscriptionParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchIDOSubscription(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOSubscriptionError", err); + } +} + +/** + * Retrieves activities related to a specific IDO. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOActivitiesParams} [params={}] - Optional parameters to filter IDO activities. + * @returns {Promise} + * - On success: A standard response containing IDO activities. + * - On failure: A standard response containing an error message. + */ +export async function getIDOActivities( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOActivitiesParams = {} +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchIDOActivities(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOActivitiesError", err); + } +} + +/** + * Fetches the whitelist for a specific IDO. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetIDOWhitelistParams} params - Parameters including the IDO identifier. + * @returns {Promise} + * - On success: A standard response containing the IDO whitelist. + * - On failure: A standard response containing an error message. + */ +export async function getIDOWhitelist( + this: InjectiveGrpcBase, + params: MitoTypes.GetIDOWhitelistParams +): Promise { + try { + const result = await this.indexerGrpcMitoApi.fetchIDOWhitelist(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getIDOWhitelistError", err); + } +} + +/** + * Retrieves claim references based on provided parameters. + * + * @this InjectiveGrpcBase + * @param {MitoTypes.GetClaimReferencesParams} params - Parameters to filter claim references. + * @returns {Promise} + * - On success: A standard response containing claim references. + * - On failure: A standard response containing an error message. + */ +export async function getClaimReferences( + this: InjectiveGrpcBase, + params: MitoTypes.GetClaimReferencesParams +): Promise { + try { + const result = + await this.indexerGrpcMitoApi.fetchClaimReferences(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getClaimReferencesError", err); + } +} +// All these fucntions from here on out broadcasts messages to the chain. +export async function subscribeLaunchpad( + this: InjectiveGrpcBase, + params: MitoTypes.GetLaunchpadSubscribeParams +): Promise { + try { + const { amount, quoteTokenDenom, quoteTokenDecimals, contractAddress } = + params; + + const msgs = MsgExecuteContractCompat.fromJSON({ + sender: this.injAddress, + funds: [ + { + denom: quoteTokenDenom, + amount: spotQuantityToChainQuantityToFixed({ + value: amount, + baseDecimals: quoteTokenDecimals, + }), + }, + ], + contractAddress, + exec: { + action: "Subscribe", + msg: {}, + }, + }); + + const response = this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(response); + } catch (err) { + return createErrorResponse("mito launchpad subscription error!", err); + } +} +export async function claimLaunchpad( + this: InjectiveGrpcBase, + params: MitoTypes.GetLaunchpadClaimParams +): Promise { + try { + const { contractAddress } = params; + + const msgs = MsgExecuteContractCompat.fromJSON({ + sender: this.injAddress, + contractAddress, + exec: { + action: "Claim", + msg: {}, + }, + }); + + const response = await this.msgBroadcaster.broadcast({ msgs }); + + return createSuccessResponse(response); + } catch (err) { + return createErrorResponse("claimLaunchpadSubscription!", err); + } +} +// TODO : Need safer params for the xyk CPMM +export async function instantiateCPMMVault( + this: InjectiveGrpcBase, + params: MitoTypes.GetInstantiateCPMMVaultParams +): Promise { + try { + const defaultAmmConfig = { + notional_value_cap: "100000000000000000000000", + pricing_strategy: { + SmoothingPricingWithRelativePriceRange: { + bid_range: "0.8", + ask_range: "0.8", + }, + }, + max_invariant_sensitivity_bps: "5", + max_price_sensitivity_bps: "5", + order_type: "Vanilla", + }; + + const msgs = MsgExecuteContractCompat.fromJSON({ + contractAddress: params.MITO_MASTER_CONTRACT_ADDRESS, + funds: params.funds, + exec: { + action: "register_vault", + msg: { + is_subscribing_with_funds: true, + registration_mode: { + permissionless: { + whitelisted_vault_code_id: + params.CPMM_CONTRACT_CODE, + }, + }, + instantiate_vault_msg: { + Amm: { + owner: this.injAddress, + master_address: params.MITO_MASTER_CONTRACT_ADDRESS, + market_id: params.marketId, + fee_bps: params.feeBps, + config_owner: this.injAddress, + base_decimals: params.baseDecimals, + quote_decimals: params.quoteDecimals, + ...defaultAmmConfig, + }, + }, + }, + }, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("instantiateCPMMVaultError", err); + } +} + +export async function subscribeToVault( + this: InjectiveGrpcBase, + params: MitoTypes.GetVaultSubscribeParams +): Promise { + try { + const data = ExecPrivilegedArgVaultSubscribe.fromJSON({ + args: + params.vaultType === MitoTypes.VaultContractType.CPMM + ? { slippage: params.slippage } + : {}, + origin: this.injAddress, + vaultSubaccountId: params.vaultSubaccountId, + traderSubaccountId: getDefaultSubaccountId(this.injAddress), + }); + + const formattedBaseAmount = + params.subscriptionType !== MitoTypes.SpotRedemptionType.QuoteOnly + ? `${spotQuantityToChainQuantityToFixed({ + value: params.baseAmount, + baseDecimals: params.market.baseDecimals, + })} ${params.market.baseDenom}` + : ""; + + const formattedQuoteAmount = + params.subscriptionType !== MitoTypes.SpotRedemptionType.BaseOnly + ? `${spotQuantityToChainQuantityToFixed({ + value: params.quoteAmount, + baseDecimals: params.market.quoteDecimals, + })} ${params.market.quoteDenom}` + : ""; + + const funds = [formattedBaseAmount, formattedQuoteAmount] + .filter((amount) => amount) + .join(", "); + + const msgs = MsgPrivilegedExecuteContract.fromJSON({ + data, + sender: this.injAddress, + funds, + contractAddress: params.masterAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("subscribeToVaultError", err); + } +} + +export async function redeemFromVault( + this: InjectiveGrpcBase, + params: MitoTypes.GetVaultRedeemParams +): Promise { + try { + const data = ExecPrivilegedArgVaultRedeem.fromJSON({ + origin: this.injAddress, + vaultSubaccountId: params.vaultSubaccountId, + traderSubaccountId: getDefaultSubaccountId(this.injAddress), + args: { + ...(params.marketType === MitoTypes.VaultMarketType.Derivative + ? { slippage: params.slippage } + : {}), + redemption_type: params.redemptionType, + }, + }); + + const amount = spotQuantityToChainQuantityToFixed({ + value: params.redeemAmount, + baseDecimals: params.vaultBaseDecimals, + }); + + const msgs = MsgPrivilegedExecuteContract.fromJSON({ + data, + sender: this.injAddress, + contractAddress: params.masterAddress, + funds: `${amount} ${params.vaultLpDenom}`, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("redeemFromVaultError", err); + } +} + +export async function stakeVaultLP( + this: InjectiveGrpcBase, + params: MitoTypes.GetStakeVaultLPParams +): Promise { + try { + const msgs = MsgExecuteContractCompat.fromJSON({ + sender: this.injAddress, + funds: [ + { + denom: params.vaultLpDenom, + amount: spotQuantityToChainQuantityToFixed({ + value: params.amount, + baseDecimals: params.vaultTokenDecimals, + }), + }, + ], + contractAddress: params.stakingContractAddress, + exec: { + action: "stake", + msg: {}, + }, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("stakeVaultLPError", err); + } +} + +export async function unstakeVaultLP( + this: InjectiveGrpcBase, + params: MitoTypes.GetUnstakeVaultLPParams +): Promise { + try { + const msgs = MsgExecuteContractCompat.fromJSON({ + sender: this.injAddress, + contractAddress: params.stakingContractAddress, + exec: { + action: "unstake", + msg: { + coin: { + denom: params.vaultLpDenom, + amount: spotQuantityToChainQuantityToFixed({ + value: params.amount, + baseDecimals: params.vaultTokenDecimals, + }), + }, + }, + }, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("unstakeVaultLPError", err); + } +} + +export async function claimVaultRewards( + this: InjectiveGrpcBase, + params: MitoTypes.GetClaimVaultRewardsParams +): Promise { + try { + const msgs = MsgExecuteContractCompat.fromJSON({ + sender: this.injAddress, + contractAddress: params.stakingContractAddress, + exec: { + action: "claim_rewards", + msg: { + lp_token: params.vaultLpDenom, + }, + }, + }); + const result = await this.msgBroadcaster.broadcast({ msgs }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("claimVaultRewardsError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/oracle.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/oracle.ts new file mode 100644 index 000000000000..168877c28c31 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/oracle.ts @@ -0,0 +1,25 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches the parameters of the Oracle module. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing Oracle module parameters. + * - On failure: A standard response containing an error message. + */ +export async function getOracleModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcOracleApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getOracleModuleParamsError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/peggy.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/peggy.ts new file mode 100644 index 000000000000..a1d1164f66c3 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/peggy.ts @@ -0,0 +1,59 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + PeggyModuleParams, + MsgSendToEth, + TxResponse, +} from "@injectivelabs/sdk-ts"; +import { MsgSendToEthParams } from "../types/peggy"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches the parameters of the Peggy module. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing Peggy module parameters. + * - On failure: A standard response containing an error message. + */ +export async function getPeggyModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcPeggyApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPeggyModuleParamsError", err); + } +} + +/** + * Broadcasts a message to send tokens to an Ethereum address via IBC transfer. + * + * @this InjectiveGrpcBase + * @param {MsgSendToEthParams} params - Parameters including the recipient address and transfer details. + * @returns {Promise} + * - On success: A standard response containing the transaction result. + * - On failure: A standard response containing an error message. + */ +export async function msgSendToEth( + this: InjectiveGrpcBase, + params: MsgSendToEthParams +): Promise { + try { + const msg = MsgSendToEth.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + address: this.ethAddress, + }); + const result: TxResponse = await this.msgBroadcaster.broadcast({ + msgs: msg, + }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSendToEthError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/permissions.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/permissions.ts new file mode 100644 index 000000000000..d805b73f1352 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/permissions.ts @@ -0,0 +1,133 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import * as PermissionsType from "../types/permissions"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * Fetches addresses associated with a specific role. + * + * @this InjectiveGrpcBase + * @param {GetAddressesByRoleParams} params - Parameters including the role identifier. + * @returns {Promise} + * - On success: A standard response containing a list of addresses. + * - On failure: A standard response containing an error message. + */ +export async function getAddressesByRole( + this: InjectiveGrpcBase, + params: PermissionsType.GetAddressesByRoleParams +): Promise { + try { + const result = + await this.chainGrpcPermissionsApi.fetchAddressesByRole(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAddressesByRoleError", err); + } +} + +/** + * Retrieves roles associated with a specific address. + * + * @this InjectiveGrpcBase + * @param {GetAddressRolesParams} params - Parameters including the address identifier. + * @returns {Promise} + * - On success: A standard response containing a list of roles. + * - On failure: A standard response containing an error message. + */ +export async function getAddressRoles( + this: InjectiveGrpcBase, + params: PermissionsType.GetAddressRolesParams +): Promise { + try { + const result = + await this.chainGrpcPermissionsApi.fetchAddressRoles(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAddressRolesError", err); + } +} + +/** + * Retrieves all namespaces within the permissions module. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing a list of namespaces. + * - On failure: A standard response containing an error message. + */ +export async function getAllNamespaces( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcPermissionsApi.fetchAllNamespaces(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getAllNamespacesError", err); + } +} + +/** + * Fetches the parameters of the Permissions module. + * + * @this InjectiveGrpcBase + * @returns {Promise} + * - On success: A standard response containing Permissions module parameters. + * - On failure: A standard response containing an error message. + */ +export async function getPermissionsModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcPermissionsApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPermissionsModuleParamsError", err); + } +} + +/** + * Retrieves the namespace associated with a specific denomination. + * + * @this InjectiveGrpcBase + * @param {GetNamespaceByDenomParams} params - Parameters including the denomination identifier. + * @returns {Promise} + * - On success: A standard response containing the namespace. + * - On failure: A standard response containing an error message. + */ +export async function getNamespaceByDenom( + this: InjectiveGrpcBase, + params: PermissionsType.GetNamespaceByDenomParams +): Promise { + try { + const result = + await this.chainGrpcPermissionsApi.fetchNamespaceByDenom(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getNamespaceByDenomError", err); + } +} + +/** + * Retrieves vouchers associated with a specific address. + * + * @this InjectiveGrpcBase + * @param {GetVouchersForAddressParams} params - Parameters including the address identifier. + * @returns {Promise} + * - On success: A standard response containing a list of vouchers. + * - On failure: A standard response containing an error message. + */ +export async function getVouchersForAddress( + this: InjectiveGrpcBase, + params: PermissionsType.GetVouchersForAddressParams +): Promise { + try { + const result = + await this.chainGrpcPermissionsApi.fetchVouchersForAddress(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getVouchersForAddressError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/staking.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/staking.ts new file mode 100644 index 000000000000..2688dbf851bf --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/staking.ts @@ -0,0 +1,500 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgBeginRedelegate, + MsgDelegate, + MsgUndelegate, + MsgCreateValidator, + MsgEditValidator, + MsgCancelUnbondingDelegation, +} from "@injectivelabs/sdk-ts"; +import * as StakingTypes from "../types/staking"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +// Staking Module Async Functions with Error Handling + +/** + * Fetches the staking module parameters. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getStakingModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getStakingModuleParamsError", err); + } +} + +/** + * Fetches the staking pool information. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing pool information or an error. + */ +export async function getPool( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchPool(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getPoolError", err); + } +} + +/** + * Fetches a list of validators with optional pagination. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorsParams} params - Parameters including pagination options. + * @returns {Promise} The standard response containing validators or an error. + */ +export async function getValidators( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorsParams = {} +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchValidators( + params.pagination + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorsError", err); + } +} + +/** + * Fetches a specific validator by address. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorParams} params - Parameters including the validator's address. + * @returns {Promise} The standard response containing the validator or an error. + */ +export async function getValidator( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorParams +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchValidator( + params.address + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorError", err); + } +} + +/** + * Fetches delegations for a specific validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorDelegationsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing delegations or an error. + */ +export async function getValidatorDelegations( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchValidatorDelegations(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorDelegationsError", err); + } +} + +/** + * Fetches delegations for a specific validator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorDelegationsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing delegations or an error. + */ +export async function getValidatorDelegationsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchValidatorDelegationsNoThrow( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getValidatorDelegationsNoThrowError", err); + } +} + +/** + * Fetches unbonding delegations for a specific validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorDelegationsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing unbonding delegations or an error. + */ +export async function getValidatorUnbondingDelegations( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchValidatorUnbondingDelegations( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getValidatorUnbondingDelegationsError", + err + ); + } +} + +/** + * Fetches unbonding delegations for a specific validator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetValidatorDelegationsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing unbonding delegations or an error. + */ +export async function getValidatorUnbondingDelegationsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetValidatorDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchValidatorUnbondingDelegationsNoThrow( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse( + "getValidatorUnbondingDelegationsNoThrowError", + err + ); + } +} + +/** + * Fetches a specific delegation. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetDelegationParams} params - Parameters including delegator and validator addresses. + * @returns {Promise} The standard response containing the delegation or an error. + */ +export async function getDelegation( + this: InjectiveGrpcBase, + params: StakingTypes.GetDelegationParams +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchDelegation(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegationError", err); + } +} + +/** + * Fetches all delegations for a delegator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing delegations or an error. + */ +export async function getDelegations( + this: InjectiveGrpcBase, + params: StakingTypes.GetDelegationsParams +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchDelegations(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegationsError", err); + } +} + +/** + * Fetches all delegations for a delegator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing delegations or an error. + */ +export async function getDelegationsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchDelegationsNoThrow(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegationsNoThrowError", err); + } +} + +/** + * Fetches all delegators for a validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetDelegatorsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing delegators or an error. + */ +export async function getDelegators( + this: InjectiveGrpcBase, + params: StakingTypes.GetDelegatorsParams +): Promise { + try { + const result = await this.chainGrpcStakingApi.fetchDelegators(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegatorsError", err); + } +} + +/** + * Fetches all delegators for a validator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetDelegatorsParams} params - Parameters including the validator's address and pagination options. + * @returns {Promise} The standard response containing delegators or an error. + */ +export async function getDelegatorsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetDelegatorsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchDelegatorsNoThrow(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDelegatorsNoThrowError", err); + } +} + +/** + * Fetches all unbonding delegations for a delegator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetUnbondingDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing unbonding delegations or an error. + */ +export async function getUnbondingDelegations( + this: InjectiveGrpcBase, + params: StakingTypes.GetUnbondingDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchUnbondingDelegations(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getUnbondingDelegationsError", err); + } +} + +/** + * Fetches all unbonding delegations for a delegator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetUnbondingDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing unbonding delegations or an error. + */ +export async function getUnbondingDelegationsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetUnbondingDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchUnbondingDelegationsNoThrow( + params + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getUnbondingDelegationsNoThrowError", err); + } +} + +/** + * Fetches all redelegations for a delegator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetReDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing redelegations or an error. + */ +export async function getReDelegations( + this: InjectiveGrpcBase, + params: StakingTypes.GetReDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchReDelegations(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getReDelegationsError", err); + } +} + +/** + * Fetches all redelegations for a delegator without throwing an error. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.GetReDelegationsParams} params - Parameters including the delegator's address and pagination options. + * @returns {Promise} The standard response containing redelegations or an error. + */ +export async function getReDelegationsNoThrow( + this: InjectiveGrpcBase, + params: StakingTypes.GetReDelegationsParams +): Promise { + try { + const result = + await this.chainGrpcStakingApi.fetchReDelegationsNoThrow(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getReDelegationsNoThrowError", err); + } +} + +/** + * Broadcasts a message to begin redelegating tokens. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgBeginRedelegateParams} params - Parameters including delegator address, source validator address, destination validator address, and amount. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBeginRedelegate( + this: InjectiveGrpcBase, + params: StakingTypes.MsgBeginRedelegateParams +): Promise { + try { + const msg = MsgBeginRedelegate.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBeginRedelegateError", err); + } +} + +/** + * Broadcasts a message to delegate tokens to a validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgDelegateParams} params - Parameters including delegator address, validator address, and amount. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgDelegate( + this: InjectiveGrpcBase, + params: StakingTypes.MsgDelegateParams +): Promise { + try { + const msg = MsgDelegate.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgDelegateError", err); + } +} + +/** + * Broadcasts a message to undelegate tokens from a validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgUndelegateParams} params - Parameters including delegator address, validator address, and amount. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgUndelegate( + this: InjectiveGrpcBase, + params: StakingTypes.MsgUndelegateParams +): Promise { + try { + const msg = MsgUndelegate.fromJSON({ + ...params, + injectiveAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgUndelegateError", err); + } +} + +/** + * Broadcasts a message to create a new validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgCreateValidatorParams} params - Parameters including delegator address, validator details, and commission rates. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateValidator( + this: InjectiveGrpcBase, + params: StakingTypes.MsgCreateValidatorParams +): Promise { + try { + const msg = MsgCreateValidator.fromJSON({ + ...params, + delegatorAddress: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateValidatorError", err); + } +} + +/** + * Broadcasts a message to edit an existing validator. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgEditValidatorParams} params - Parameters including validator address and updated details. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgEditValidator( + this: InjectiveGrpcBase, + params: StakingTypes.MsgEditValidatorParams +): Promise { + try { + const msg = MsgEditValidator.fromJSON({ + ...params, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgEditValidatorError", err); + } +} + +/** + * Broadcasts a message to cancel an unbonding delegation. + * + * @this InjectiveGrpcBase + * @param {StakingTypes.MsgCancelUnbondingDelegationParams} params - Parameters including delegator address, validator address, and completion time. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCancelUnbondingDelegation( + this: InjectiveGrpcBase, + params: StakingTypes.MsgCancelUnbondingDelegationParams +): Promise { + try { + const msg = MsgCancelUnbondingDelegation.fromJSON({ + ...params, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCancelUnbondingDelegationError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/token-factory.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/token-factory.ts new file mode 100644 index 000000000000..7f74b048b3c0 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/token-factory.ts @@ -0,0 +1,210 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgBurn, + MsgChangeAdmin, + MsgCreateDenom, + MsgMint, + MsgSetDenomMetadata, +} from "@injectivelabs/sdk-ts"; +import * as TokenFactoryTypes from "../types/token-factory"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +// Token Factory Module Async Functions with Error Handling + +/** + * Fetches all denominations created by a specific creator. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.GetDenomsFromCreatorParams} params - Parameters including the creator's address. + * @returns {Promise} The standard response containing denominations or an error. + */ +export async function getDenomsFromCreator( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.GetDenomsFromCreatorParams +): Promise { + try { + const result = + await this.chainGrpcTokenFactoryApi.fetchDenomsFromCreator( + params.creator + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomsFromCreatorError", err); + } +} + +/** + * Fetches the authority metadata for a specific denomination. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.GetDenomAuthorityMetadataParams} params - Parameters including creator and sub-denomination. + * @returns {Promise} The standard response containing authority metadata or an error. + */ +export async function getDenomAuthorityMetadata( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.GetDenomAuthorityMetadataParams +): Promise { + try { + const result = + await this.chainGrpcTokenFactoryApi.fetchDenomAuthorityMetadata( + params.creator, + params.subDenom + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getDenomAuthorityMetadataError", err); + } +} + +/** + * Fetches the parameters of the Token Factory module. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getTokenFactoryModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcTokenFactoryApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTokenFactoryModuleParamsError", err); + } +} + +/** + * Fetches the current state of the Token Factory module. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module state or an error. + */ +export async function getTokenFactoryModuleState( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcTokenFactoryApi.fetchModuleState(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getTokenFactoryModuleStateError", err); + } +} + +/** + * Broadcasts a message to burn tokens. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.MsgBurnParams} params - Parameters including sender and amount. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgBurn( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.MsgBurnParams +): Promise { + try { + const msg = MsgBurn.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgBurnError", err); + } +} + +/** + * Broadcasts a message to change the admin of a denomination. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.MsgChangeAdminParams} params - Parameters including sender, denom, and new admin address. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgChangeAdmin( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.MsgChangeAdminParams +): Promise { + try { + const msg = MsgChangeAdmin.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgChangeAdminError", err); + } +} + +/** + * Broadcasts a message to create a new denomination. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.MsgCreateDenomParams} params - Parameters including sender and sub-denomination. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgCreateDenom( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.MsgCreateDenomParams +): Promise { + try { + const msg = MsgCreateDenom.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgCreateDenomError", err); + } +} + +/** + * Broadcasts a message to mint new tokens. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.MsgMintParams} params - Parameters including sender and total amount to mint. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgMint( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.MsgMintParams +): Promise { + try { + const msg = MsgMint.fromJSON({ + amount: params.totalAmount, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgMintError", err); + } +} + +/** + * Broadcasts a message to set metadata for a denomination. + * + * @this InjectiveGrpcBase + * @param {TokenFactoryTypes.MsgSetDenomMetadataParams} params - Parameters including sender and metadata details. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgSetDenomMetadata( + this: InjectiveGrpcBase, + params: TokenFactoryTypes.MsgSetDenomMetadataParams +): Promise { + try { + const msg = MsgSetDenomMetadata.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgSetDenomMetadataError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasm.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasm.ts new file mode 100644 index 000000000000..5fedbd40f1ac --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasm.ts @@ -0,0 +1,369 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + MsgStoreCode, + MsgUpdateAdmin, + MsgExecuteContract, + MsgMigrateContract, + MsgInstantiateContract, + MsgExecuteContractCompat, + MsgPrivilegedExecuteContract, +} from "@injectivelabs/sdk-ts"; +import * as WasmTypes from "../types/wasm"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +// Wasm Module Async Functions with Error Handling + +/** + * Fetches the balance of contract accounts. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractAccountsBalanceParams} params - Parameters including contract addresses and pagination options. + * @returns {Promise} The standard response containing contract accounts balance or an error. + */ +export async function getContractAccountsBalance( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractAccountsBalanceParams +): Promise { + try { + const result = + await this.chainGrpcWasmApi.fetchContractAccountsBalance(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractAccountsBalanceError", err); + } +} + +/** + * Fetches the state of a specific contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractStateParams} params - Parameters including the contract address. + * @returns {Promise} The standard response containing contract state or an error. + */ +export async function getContractState( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractStateParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractState(params); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractStateError", err); + } +} + +/** + * Fetches information about a specific contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractInfoParams} params - Parameters including the contract address. + * @returns {Promise} The standard response containing contract info or an error. + */ +export async function getContractInfo( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractInfoParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractInfo( + params.contractAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractInfoError", err); + } +} + +/** + * Fetches the history of a specific contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractHistoryParams} params - Parameters including the contract address. + * @returns {Promise} The standard response containing contract history or an error. + */ +export async function getContractHistory( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractHistoryParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractHistory( + params.contractAddress + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractHistoryError", err); + } +} + +/** + * Fetches the smart contract state based on a query. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetSmartContractStateParams} params - Parameters including contract address and query. + * @returns {Promise} The standard response containing smart contract state or an error. + */ +export async function getSmartContractState( + this: InjectiveGrpcBase, + params: WasmTypes.GetSmartContractStateParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchSmartContractState( + params.contractAddress, + params.query + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getSmartContractStateError", err); + } +} + +/** + * Fetches the raw state of a specific contract based on a query. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetRawContractStateParams} params - Parameters including contract address and query. + * @returns {Promise} The standard response containing raw contract state or an error. + */ +export async function getRawContractState( + this: InjectiveGrpcBase, + params: WasmTypes.GetRawContractStateParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchRawContractState( + params.contractAddress, + params.query + ); + + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getRawContractStateError", err); + } +} + +/** + * Fetches all contract codes with optional pagination. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractCodesParams} params - Parameters including pagination options. + * @returns {Promise} The standard response containing contract codes or an error. + */ +export async function getContractCodes( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractCodesParams = {} +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractCodes( + params.pagination + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractCodesError", err); + } +} + +/** + * Fetches a specific contract code by its ID. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractCodeParams} params - Parameters including the code ID. + * @returns {Promise} The standard response containing contract code or an error. + */ +export async function getContractCode( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractCodeParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractCode( + params.codeId + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractCodeError", err); + } +} + +/** + * Fetches contracts associated with a specific contract code with optional pagination. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.GetContractCodeContractsParams} params - Parameters including code ID and pagination options. + * @returns {Promise} The standard response containing contracts or an error. + */ +export async function getContractCodeContracts( + this: InjectiveGrpcBase, + params: WasmTypes.GetContractCodeContractsParams +): Promise { + try { + const result = await this.chainGrpcWasmApi.fetchContractCodeContracts( + params.codeId, + params.pagination + ); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getContractCodeContractsError", err); + } +} + +/** + * Broadcasts a message to store new contract code. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgStoreCodeParams} params - Parameters including sender and wasm bytecode. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgStoreCode( + this: InjectiveGrpcBase, + params: WasmTypes.MsgStoreCodeParams +): Promise { + try { + const msg = MsgStoreCode.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgStoreCodeError", err); + } +} + +/** + * Broadcasts a message to update the admin of a contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgUpdateAdminParams} params - Parameters including sender, contract address, and new admin address. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgUpdateAdmin( + this: InjectiveGrpcBase, + params: WasmTypes.MsgUpdateAdminParams +): Promise { + try { + const msg = MsgUpdateAdmin.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgUpdateAdminError", err); + } +} + +/** + * Broadcasts a message to execute a contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgExecuteContractParams} params - Parameters including sender, contract address, and execute message. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgExecuteContract( + this: InjectiveGrpcBase, + params: WasmTypes.MsgExecuteContractParams +): Promise { + try { + const msg = MsgExecuteContract.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgExecuteContractError", err); + } +} + +/** + * Broadcasts a message to migrate a contract to a new code version. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgMigrateContractParams} params - Parameters including sender, contract address, new code ID, and migrate message. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgMigrateContract( + this: InjectiveGrpcBase, + params: WasmTypes.MsgMigrateContractParams +): Promise { + try { + const msg = MsgMigrateContract.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgMigrateContractError", err); + } +} + +/** + * Broadcasts a message to instantiate a new contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgInstantiateContractParams} params - Parameters including sender, code ID, instantiate message, and label. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgInstantiateContract( + this: InjectiveGrpcBase, + params: WasmTypes.MsgInstantiateContractParams +): Promise { + try { + const msg = MsgInstantiateContract.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgInstantiateContractError", err); + } +} + +/** + * Broadcasts a message to execute a contract using compatibility mode. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgExecuteContractCompatParams} params - Parameters including sender, contract address, and execute message. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgExecuteContractCompat( + this: InjectiveGrpcBase, + params: WasmTypes.MsgExecuteContractCompatParams +): Promise { + try { + const msg = MsgExecuteContractCompat.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgExecuteContractCompatError", err); + } +} + +/** + * Broadcasts a privileged message to execute a contract. + * + * @this InjectiveGrpcBase + * @param {WasmTypes.MsgPrivilegedExecuteContractParams} params - Parameters including sender, contract address, and execute message. + * @returns {Promise} The standard response containing the broadcast result or an error. + */ +export async function msgPrivilegedExecuteContract( + this: InjectiveGrpcBase, + params: WasmTypes.MsgPrivilegedExecuteContractParams +): Promise { + try { + const msg = MsgPrivilegedExecuteContract.fromJSON({ + ...params, + sender: this.injAddress, + }); + const result = await this.msgBroadcaster.broadcast({ msgs: msg }); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("msgPrivilegedExecuteContractError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasmx.ts b/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasmx.ts new file mode 100644 index 000000000000..1fb8b2cab830 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/modules/wasmx.ts @@ -0,0 +1,44 @@ +import { InjectiveGrpcBase } from "../grpc/grpc-base"; +import { + StandardResponse, + createSuccessResponse, + createErrorResponse, +} from "../types/index"; + +/** + * WasmX Module Async Functions with Error Handling + */ + +/** + * Fetches the parameters of the WasmX module. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module parameters or an error. + */ +export async function getWasmxModuleParams( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcWasmXApi.fetchModuleParams(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getWasmxModuleParamsError", err); + } +} + +/** + * Fetches the current state of the WasmX module. + * + * @this InjectiveGrpcBase + * @returns {Promise} The standard response containing module state or an error. + */ +export async function getWasmxModuleState( + this: InjectiveGrpcBase +): Promise { + try { + const result = await this.chainGrpcWasmXApi.fetchModuleState(); + return createSuccessResponse(result); + } catch (err) { + return createErrorResponse("getWasmxModuleStateError", err); + } +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/auction.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/auction.ts new file mode 100644 index 000000000000..18ef0afa1d8a --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/auction.ts @@ -0,0 +1,71 @@ +export const getAuctionModuleParamsSimiles = [ + "VIEW_PARAMS", + "GET_PARAMS", + "CHECK_PARAMS", + "FETCH_PARAMS", + "READ_PARAMS", + "DISPLAY_PARAMS", + "SHOW_PARAMS", + "LIST_PARAMS", + "RETRIEVE_PARAMS", +]; + +export const getAuctionModuleStateSimiles = [ + "VIEW_STATE", + "GET_STATE", + "CHECK_STATE", + "FETCH_STATE", + "READ_STATE", + "DISPLAY_STATE", + "SHOW_STATE", + "LIST_STATE", + "RETRIEVE_STATE", +]; + +export const getCurrentBasketSimiles = [ + "VIEW_BASKET", + "GET_BASKET", + "CHECK_BASKET", + "FETCH_BASKET", + "READ_BASKET", + "DISPLAY_BASKET", + "SHOW_BASKET", + "LIST_BASKET", + "RETRIEVE_BASKET", +]; + +export const getAuctionRoundSimiles = [ + "VIEW_ROUND", + "GET_ROUND", + "CHECK_ROUND", + "FETCH_ROUND", + "READ_ROUND", + "DISPLAY_ROUND", + "SHOW_ROUND", + "LIST_ROUND", + "RETRIEVE_ROUND", +]; + +export const getAuctionsSimiles = [ + "VIEW_AUCTIONS", + "GET_AUCTIONS", + "CHECK_AUCTIONS", + "FETCH_AUCTIONS", + "READ_AUCTIONS", + "DISPLAY_AUCTIONS", + "SHOW_AUCTIONS", + "LIST_AUCTIONS", + "RETRIEVE_AUCTIONS", +]; + +export const MsgBidSimiles = [ + "PLACE_BID", + "SUBMIT_BID", + "SEND_BID", + "MAKE_BID", + "CREATE_BID", + "START_BID", + "ENTER_BID", + "POST_BID", + "REGISTER_BID", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/auth.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/auth.ts new file mode 100644 index 000000000000..8d189a10f47d --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/auth.ts @@ -0,0 +1,107 @@ +export const getAuthModuleParamsSimiles = [ + "VIEW_AUTH_PARAMS", + "GET_AUTH_PARAMS", + "CHECK_AUTH_PARAMS", + "FETCH_AUTH_PARAMS", + "READ_AUTH_PARAMS", + "DISPLAY_AUTH_PARAMS", + "SHOW_AUTH_PARAMS", + "LIST_AUTH_PARAMS", + "RETRIEVE_AUTH_PARAMS", +]; + +export const getAccountDetailsSimiles = [ + "VIEW_AUTH_ACCOUNT", + "GET_AUTH_ACCOUNT", + "CHECK_AUTH_ACCOUNT", + "FETCH_AUTH_ACCOUNT", + "READ_AUTH_ACCOUNT", + "DISPLAY_AUTH_ACCOUNT", + "SHOW_AUTH_ACCOUNT", + "LIST_AUTH_ACCOUNT", + "RETRIEVE_AUTH_ACCOUNT", +]; + +export const getAccountsSimiles = [ + "VIEW_AUTH_ACCOUNTS", + "GET_AUTH_ACCOUNTS", + "CHECK_AUTH_ACCOUNTS", + "FETCH_AUTH_ACCOUNTS", + "READ_AUTH_ACCOUNTS", + "DISPLAY_AUTH_ACCOUNTS", + "SHOW_AUTH_ACCOUNTS", + "LIST_AUTH_ACCOUNTS", + "RETRIEVE_AUTH_ACCOUNTS", +]; + +export const getGrantsSimiles = [ + "VIEW_AUTH_GRANTS", + "GET_AUTH_GRANTS", + "CHECK_AUTH_GRANTS", + "FETCH_AUTH_GRANTS", + "READ_AUTH_GRANTS", + "DISPLAY_AUTH_GRANTS", + "SHOW_AUTH_GRANTS", + "LIST_AUTH_GRANTS", + "RETRIEVE_AUTH_GRANTS", +]; + +export const getGranterGrantsSimiles = [ + "VIEW_GRANTER_GRANTS", + "GET_GRANTER_GRANTS", + "CHECK_GRANTER_GRANTS", + "FETCH_GRANTER_GRANTS", + "READ_GRANTER_GRANTS", + "DISPLAY_GRANTER_GRANTS", + "SHOW_GRANTER_GRANTS", + "LIST_GRANTER_GRANTS", + "RETRIEVE_GRANTER_GRANTS", +]; + +export const getGranteeGrantsSimiles = [ + "VIEW_GRANTEE_GRANTS", + "GET_GRANTEE_GRANTS", + "CHECK_GRANTEE_GRANTS", + "FETCH_GRANTEE_GRANTS", + "READ_GRANTEE_GRANTS", + "DISPLAY_GRANTEE_GRANTS", + "SHOW_GRANTEE_GRANTS", + "LIST_GRANTEE_GRANTS", + "RETRIEVE_GRANTEE_GRANTS", +]; + +export const msgGrantSimiles = [ + "CREATE_AUTH_GRANT", + "MAKE_AUTH_GRANT", + "SET_AUTH_GRANT", + "START_AUTH_GRANT", + "BEGIN_AUTH_GRANT", + "INIT_AUTH_GRANT", + "ASSIGN_AUTH_GRANT", + "ENABLE_AUTH_GRANT", + "REGISTER_AUTH_GRANT", +]; + +export const msgExecSimiles = [ + "EXECUTE_AUTH_ACTION", + "RUN_AUTH_ACTION", + "PERFORM_AUTH_ACTION", + "START_AUTH_ACTION", + "BEGIN_AUTH_ACTION", + "TRIGGER_AUTH_ACTION", + "LAUNCH_AUTH_ACTION", + "PROCESS_AUTH_ACTION", + "INITIATE_AUTH_ACTION", +]; + +export const msgRevokeSimiles = [ + "REVOKE_AUTH_GRANT", + "REMOVE_AUTH_GRANT", + "CANCEL_AUTH_GRANT", + "DELETE_AUTH_GRANT", + "STOP_AUTH_GRANT", + "END_AUTH_GRANT", + "DISABLE_AUTH_GRANT", + "WITHDRAW_AUTH_GRANT", + "TERMINATE_AUTH_GRANT", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/bank.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/bank.ts new file mode 100644 index 000000000000..9d25dc30d8e7 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/bank.ts @@ -0,0 +1,131 @@ +export const getBankModuleParamsSimiles = [ + "VIEW_BANK_PARAMS", + "GET_BANK_PARAMS", + "CHECK_BANK_PARAMS", + "FETCH_BANK_PARAMS", + "READ_BANK_PARAMS", + "DISPLAY_BANK_PARAMS", + "SHOW_BANK_PARAMS", + "LIST_BANK_PARAMS", + "RETRIEVE_BANK_PARAMS", +]; + +export const getBankBalanceSimiles = [ + "VIEW_BANK_BALANCE", + "GET_BANK_BALANCE", + "CHECK_BANK_BALANCE", + "FETCH_BANK_BALANCE", + "READ_BANK_BALANCE", + "DISPLAY_BANK_BALANCE", + "SHOW_BANK_BALANCE", + "LIST_BANK_BALANCE", + "RETRIEVE_BANK_BALANCE", +]; + +export const getBankBalancesSimiles = [ + "VIEW_BANK_BALANCES", + "GET_BANK_BALANCES", + "CHECK_BANK_BALANCES", + "FETCH_BANK_BALANCES", + "READ_BANK_BALANCES", + "DISPLAY_BANK_BALANCES", + "SHOW_BANK_BALANCES", + "LIST_BANK_BALANCES", + "RETRIEVE_BANK_BALANCES", +]; + +export const getTotalSupplySimiles = [ + "VIEW_BANK_SUPPLY", + "GET_BANK_SUPPLY", + "CHECK_BANK_SUPPLY", + "FETCH_BANK_SUPPLY", + "READ_BANK_SUPPLY", + "DISPLAY_BANK_SUPPLY", + "SHOW_BANK_SUPPLY", + "LIST_BANK_SUPPLY", + "RETRIEVE_BANK_SUPPLY", +]; + +export const getAllTotalSupplySimiles = [ + "VIEW_BANK_SUPPLIES", + "GET_BANK_SUPPLIES", + "CHECK_BANK_SUPPLIES", + "FETCH_BANK_SUPPLIES", + "READ_BANK_SUPPLIES", + "DISPLAY_BANK_SUPPLIES", + "SHOW_BANK_SUPPLIES", + "LIST_BANK_SUPPLIES", + "RETRIEVE_BANK_SUPPLIES", +]; + +export const getSupplyOfSimiles = [ + "VIEW_TOKEN_SUPPLY", + "GET_TOKEN_SUPPLY", + "CHECK_TOKEN_SUPPLY", + "FETCH_TOKEN_SUPPLY", + "READ_TOKEN_SUPPLY", + "DISPLAY_TOKEN_SUPPLY", + "SHOW_TOKEN_SUPPLY", + "LIST_TOKEN_SUPPLY", + "RETRIEVE_TOKEN_SUPPLY", +]; + +export const getDenomsMetadataSimiles = [ + "VIEW_BANK_DENOMS", + "GET_BANK_DENOMS", + "CHECK_BANK_DENOMS", + "FETCH_BANK_DENOMS", + "READ_BANK_DENOMS", + "DISPLAY_BANK_DENOMS", + "SHOW_BANK_DENOMS", + "LIST_BANK_DENOMS", + "RETRIEVE_BANK_DENOMS", +]; + +export const getDenomMetadataSimiles = [ + "VIEW_BANK_DENOM", + "GET_BANK_DENOM", + "CHECK_BANK_DENOM", + "FETCH_BANK_DENOM", + "READ_BANK_DENOM", + "DISPLAY_BANK_DENOM", + "SHOW_BANK_DENOM", + "LIST_BANK_DENOM", + "RETRIEVE_BANK_DENOM", +]; + +export const getDenomOwnersSimiles = [ + "VIEW_DENOM_OWNERS", + "GET_DENOM_OWNERS", + "CHECK_DENOM_OWNERS", + "FETCH_DENOM_OWNERS", + "READ_DENOM_OWNERS", + "DISPLAY_DENOM_OWNERS", + "SHOW_DENOM_OWNERS", + "LIST_DENOM_OWNERS", + "RETRIEVE_DENOM_OWNERS", +]; + +export const msgSendSimiles = [ + "SEND_BANK_TOKENS", + "TRANSFER_BANK_TOKENS", + "MOVE_BANK_TOKENS", + "SUBMIT_BANK_TRANSFER", + "CREATE_BANK_TRANSFER", + "EXECUTE_BANK_TRANSFER", + "PROCESS_BANK_TRANSFER", + "INITIATE_BANK_TRANSFER", + "PERFORM_BANK_TRANSFER", +]; + +export const msgMultiSendSimiles = [ + "SEND_MULTIPLE_TOKENS", + "TRANSFER_MULTIPLE_TOKENS", + "MOVE_MULTIPLE_TOKENS", + "SUBMIT_MULTIPLE_TRANSFERS", + "CREATE_MULTIPLE_TRANSFERS", + "EXECUTE_MULTIPLE_TRANSFERS", + "PROCESS_MULTIPLE_TRANSFERS", + "INITIATE_MULTIPLE_TRANSFERS", + "PERFORM_MULTIPLE_TRANSFERS", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/distribution.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/distribution.ts new file mode 100644 index 000000000000..1a2673893ec4 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/distribution.ts @@ -0,0 +1,83 @@ +export const getDistributionModuleParamsSimiles = [ + "VIEW_DISTRIBUTION_PARAMS", + "GET_DISTRIBUTION_PARAMS", + "CHECK_DISTRIBUTION_PARAMS", + "FETCH_DISTRIBUTION_PARAMS", + "READ_DISTRIBUTION_PARAMS", + "DISPLAY_DISTRIBUTION_PARAMS", + "SHOW_DISTRIBUTION_PARAMS", + "LIST_DISTRIBUTION_PARAMS", + "RETRIEVE_DISTRIBUTION_PARAMS", +]; + +export const getDelegatorRewardsForValidatorSimiles = [ + "VIEW_VALIDATOR_REWARDS", + "GET_VALIDATOR_REWARDS", + "CHECK_VALIDATOR_REWARDS", + "FETCH_VALIDATOR_REWARDS", + "READ_VALIDATOR_REWARDS", + "DISPLAY_VALIDATOR_REWARDS", + "SHOW_VALIDATOR_REWARDS", + "LIST_VALIDATOR_REWARDS", + "RETRIEVE_VALIDATOR_REWARDS", +]; + +export const getDelegatorRewardsForValidatorNoThrowSimiles = [ + "VIEW_VALIDATOR_REWARDS_SAFE", + "GET_VALIDATOR_REWARDS_SAFE", + "CHECK_VALIDATOR_REWARDS_SAFE", + "FETCH_VALIDATOR_REWARDS_SAFE", + "READ_VALIDATOR_REWARDS_SAFE", + "DISPLAY_VALIDATOR_REWARDS_SAFE", + "SHOW_VALIDATOR_REWARDS_SAFE", + "LIST_VALIDATOR_REWARDS_SAFE", + "RETRIEVE_VALIDATOR_REWARDS_SAFE", +]; + +export const getDelegatorRewardsSimiles = [ + "VIEW_DELEGATOR_REWARDS", + "GET_DELEGATOR_REWARDS", + "CHECK_DELEGATOR_REWARDS", + "FETCH_DELEGATOR_REWARDS", + "READ_DELEGATOR_REWARDS", + "DISPLAY_DELEGATOR_REWARDS", + "SHOW_DELEGATOR_REWARDS", + "LIST_DELEGATOR_REWARDS", + "RETRIEVE_DELEGATOR_REWARDS", +]; + +export const getDelegatorRewardsNoThrowSimiles = [ + "VIEW_DELEGATOR_REWARDS_SAFE", + "GET_DELEGATOR_REWARDS_SAFE", + "CHECK_DELEGATOR_REWARDS_SAFE", + "FETCH_DELEGATOR_REWARDS_SAFE", + "READ_DELEGATOR_REWARDS_SAFE", + "DISPLAY_DELEGATOR_REWARDS_SAFE", + "SHOW_DELEGATOR_REWARDS_SAFE", + "LIST_DELEGATOR_REWARDS_SAFE", + "RETRIEVE_DELEGATOR_REWARDS_SAFE", +]; + +export const msgWithdrawDelegatorRewardSimiles = [ + "WITHDRAW_DELEGATOR_REWARDS", + "CLAIM_DELEGATOR_REWARDS", + "COLLECT_DELEGATOR_REWARDS", + "FETCH_DELEGATOR_REWARDS", + "REQUEST_DELEGATOR_REWARDS", + "RETRIEVE_DELEGATOR_REWARDS", + "PROCESS_DELEGATOR_REWARDS", + "EXTRACT_DELEGATOR_REWARDS", + "RELEASE_DELEGATOR_REWARDS", +]; + +export const msgWithdrawValidatorCommissionSimiles = [ + "WITHDRAW_VALIDATOR_COMMISSION", + "CLAIM_VALIDATOR_COMMISSION", + "COLLECT_VALIDATOR_COMMISSION", + "FETCH_VALIDATOR_COMMISSION", + "REQUEST_VALIDATOR_COMMISSION", + "RETRIEVE_VALIDATOR_COMMISSION", + "PROCESS_VALIDATOR_COMMISSION", + "EXTRACT_VALIDATOR_COMMISSION", + "RELEASE_VALIDATOR_COMMISSION", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/exchange.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/exchange.ts new file mode 100644 index 000000000000..3e2613413d73 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/exchange.ts @@ -0,0 +1,852 @@ +// Module Parameters and State +export const getModuleParamsSimiles = [ + "VIEW_EXCHANGE_PARAMS", + "GET_EXCHANGE_PARAMS", + "CHECK_EXCHANGE_PARAMS", + "FETCH_EXCHANGE_PARAMS", + "READ_EXCHANGE_PARAMS", + "DISPLAY_EXCHANGE_PARAMS", + "SHOW_EXCHANGE_PARAMS", + "LIST_EXCHANGE_PARAMS", + "RETRIEVE_EXCHANGE_PARAMS", +]; + +export const getModuleStateSimiles = [ + "VIEW_EXCHANGE_STATE", + "GET_EXCHANGE_STATE", + "CHECK_EXCHANGE_STATE", + "FETCH_EXCHANGE_STATE", + "READ_EXCHANGE_STATE", + "DISPLAY_EXCHANGE_STATE", + "SHOW_EXCHANGE_STATE", + "LIST_EXCHANGE_STATE", + "RETRIEVE_EXCHANGE_STATE", +]; + +// Fee Discounts +export const getFeeDiscountScheduleSimiles = [ + "VIEW_DISCOUNT_SCHEDULE", + "GET_DISCOUNT_SCHEDULE", + "CHECK_DISCOUNT_SCHEDULE", + "FETCH_DISCOUNT_SCHEDULE", + "READ_DISCOUNT_SCHEDULE", + "DISPLAY_DISCOUNT_SCHEDULE", + "SHOW_DISCOUNT_SCHEDULE", + "LIST_DISCOUNT_SCHEDULE", + "RETRIEVE_DISCOUNT_SCHEDULE", +]; + +export const getFeeDiscountAccountInfoSimiles = [ + "VIEW_DISCOUNT_INFO", + "GET_DISCOUNT_INFO", + "CHECK_DISCOUNT_INFO", + "FETCH_DISCOUNT_INFO", + "READ_DISCOUNT_INFO", + "DISPLAY_DISCOUNT_INFO", + "SHOW_DISCOUNT_INFO", + "LIST_DISCOUNT_INFO", + "RETRIEVE_DISCOUNT_INFO", +]; + +// Trading Rewards +export const getTradingRewardsCampaignSimiles = [ + "VIEW_REWARDS_CAMPAIGN", + "GET_REWARDS_CAMPAIGN", + "CHECK_REWARDS_CAMPAIGN", + "FETCH_REWARDS_CAMPAIGN", + "READ_REWARDS_CAMPAIGN", + "DISPLAY_REWARDS_CAMPAIGN", + "SHOW_REWARDS_CAMPAIGN", + "LIST_REWARDS_CAMPAIGN", + "RETRIEVE_REWARDS_CAMPAIGN", +]; + +export const getTradeRewardPointsSimiles = [ + "VIEW_REWARD_POINTS", + "GET_REWARD_POINTS", + "CHECK_REWARD_POINTS", + "FETCH_REWARD_POINTS", + "READ_REWARD_POINTS", + "DISPLAY_REWARD_POINTS", + "SHOW_REWARD_POINTS", + "LIST_REWARD_POINTS", + "RETRIEVE_REWARD_POINTS", +]; + +export const getPendingTradeRewardPointsSimiles = [ + "VIEW_PENDING_REWARDS", + "GET_PENDING_REWARDS", + "CHECK_PENDING_REWARDS", + "FETCH_PENDING_REWARDS", + "READ_PENDING_REWARDS", + "DISPLAY_PENDING_REWARDS", + "SHOW_PENDING_REWARDS", + "LIST_PENDING_REWARDS", + "RETRIEVE_PENDING_REWARDS", +]; + +// Orderbooks +export const getDerivativeOrderbooksSimiles = [ + "VIEW_DERIVATIVE_BOOKS", + "GET_DERIVATIVE_BOOKS", + "CHECK_DERIVATIVE_BOOKS", + "FETCH_DERIVATIVE_BOOKS", + "READ_DERIVATIVE_BOOKS", + "DISPLAY_DERIVATIVE_BOOKS", + "SHOW_DERIVATIVE_BOOKS", + "LIST_DERIVATIVE_BOOKS", + "RETRIEVE_DERIVATIVE_BOOKS", +]; + +export const getDerivativeOrderbookSimiles = [ + "VIEW_DERIVATIVE_BOOK", + "GET_DERIVATIVE_BOOK", + "CHECK_DERIVATIVE_BOOK", + "FETCH_DERIVATIVE_BOOK", + "READ_DERIVATIVE_BOOK", + "DISPLAY_DERIVATIVE_BOOK", + "SHOW_DERIVATIVE_BOOK", + "LIST_DERIVATIVE_BOOK", + "RETRIEVE_DERIVATIVE_BOOK", +]; + +export const getSpotOrderbooksSimiles = [ + "VIEW_SPOT_BOOKS", + "GET_SPOT_BOOKS", + "CHECK_SPOT_BOOKS", + "FETCH_SPOT_BOOKS", + "READ_SPOT_BOOKS", + "DISPLAY_SPOT_BOOKS", + "SHOW_SPOT_BOOKS", + "LIST_SPOT_BOOKS", + "RETRIEVE_SPOT_BOOKS", +]; + +export const getSpotOrderbookSimiles = [ + "VIEW_SPOT_BOOK", + "GET_SPOT_BOOK", + "CHECK_SPOT_BOOK", + "FETCH_SPOT_BOOK", + "READ_SPOT_BOOK", + "DISPLAY_SPOT_BOOK", + "SHOW_SPOT_BOOK", + "LIST_SPOT_BOOK", + "RETRIEVE_SPOT_BOOK", +]; + +// Spot Markets +export const getSpotMarketsSimiles = [ + "VIEW_SPOT_MARKETS", + "GET_SPOT_MARKETS", + "CHECK_SPOT_MARKETS", + "FETCH_SPOT_MARKETS", + "READ_SPOT_MARKETS", + "DISPLAY_SPOT_MARKETS", + "SHOW_SPOT_MARKETS", + "LIST_SPOT_MARKETS", + "RETRIEVE_SPOT_MARKETS", +]; + +export const getSpotMarketSimiles = [ + "VIEW_SPOT_MARKET", + "GET_SPOT_MARKET", + "CHECK_SPOT_MARKET", + "FETCH_SPOT_MARKET", + "READ_SPOT_MARKET", + "DISPLAY_SPOT_MARKET", + "SHOW_SPOT_MARKET", + "LIST_SPOT_MARKET", + "RETRIEVE_SPOT_MARKET", +]; + +export const getSpotOrdersSimiles = [ + "VIEW_SPOT_ORDERS", + "GET_SPOT_ORDERS", + "CHECK_SPOT_ORDERS", + "FETCH_SPOT_ORDERS", + "READ_SPOT_ORDERS", + "DISPLAY_SPOT_ORDERS", + "SHOW_SPOT_ORDERS", + "LIST_SPOT_ORDERS", + "RETRIEVE_SPOT_ORDERS", +]; + +export const getSpotOrderHistorySimiles = [ + "VIEW_SPOT_HISTORY", + "GET_SPOT_HISTORY", + "CHECK_SPOT_HISTORY", + "FETCH_SPOT_HISTORY", + "READ_SPOT_HISTORY", + "DISPLAY_SPOT_HISTORY", + "SHOW_SPOT_HISTORY", + "LIST_SPOT_HISTORY", + "RETRIEVE_SPOT_HISTORY", +]; + +export const getSpotTradesSimiles = [ + "VIEW_SPOT_TRADES", + "GET_SPOT_TRADES", + "CHECK_SPOT_TRADES", + "FETCH_SPOT_TRADES", + "READ_SPOT_TRADES", + "DISPLAY_SPOT_TRADES", + "SHOW_SPOT_TRADES", + "LIST_SPOT_TRADES", + "RETRIEVE_SPOT_TRADES", +]; + +// Derivative Markets +export const getDerivativeMarketsSimiles = [ + "VIEW_DERIVATIVE_MARKETS", + "GET_DERIVATIVE_MARKETS", + "CHECK_DERIVATIVE_MARKETS", + "FETCH_DERIVATIVE_MARKETS", + "READ_DERIVATIVE_MARKETS", + "DISPLAY_DERIVATIVE_MARKETS", + "SHOW_DERIVATIVE_MARKETS", + "LIST_DERIVATIVE_MARKETS", + "RETRIEVE_DERIVATIVE_MARKETS", +]; + +export const getDerivativeMarketSimiles = [ + "VIEW_DERIVATIVE_MARKET", + "GET_DERIVATIVE_MARKET", + "CHECK_DERIVATIVE_MARKET", + "FETCH_DERIVATIVE_MARKET", + "READ_DERIVATIVE_MARKET", + "DISPLAY_DERIVATIVE_MARKET", + "SHOW_DERIVATIVE_MARKET", + "LIST_DERIVATIVE_MARKET", + "RETRIEVE_DERIVATIVE_MARKET", +]; + +export const getDerivativeOrdersSimiles = [ + "VIEW_DERIVATIVE_ORDERS", + "GET_DERIVATIVE_ORDERS", + "CHECK_DERIVATIVE_ORDERS", + "FETCH_DERIVATIVE_ORDERS", + "READ_DERIVATIVE_ORDERS", + "DISPLAY_DERIVATIVE_ORDERS", + "SHOW_DERIVATIVE_ORDERS", + "LIST_DERIVATIVE_ORDERS", + "RETRIEVE_DERIVATIVE_ORDERS", +]; + +export const getDerivativeOrderHistorySimiles = [ + "VIEW_DERIVATIVE_ORDER_HISTORY", + "GET_DERIVATIVE_ORDER_HISTORY", + "CHECK_DERIVATIVE_ORDER_HISTORY", + "FETCH_DERIVATIVE_ORDER_HISTORY", + "READ_DERIVATIVE_ORDER_HISTORY", + "DISPLAY_DERIVATIVE_ORDER_HISTORY", + "SHOW_DERIVATIVE_ORDER_HISTORY", + "LIST_DERIVATIVE_ORDER_HISTORY", + "RETRIEVE_DERIVATIVE_ORDER_HISTORY", +]; + +export const getDerivativeTradesSimiles = [ + "VIEW_DERIVATIVE_TRADES", + "GET_DERIVATIVE_TRADES", + "CHECK_DERIVATIVE_TRADES", + "FETCH_DERIVATIVE_TRADES", + "READ_DERIVATIVE_TRADES", + "DISPLAY_DERIVATIVE_TRADES", + "SHOW_DERIVATIVE_TRADES", + "LIST_DERIVATIVE_TRADES", + "RETRIEVE_DERIVATIVE_TRADES", +]; + +// Binary Options +export const getBinaryOptionsMarketsSimiles = [ + "VIEW_BINARY_OPTIONS_MARKET", + "GET_BINARY_OPTIONS_MARKET", + "CHECK_BINARY_OPTIONS_MARKET", + "FETCH_BINARY_OPTIONS_MARKET", + "READ_BINARY_OPTIONS_MARKET", + "DISPLAY_BINARY_OPTIONS_MARKET", + "SHOW_BINARY_OPTIONS_MARKET", + "LIST_BINARY_OPTIONS_MARKET", + "RETRIEVE_BINARY_OPTIONS_MARKET", +]; + +export const getBinaryOptionsMarketSimiles = [ + "VIEW_BINARY_OPTIONS", + "GET_BINARY_OPTIONS", + "CHECK_BINARY_OPTIONS", + "FETCH_BINARY_OPTIONS", + "READ_BINARY_OPTIONS", + "DISPLAY_BINARY_OPTIONS", + "SHOW_BINARY_OPTIONS", + "LIST_BINARY_OPTIONS", + "RETRIEVE_BINARY_OPTIONS", +]; + +// Positions +export const getExchangePositionsSimiles = [ + "VIEW_EXCHANGE_POSITIONS", + "GET_EXCHANGE_POSITIONS", + "CHECK_EXCHANGE_POSITIONS", + "FETCH_EXCHANGE_POSITIONS", + "READ_EXCHANGE_POSITIONS", + "DISPLAY_EXCHANGE_POSITIONS", + "SHOW_EXCHANGE_POSITIONS", + "LIST_EXCHANGE_POSITIONS", + "RETRIEVE_EXCHANGE_POSITIONS", +]; +// Positions +export const getUserPositionsSimiles = [ + "VIEW_USER_POSITIONS", + "GET_USER_POSITIONS", + "CHECK_USER_POSITIONS", + "FETCH_USER_POSITIONS", + "READ_USER_POSITIONS", + "DISPLAY_USER_POSITIONS", + "SHOW_USER_POSITIONS", + "LIST_USER_POSITIONS", + "RETRIEVE_USER_POSITIONS", +]; + +// Funding +export const getFundingPaymentsSimiles = [ + "VIEW_FUNDING_PAYMENTS", + "GET_FUNDING_PAYMENTS", + "CHECK_FUNDING_PAYMENTS", + "FETCH_FUNDING_PAYMENTS", + "READ_FUNDING_PAYMENTS", + "DISPLAY_FUNDING_PAYMENTS", + "SHOW_FUNDING_PAYMENTS", + "LIST_FUNDING_PAYMENTS", + "RETRIEVE_FUNDING_PAYMENTS", +]; + +export const getFundingRatesSimiles = [ + "VIEW_FUNDING_RATES", + "GET_FUNDING_RATES", + "CHECK_FUNDING_RATES", + "FETCH_FUNDING_RATES", + "READ_FUNDING_RATES", + "DISPLAY_FUNDING_RATES", + "SHOW_FUNDING_RATES", + "LIST_FUNDING_RATES", + "RETRIEVE_FUNDING_RATES", +]; + +// Subaccounts +export const getSubaccountTradeNonceSimiles = [ + "VIEW_TRADE_NONCE", + "GET_TRADE_NONCE", + "CHECK_TRADE_NONCE", + "FETCH_TRADE_NONCE", + "READ_TRADE_NONCE", + "DISPLAY_TRADE_NONCE", + "SHOW_TRADE_NONCE", + "LIST_TRADE_NONCE", + "RETRIEVE_TRADE_NONCE", +]; + +export const getSubaccountsListSimiles = [ + "VIEW_SUBACCOUNT_LIST", + "GET_SUBACCOUNT_LIST", + "CHECK_SUBACCOUNT_LIST", + "FETCH_SUBACCOUNT_LIST", + "READ_SUBACCOUNT_LIST", + "DISPLAY_SUBACCOUNT_LIST", + "SHOW_SUBACCOUNT_LIST", + "LIST_SUBACCOUNT_LIST", + "RETRIEVE_SUBACCOUNT_LIST", +]; + +export const getSubaccountBalancesListSimiles = [ + "VIEW_SUBACCOUNT_BALANCES", + "GET_SUBACCOUNT_BALANCES", + "CHECK_SUBACCOUNT_BALANCES", + "FETCH_SUBACCOUNT_BALANCES", + "READ_SUBACCOUNT_BALANCES", + "DISPLAY_SUBACCOUNT_BALANCES", + "SHOW_SUBACCOUNT_BALANCES", + "LIST_SUBACCOUNT_BALANCES", + "RETRIEVE_SUBACCOUNT_BALANCES", +]; + +export const getSubaccountHistorySimiles = [ + "VIEW_SUBACCOUNT_HISTORY", + "GET_SUBACCOUNT_HISTORY", + "CHECK_SUBACCOUNT_HISTORY", + "FETCH_SUBACCOUNT_HISTORY", + "READ_SUBACCOUNT_HISTORY", + "DISPLAY_SUBACCOUNT_HISTORY", + "SHOW_SUBACCOUNT_HISTORY", + "LIST_SUBACCOUNT_HISTORY", + "RETRIEVE_SUBACCOUNT_HISTORY", +]; + +export const getSubaccountOrderSummarySimiles = [ + "VIEW_ORDER_SUMMARY", + "GET_ORDER_SUMMARY", + "CHECK_ORDER_SUMMARY", + "FETCH_ORDER_SUMMARY", + "READ_ORDER_SUMMARY", + "DISPLAY_ORDER_SUMMARY", + "SHOW_ORDER_SUMMARY", + "LIST_ORDER_SUMMARY", + "RETRIEVE_ORDER_SUMMARY", +]; + +export const getOrderStatesSimiles = [ + "VIEW_ORDER_STATE", + "GET_ORDER_STATE", + "CHECK_ORDER_STATE", + "FETCH_ORDER_STATE", + "READ_ORDER_STATE", + "DISPLAY_ORDER_STATE", + "SHOW_ORDER_STATE", + "LIST_ORDER_STATE", + "RETRIEVE_ORDER_STATE", +]; + +export const getIsOptedOutOfRewardsSimiles = [ + "GET_IS_OPTED_OUT_OF_REWARDS", + "VIEW_IS_OPTED_OUT_OF_REWARDS", + "CHECK_IS_OPTED_OUT_OF_REWARDS", + "FETCH_IS_OPTED_OUT_OF_REWARDS", + "READ_IS_OPTED_OUT_OF_REWARDS", + "DISPLAY_IS_OPTED_OUT_OF_REWARDS", + "SHOW_IS_OPTED_OUT_OF_REWARDS", + "LIST_IS_OPTED_OUT_OF_REWARDS", +]; + +// Portfolio +export const getAccountPortfolioSimiles = [ + "VIEW_ACCOUNT_PORTFOLIO", + "GET_ACCOUNT_PORTFOLIO", + "CHECK_ACCOUNT_PORTFOLIO", + "FETCH_ACCOUNT_PORTFOLIO", + "READ_ACCOUNT_PORTFOLIO", + "DISPLAY_ACCOUNT_PORTFOLIO", + "SHOW_ACCOUNT_PORTFOLIO", + "LIST_ACCOUNT_PORTFOLIO", + "RETRIEVE_ACCOUNT_PORTFOLIO", +]; + +export const getAccountPortfolioBalancesSimiles = [ + "VIEW_PORTFOLIO_BALANCES", + "GET_PORTFOLIO_BALANCES", + "CHECK_PORTFOLIO_BALANCES", + "FETCH_PORTFOLIO_BALANCES", + "READ_PORTFOLIO_BALANCES", + "DISPLAY_PORTFOLIO_BALANCES", + "SHOW_PORTFOLIO_BALANCES", + "LIST_PORTFOLIO_BALANCES", + "RETRIEVE_PORTFOLIO_BALANCES", +]; + +// Historical Data +export const getHistoricalBalanceSimiles = [ + "VIEW_HISTORICAL_BALANCE", + "GET_HISTORICAL_BALANCE", + "CHECK_HISTORICAL_BALANCE", + "FETCH_HISTORICAL_BALANCE", + "READ_HISTORICAL_BALANCE", + "DISPLAY_HISTORICAL_BALANCE", + "SHOW_HISTORICAL_BALANCE", + "LIST_HISTORICAL_BALANCE", + "RETRIEVE_HISTORICAL_BALANCE", +]; + +export const getHistoricalRpnlSimiles = [ + "VIEW_HISTORICAL_RPNL", + "GET_HISTORICAL_RPNL", + "CHECK_HISTORICAL_RPNL", + "FETCH_HISTORICAL_RPNL", + "READ_HISTORICAL_RPNL", + "DISPLAY_HISTORICAL_RPNL", + "SHOW_HISTORICAL_RPNL", + "LIST_HISTORICAL_RPNL", + "RETRIEVE_HISTORICAL_RPNL", +]; +// Leaderboard +export const getPnlLeaderboardSimiles = [ + "VIEW_PNL_LEADERBOARD", + "GET_PNL_LEADERBOARD", + "CHECK_PNL_LEADERBOARD", + "FETCH_PNL_LEADERBOARD", + "READ_PNL_LEADERBOARD", + "DISPLAY_PNL_LEADERBOARD", + "SHOW_PNL_LEADERBOARD", + "LIST_PNL_LEADERBOARD", + "RETRIEVE_PNL_LEADERBOARD", +]; + +export const getVolLeaderboardSimiles = [ + "VIEW_VOLUME_LEADERBOARD", + "GET_VOLUME_LEADERBOARD", + "CHECK_VOLUME_LEADERBOARD", + "FETCH_VOLUME_LEADERBOARD", + "READ_VOLUME_LEADERBOARD", + "DISPLAY_VOLUME_LEADERBOARD", + "SHOW_VOLUME_LEADERBOARD", + "LIST_VOLUME_LEADERBOARD", + "RETRIEVE_VOLUME_LEADERBOARD", +]; + +// Message Actions - Order Management +export const msgBatchCancelBinaryOptionsOrdersSimiles = [ + "BATCH_CANCEL_BINARY_OPTIONS_ORDERS", + "BATCH_REMOVE_BINARY_OPTIONS_ORDERS", + "BATCH_DELETE_BINARY_OPTIONS_ORDERS", + "BATCH_STOP_BINARY_OPTIONS_ORDERS", + "BATCH_END_BINARY_OPTIONS_ORDERS", + "BATCH_CLEAR_BINARY_OPTIONS_ORDERS", + "BATCH_TERMINATE_BINARY_OPTIONS_ORDERS", + "BATCH_HALT_BINARY_OPTIONS_ORDERS", + "BATCH_CLOSE_BINARY_OPTIONS_ORDERS", +]; + +export const msgBatchCancelDerivativeOrdersSimiles = [ + "BATCH_CANCEL_DERIVATIVE_ORDERS", + "BATCH_REMOVE_DERIVATIVE_ORDERS", + "BATCH_DELETE_DERIVATIVE_ORDERS", + "BATCH_STOP_DERIVATIVE_ORDERS", + "BATCH_END_DERIVATIVE_ORDERS", + "BATCH_CLEAR_DERIVATIVE_ORDERS", + "BATCH_TERMINATE_DERIVATIVE_ORDERS", + "BATCH_HALT_DERIVATIVE_ORDERS", + "BATCH_CLOSE_DERIVATIVE_ORDERS", +]; + +export const msgBatchCancelSpotOrdersSimiles = [ + "BATCH_CANCEL_SPOT_ORDERS", + "BATCH_REMOVE_SPOT_ORDERS", + "BATCH_DELETE_SPOT_ORDERS", + "BATCH_STOP_SPOT_ORDERS", + "BATCH_END_SPOT_ORDERS", + "BATCH_CLEAR_SPOT_ORDERS", + "BATCH_TERMINATE_SPOT_ORDERS", + "BATCH_HALT_SPOT_ORDERS", + "BATCH_CLOSE_SPOT_ORDERS", +]; + +// Message Actions - Creating Orders +export const msgCreateBinaryOptionsLimitOrderSimiles = [ + "CREATE_BINARY_OPTIONS_LIMIT_ORDERS", + "PLACE_BINARY_OPTIONS_LIMIT_ORDERS", + "SUBMIT_BINARY_OPTIONS_LIMIT_ORDERS", + "START_BINARY_OPTIONS_LIMIT_ORDERS", + "OPEN_BINARY_OPTIONS_LIMIT_ORDERS", + "SET_BINARY_OPTIONS_LIMIT_ORDERS", + "MAKE_BINARY_OPTIONS_LIMIT_ORDERS", + "INITIALIZE_BINARY_OPTIONS_LIMIT_ORDERS", + "BEGIN_BINARY_OPTIONS_LIMIT_ORDERS", +]; + +export const msgCreateBinaryOptionsMarketOrderSimiles = [ + "CREATE_BINARY_OPTIONS_ORDERS", + "PLACE_BINARY_OPTIONS_ORDERS", + "SUBMIT_BINARY_OPTIONS_ORDERS", + "START_BINARY_OPTIONS_ORDERS", + "OPEN_BINARY_OPTIONS_ORDERS", + "SET_BINARY_OPTIONS_ORDERS", + "MAKE_BINARY_OPTIONS_ORDERS", + "INITIALIZE_BINARY_OPTIONS_ORDERS", + "BEGIN_BINARY_OPTIONS_ORDERS", +]; + +export const msgCreateDerivativeLimitOrderSimiles = [ + "CREATE_DERIVATIVE_LIMIT_ORDERS", + "PLACE_DERIVATIVE_LIMIT_ORDERS", + "SUBMIT_DERIVATIVE_LIMIT_ORDERS", + "START_DERIVATIVE_LIMIT_ORDERS", + "OPEN_DERIVATIVE_LIMIT_ORDERS", + "SET_DERIVATIVE_LIMIT_ORDERS", + "MAKE_DERIVATIVE_LIMIT_ORDERS", + "INITIALIZE_DERIVATIVE_LIMIT_ORDERS", + "BEGIN_DERIVATIVE_LIMIT_ORDERS", +]; + +export const msgCreateDerivativeMarketOrderSimiles = [ + "CREATE_DERIVATIVE_MARKET_ORDERS", + "PLACE_DERIVATIVE_MARKET_ORDERS", + "SUBMIT_DERIVATIVE_MARKET_ORDERS", + "START_DERIVATIVE_MARKET_ORDERS", + "OPEN_DERIVATIVE_MARKET_ORDERS", + "SET_DERIVATIVE_MARKET_ORDERS", + "MAKE_DERIVATIVE_MARKET_ORDERS", + "INITIALIZE_DERIVATIVE_MARKET_ORDERS", + "BEGIN_DERIVATIVE_MARKET_ORDERS", +]; + +export const msgCreateSpotLimitOrderSimiles = [ + "CREATE_SPOT_LIMIT_ORDERS", + "PLACE_SPOT_LIMIT_ORDERS", + "SUBMIT_SPOT_LIMIT_ORDERS", + "START_SPOT_LIMIT_ORDERS", + "OPEN_SPOT_LIMIT_ORDERS", + "SET_SPOT_LIMIT_ORDERS", + "MAKE_SPOT_LIMIT_ORDERS", + "INITIALIZE_SPOT_LIMIT_ORDERS", + "BEGIN_SPOT_LIMIT_ORDERS", +]; + +export const msgCreateSpotMarketOrderSimiles = [ + "CREATE_SPOT_MARKET_ORDERS", + "PLACE_SPOT_MARKET_ORDERS", + "SUBMIT_SPOT_MARKET_ORDERS", + "START_SPOT_MARKET_ORDERS", + "OPEN_SPOT_MARKET_ORDERS", + "SET_SPOT_MARKET_ORDERS", + "MAKE_SPOT_MARKET_ORDERS", + "INITIALIZE_SPOT_MARKET_ORDERS", + "BEGIN_SPOT_MARKET_ORDERS", +]; +// Deposit and Withdrawal Actions +export const msgDepositSimiles = [ + "CREATE_EXCHANGE_DEPOSIT", + "MAKE_EXCHANGE_DEPOSIT", + "SUBMIT_EXCHANGE_DEPOSIT", + "START_EXCHANGE_DEPOSIT", + "OPEN_EXCHANGE_DEPOSIT", + "SET_EXCHANGE_DEPOSIT", + "PROCESS_EXCHANGE_DEPOSIT", + "INITIALIZE_EXCHANGE_DEPOSIT", + "BEGIN_EXCHANGE_DEPOSIT", +]; + +export const msgWithdrawSimiles = [ + "CREATE_EXCHANGE_WITHDRAWAL", + "MAKE_EXCHANGE_WITHDRAWAL", + "SUBMIT_EXCHANGE_WITHDRAWAL", + "START_EXCHANGE_WITHDRAWAL", + "OPEN_EXCHANGE_WITHDRAWAL", + "SET_EXCHANGE_WITHDRAWAL", + "PROCESS_EXCHANGE_WITHDRAWAL", + "INITIALIZE_EXCHANGE_WITHDRAWAL", + "BEGIN_EXCHANGE_WITHDRAWAL", +]; + +// Position Management Actions +export const msgIncreasePositionMarginSimiles = [ + "INCREASE_POSITION_MARGIN", + "ADD_POSITION_MARGIN", + "RAISE_POSITION_MARGIN", + "BOOST_POSITION_MARGIN", + "EXPAND_POSITION_MARGIN", + "EXTEND_POSITION_MARGIN", + "ENHANCE_POSITION_MARGIN", + "GROW_POSITION_MARGIN", + "LIFT_POSITION_MARGIN", +]; + +export const msgLiquidatePositionSimiles = [ + "LIQUIDATE_EXCHANGE_POSITION", + "END_EXCHANGE_POSITION", + "TERMINATE_EXCHANGE_POSITION", + "FINISH_EXCHANGE_POSITION", + "CLEAR_EXCHANGE_POSITION", + "COMPLETE_EXCHANGE_POSITION", + "RESOLVE_EXCHANGE_POSITION", + "SETTLE_EXCHANGE_POSITION", +]; + +// Administrative Actions +export const msgInstantSpotMarketLaunchSimiles = [ + "LAUNCH_SPOT_MARKET", + "START_SPOT_MARKET", + "CREATE_SPOT_MARKET", + "OPEN_SPOT_MARKET", + "INITIALIZE_SPOT_MARKET", + "BEGIN_SPOT_MARKET", + "DEPLOY_SPOT_MARKET", + "ESTABLISH_SPOT_MARKET", + "ACTIVATE_SPOT_MARKET", +]; + +export const msgReclaimLockedFundsSimiles = [ + "RECLAIM_LOCKED_FUNDS", + "RECOVER_LOCKED_FUNDS", + "RETRIEVE_LOCKED_FUNDS", + "RELEASE_LOCKED_FUNDS", + "RESTORE_LOCKED_FUNDS", + "RETURN_LOCKED_FUNDS", + "UNLOCK_LOCKED_FUNDS", + "FREE_LOCKED_FUNDS", + "COLLECT_LOCKED_FUNDS", +]; + +export const msgRewardsOptOutSimiles = [ + "DISABLE_EXCHANGE_REWARDS", + "STOP_EXCHANGE_REWARDS", + "EXIT_EXCHANGE_REWARDS", + "LEAVE_EXCHANGE_REWARDS", + "QUIT_EXCHANGE_REWARDS", + "END_EXCHANGE_REWARDS", + "WITHDRAW_EXCHANGE_REWARDS", + "ABANDON_EXCHANGE_REWARDS", + "DECLINE_EXCHANGE_REWARDS", +]; + +export const msgSignDataSimiles = [ + "SIGN_EXCHANGE_DATA", + "AUTHORIZE_EXCHANGE_DATA", + "APPROVE_EXCHANGE_DATA", + "VALIDATE_EXCHANGE_DATA", + "CONFIRM_EXCHANGE_DATA", + "VERIFY_EXCHANGE_DATA", + "ENDORSE_EXCHANGE_DATA", + "CERTIFY_EXCHANGE_DATA", + "AUTHENTICATE_EXCHANGE_DATA", +]; + +export const msgExternalTransferSimiles = [ + "CREATE_EXTERNAL_TRANSFER", + "MAKE_EXTERNAL_TRANSFER", + "SUBMIT_EXTERNAL_TRANSFER", + "START_EXTERNAL_TRANSFER", + "PROCESS_EXTERNAL_TRANSFER", + "INITIATE_EXTERNAL_TRANSFER", + "BEGIN_EXTERNAL_TRANSFER", + "EXECUTE_EXTERNAL_TRANSFER", + "PERFORM_EXTERNAL_TRANSFER", +]; + +export const msgAdminUpdateBinaryOptionsMarketSimiles = [ + "UPDATE_BINARY_OPTIONS", + "MODIFY_BINARY_OPTIONS", + "CHANGE_BINARY_OPTIONS", + "ADJUST_BINARY_OPTIONS", + "EDIT_BINARY_OPTIONS", + "REVISE_BINARY_OPTIONS", + "ALTER_BINARY_OPTIONS", + "AMEND_BINARY_OPTIONS", + "CONFIGURE_BINARY_OPTIONS", +]; +export const getRewardsSimiles = [ + "VIEW_EXCHANGE_REWARDS", + "GET_EXCHANGE_REWARDS", + "CHECK_EXCHANGE_REWARDS", + "FETCH_EXCHANGE_REWARDS", + "READ_EXCHANGE_REWARDS", + "DISPLAY_EXCHANGE_REWARDS", + "SHOW_EXCHANGE_REWARDS", + "LIST_EXCHANGE_REWARDS", + "RETRIEVE_EXCHANGE_REWARDS", +]; + +export const getAtomicSwapHistorySimiles = [ + "VIEW_ATOMIC_SWAPS", + "GET_ATOMIC_SWAPS", + "CHECK_ATOMIC_SWAPS", + "FETCH_ATOMIC_SWAPS", + "READ_ATOMIC_SWAPS", + "DISPLAY_ATOMIC_SWAPS", + "SHOW_ATOMIC_SWAPS", + "LIST_ATOMIC_SWAPS", + "RETRIEVE_ATOMIC_SWAPS", +]; + +export const getGridStrategiesSimiles = [ + "VIEW_GRID_STRATEGIES", + "GET_GRID_STRATEGIES", + "CHECK_GRID_STRATEGIES", + "FETCH_GRID_STRATEGIES", + "READ_GRID_STRATEGIES", + "DISPLAY_GRID_STRATEGIES", + "SHOW_GRID_STRATEGIES", + "LIST_GRID_STRATEGIES", + "RETRIEVE_GRID_STRATEGIES", +]; + +export const getHistoricalVolumesSimiles = [ + "VIEW_HISTORICAL_VOLUMES", + "GET_HISTORICAL_VOLUMES", + "CHECK_HISTORICAL_VOLUMES", + "FETCH_HISTORICAL_VOLUMES", + "READ_HISTORICAL_VOLUMES", + "DISPLAY_HISTORICAL_VOLUMES", + "SHOW_HISTORICAL_VOLUMES", + "LIST_HISTORICAL_VOLUMES", + "RETRIEVE_HISTORICAL_VOLUMES", +]; + +export const getPnlLeaderboardFixedResolutionSimiles = [ + "VIEW_FIXED_RESOLUTION_LEADERBOARD", + "GET_FIXED_RESOLUTION_LEADERBOARD", + "CHECK_FIXED_RESOLUTION_LEADERBOARD", + "FETCH_FIXED_RESOLUTION_LEADERBOARD", + "READ_FIXED_RESOLUTION_LEADERBOARD", + "DISPLAY_FIXED_RESOLUTION_LEADERBOARD", + "SHOW_FIXED_RESOLUTION_LEADERBOARD", + "LIST_FIXED_RESOLUTION_LEADERBOARD", + "RETRIEVE_FIXED_RESOLUTION_LEADERBOARD", +]; + +export const getVolLeaderboardFixedResolutionSimiles = [ + "VIEW_VOLUME_FIXED", + "GET_VOLUME_FIXED", + "CHECK_VOLUME_FIXED", + "FETCH_VOLUME_FIXED", + "READ_VOLUME_FIXED", + "DISPLAY_VOLUME_FIXED", + "SHOW_VOLUME_FIXED", + "LIST_VOLUME_FIXED", + "RETRIEVE_VOLUME_FIXED", +]; + +export const getDenomHoldersSimiles = [ + "VIEW_DENOM_HOLDERS", + "GET_DENOM_HOLDERS", + "CHECK_DENOM_HOLDERS", + "FETCH_DENOM_HOLDERS", + "READ_DENOM_HOLDERS", + "DISPLAY_DENOM_HOLDERS", + "SHOW_DENOM_HOLDERS", + "LIST_DENOM_HOLDERS", + "RETRIEVE_DENOM_HOLDERS", +]; + +export const msgBatchUpdateOrdersSimiles = [ + "UPDATE_ORDER_BATCH", + "MODIFY_ORDER_BATCH", + "CHANGE_ORDER_BATCH", + "ADJUST_ORDER_BATCH", + "EDIT_ORDER_BATCH", + "REVISE_ORDER_BATCH", + "ALTER_ORDER_BATCH", + "AMEND_ORDER_BATCH", + "CONFIGURE_ORDER_BATCH", +]; + +export const msgCancelBinaryOptionsOrderSimiles = [ + "CANCEL_BINARY_OPTIONS_ORDER", + "REMOVE_BINARY_OPTIONS_ORDER", + "DELETE_BINARY_OPTIONS_ORDER", + "STOP_BINARY_OPTIONS_ORDER", + "END_BINARY_OPTIONS_ORDER", + "CLEAR_BINARY_OPTIONS_ORDER", + "TERMINATE_BINARY_OPTIONS_ORDER", + "HALT_BINARY_OPTIONS_ORDER", + "CLOSE_BINARY_OPTIONS_ORDER", +]; + +export const msgCancelDerivativeOrderSimiles = [ + "CANCEL_DERIVATIVE_ORDER", + "REMOVE_DERIVATIVE_ORDER", + "DELETE_DERIVATIVE_ORDER", + "STOP_DERIVATIVE_ORDER", + "END_DERIVATIVE_ORDER", + "CLEAR_DERIVATIVE_ORDER", + "TERMINATE_DERIVATIVE_ORDER", + "HALT_DERIVATIVE_ORDER", + "CLOSE_DERIVATIVE_ORDER", +]; + +export const msgCancelSpotOrderSimiles = [ + "CANCEL_SPOT_ORDER", + "REMOVE_SPOT_ORDER", + "DELETE_SPOT_ORDER", + "STOP_SPOT_ORDER", + "END_SPOT_ORDER", + "CLEAR_SPOT_ORDER", + "TERMINATE_SPOT_ORDER", + "HALT_SPOT_ORDER", + "CLOSE_SPOT_ORDER", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/explorer.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/explorer.ts new file mode 100644 index 000000000000..c1b8b4d3a951 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/explorer.ts @@ -0,0 +1,131 @@ +export const getTxByHashSimiles = [ + "VIEW_TRANSACTION_BY_HASH_BY_HASH", + "GET_TRANSACTION_BY_HASH", + "CHECK_TRANSACTION_BY_HASH", + "FETCH_TRANSACTION_BY_HASH", + "READ_TRANSACTION_BY_HASH", + "DISPLAY_TRANSACTION_BY_HASH", + "SHOW_TRANSACTION_BY_HASH", + "LIST_TRANSACTION_BY_HASH", + "RETRIEVE_TRANSACTION_BY_HASH", +]; + +export const getAccountTxSimiles = [ + "VIEW_ACCOUNT_TRANSACTIONS", + "GET_ACCOUNT_TRANSACTIONS", + "CHECK_ACCOUNT_TRANSACTIONS", + "FETCH_ACCOUNT_TRANSACTIONS", + "READ_ACCOUNT_TRANSACTIONS", + "DISPLAY_ACCOUNT_TRANSACTIONS", + "SHOW_ACCOUNT_TRANSACTIONS", + "LIST_ACCOUNT_TRANSACTIONS", + "RETRIEVE_ACCOUNT_TRANSACTIONS", +]; + +export const getExplorerValidatorSimiles = [ + "VIEW_EXPLORER_EXPLORER_VALIDATOR", + "GET_EXPLORER_EXPLORER_VALIDATOR", + "CHECK_EXPLORER_VALIDATOR", + "FETCH_EXPLORER_VALIDATOR", + "READ_EXPLORER_VALIDATOR", + "DISPLAY_EXPLORER_VALIDATOR", + "SHOW_EXPLORER_VALIDATOR", + "LIST_EXPLORER_VALIDATOR", + "RETRIEVE_EXPLORER_VALIDATOR", +]; + +export const getExplorerValidatorUptimeSimiles = [ + "VIEW_EXPLORER_VALIDATOR_UPTIME", + "GET_EXPLORER_VALIDATOR_UPTIME", + "CHECK_EXPLORER_VALIDATOR_UPTIME", + "FETCH_EXPLORER_VALIDATOR_UPTIME", + "READ_EXPLORER_VALIDATOR_UPTIME", + "DISPLAY_EXPLORER_VALIDATOR_UPTIME", + "SHOW_EXPLORER_VALIDATOR_UPTIME", + "LIST_EXPLORER_VALIDATOR_UPTIME", + "RETRIEVE_EXPLORER_VALIDATOR_UPTIME", +]; + +export const getPeggyDepositTxsSimiles = [ + "VIEW_PEGGY_DEPOSITS", + "GET_PEGGY_DEPOSITS", + "CHECK_PEGGY_DEPOSITS", + "FETCH_PEGGY_DEPOSITS", + "READ_PEGGY_DEPOSITS", + "DISPLAY_PEGGY_DEPOSITS", + "SHOW_PEGGY_DEPOSITS", + "LIST_PEGGY_DEPOSITS", + "RETRIEVE_PEGGY_DEPOSITS", +]; + +export const getPeggyWithdrawalTxsSimiles = [ + "VIEW_PEGGY_WITHDRAWALS", + "GET_PEGGY_WITHDRAWALS", + "CHECK_PEGGY_WITHDRAWALS", + "FETCH_PEGGY_WITHDRAWALS", + "READ_PEGGY_WITHDRAWALS", + "DISPLAY_PEGGY_WITHDRAWALS", + "SHOW_PEGGY_WITHDRAWALS", + "LIST_PEGGY_WITHDRAWALS", + "RETRIEVE_PEGGY_WITHDRAWALS", +]; + +export const getBlocksSimiles = [ + "VIEW_BLOCKS", + "GET_BLOCKS", + "CHECK_BLOCKS", + "FETCH_BLOCKS", + "READ_BLOCKS", + "DISPLAY_BLOCKS", + "SHOW_BLOCKS", + "LIST_BLOCKS", + "RETRIEVE_BLOCKS", +]; + +export const getBlockSimiles = [ + "VIEW_BLOCK", + "GET_BLOCK", + "CHECK_BLOCK", + "FETCH_BLOCK", + "READ_BLOCK", + "DISPLAY_BLOCK", + "SHOW_BLOCK", + "LIST_BLOCK", + "RETRIEVE_BLOCK", +]; + +export const getTxsSimiles = [ + "VIEW_TRANSACTIONS", + "GET_TRANSACTIONS", + "CHECK_TRANSACTIONS", + "FETCH_TRANSACTIONS", + "READ_TRANSACTIONS", + "DISPLAY_TRANSACTIONS", + "SHOW_TRANSACTIONS", + "LIST_TRANSACTIONS", + "RETRIEVE_TRANSACTIONS", +]; + +export const getIBCTransferTxsSimiles = [ + "VIEW_IBC_TRANSFERS", + "GET_IBC_TRANSFERS", + "CHECK_IBC_TRANSFERS", + "FETCH_IBC_TRANSFERS", + "READ_IBC_TRANSFERS", + "DISPLAY_IBC_TRANSFERS", + "SHOW_IBC_TRANSFERS", + "LIST_IBC_TRANSFERS", + "RETRIEVE_IBC_TRANSFERS", +]; + +export const getExplorerStatsSimiles = [ + "VIEW_EXPLORER_STATS", + "GET_EXPLORER_STATS", + "CHECK_EXPLORER_STATS", + "FETCH_EXPLORER_STATS", + "READ_EXPLORER_STATS", + "DISPLAY_EXPLORER_STATS", + "SHOW_EXPLORER_STATS", + "LIST_EXPLORER_STATS", + "RETRIEVE_EXPLORER_STATS", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/gov.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/gov.ts new file mode 100644 index 000000000000..0550865a4440 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/gov.ts @@ -0,0 +1,167 @@ +export const getGovernanceModuleParamsSimiles = [ + "VIEW_GOVERNANCE_PARAMS", + "GET_GOVERNANCE_PARAMS", + "CHECK_GOVERNANCE_PARAMS", + "FETCH_GOVERNANCE_PARAMS", + "READ_GOVERNANCE_PARAMS", + "DISPLAY_GOVERNANCE_PARAMS", + "SHOW_GOVERNANCE_PARAMS", + "LIST_GOVERNANCE_PARAMS", + "RETRIEVE_GOVERNANCE_PARAMS", +]; + +export const getProposalsSimiles = [ + "VIEW_PROPOSALS", + "GET_PROPOSALS", + "CHECK_PROPOSALS", + "FETCH_PROPOSALS", + "READ_PROPOSALS", + "DISPLAY_PROPOSALS", + "SHOW_PROPOSALS", + "LIST_PROPOSALS", + "RETRIEVE_PROPOSALS", +]; + +export const getProposalSimiles = [ + "VIEW_PROPOSAL", + "GET_PROPOSAL", + "CHECK_PROPOSAL", + "FETCH_PROPOSAL", + "READ_PROPOSAL", + "DISPLAY_PROPOSAL", + "SHOW_PROPOSAL", + "LIST_PROPOSAL", + "RETRIEVE_PROPOSAL", +]; + +export const getProposalDepositsSimiles = [ + "VIEW_PROPOSAL_DEPOSITS", + "GET_PROPOSAL_DEPOSITS", + "CHECK_PROPOSAL_DEPOSITS", + "FETCH_PROPOSAL_DEPOSITS", + "READ_PROPOSAL_DEPOSITS", + "DISPLAY_PROPOSAL_DEPOSITS", + "SHOW_PROPOSAL_DEPOSITS", + "LIST_PROPOSAL_DEPOSITS", + "RETRIEVE_PROPOSAL_DEPOSITS", +]; + +export const getProposalVotesSimiles = [ + "VIEW_PROPOSAL_VOTES", + "GET_PROPOSAL_VOTES", + "CHECK_PROPOSAL_VOTES", + "FETCH_PROPOSAL_VOTES", + "READ_PROPOSAL_VOTES", + "DISPLAY_PROPOSAL_VOTES", + "SHOW_PROPOSAL_VOTES", + "LIST_PROPOSAL_VOTES", + "RETRIEVE_PROPOSAL_VOTES", +]; + +export const getProposalTallySimiles = [ + "VIEW_PROPOSAL_TALLY", + "GET_PROPOSAL_TALLY", + "CHECK_PROPOSAL_TALLY", + "FETCH_PROPOSAL_TALLY", + "READ_PROPOSAL_TALLY", + "DISPLAY_PROPOSAL_TALLY", + "SHOW_PROPOSAL_TALLY", + "LIST_PROPOSAL_TALLY", + "RETRIEVE_PROPOSAL_TALLY", +]; + +export const msgSubmitProposalExpiryFuturesMarketLaunchSimiles = [ + "SUBMIT_EXPIRY_FUTURES_MARKET_PROPOSAL", + "CREATE_EXPIRY_FUTURES_MARKET_PROPOSAL", + "INITIALIZE_EXPIRY_FUTURES_MARKET_PROPOSAL", + "START_EXPIRY_FUTURES_MARKET_PROPOSAL", + "LAUNCH_EXPIRY_FUTURES_MARKET_PROPOSAL", + "PROPOSE_EXPIRY_FUTURES_MARKET_MARKET", + "BEGIN_EXPIRY_FUTURES_MARKET_PROPOSAL", + "ESTABLISH_EXPIRY_FUTURES_MARKET_PROPOSAL", + "SETUP_EXPIRY_FUTURES_MARKET_PROPOSAL", +]; + +export const msgSubmitProposalSpotMarketLaunchSimiles = [ + "SUBMIT_SPOT_MARKET_PROPOSAL", + "CREATE_SPOT_MARKET_PROPOSAL", + "INITIALIZE_SPOT_MARKET_PROPOSAL", + "START_SPOT_MARKET_PROPOSAL", + "LAUNCH_SPOT_MARKET_PROPOSAL", + "PROPOSE_SPOT_MARKET", + "BEGIN_SPOT_MARKET_PROPOSAL", + "ESTABLISH_SPOT_MARKET_PROPOSAL", + "SETUP_SPOT_MARKET_PROPOSAL", +]; + +export const msgSubmitProposalPerpetualMarketLaunchSimiles = [ + "SUBMIT_PERPETUAL_MARKET_PROPOSAL", + "CREATE_PERPETUAL_MARKET_PROPOSAL", + "INITIALIZE_PERPETUAL_MARKET_PROPOSAL", + "START_PERPETUAL_MARKET_PROPOSAL", + "LAUNCH_PERPETUAL_MARKET_PROPOSAL", + "PROPOSE_PERPETUAL_MARKET", + "BEGIN_PERPETUAL_MARKET_PROPOSAL", + "ESTABLISH_PERPETUAL_MARKET_PROPOSAL", + "SETUP_PERPETUAL_MARKET_PROPOSAL", +]; + +export const msgVoteSimiles = [ + "SUBMIT_VOTE", + "CAST_VOTE", + "REGISTER_VOTE", + "RECORD_VOTE", + "ENTER_VOTE", + "PLACE_VOTE", + "LOG_VOTE", + "SEND_VOTE", + "MAKE_VOTE", +]; + +export const msgSubmitTextProposalSimiles = [ + "SUBMIT_TEXT_PROPOSAL", + "CREATE_TEXT_PROPOSAL", + "INITIALIZE_TEXT_PROPOSAL", + "START_TEXT_PROPOSAL", + "LAUNCH_TEXT_PROPOSAL", + "PROPOSE_TEXT_CHANGE", + "BEGIN_TEXT_PROPOSAL", + "ESTABLISH_TEXT_PROPOSAL", + "SETUP_TEXT_PROPOSAL", +]; + +export const msgSubmitProposalSpotMarketParamUpdateSimiles = [ + "SUBMIT_SPOT_MARKET_PARAM_UPDATE", + "CREATE_SPOT_MARKET_PARAM_UPDATE", + "INITIALIZE_SPOT_MARKET_PARAM_UPDATE", + "START_SPOT_MARKET_PARAM_UPDATE", + "LAUNCH_SPOT_MARKET_PARAM_UPDATE", + "PROPOSE_SPOT_MARKET_PARAM_CHANGE", + "BEGIN_SPOT_MARKET_PARAM_UPDATE", + "ESTABLISH_SPOT_MARKET_PARAM_UPDATE", + "SETUP_SPOT_MARKET_PARAM_UPDATE", +]; + +export const msgSubmitGenericProposalSimiles = [ + "SUBMIT_GENERIC_PROPOSAL", + "CREATE_GENERIC_PROPOSAL", + "INITIALIZE_GENERIC_PROPOSAL", + "START_GENERIC_PROPOSAL", + "LAUNCH_GENERIC_PROPOSAL", + "PROPOSE_GENERIC_CHANGE", + "BEGIN_GENERIC_PROPOSAL", + "ESTABLISH_GENERIC_PROPOSAL", + "SETUP_GENERIC_PROPOSAL", +]; + +export const msgGovDepositSimiles = [ + "SUBMIT_PROPOSAL_DEPOSIT", + "ADD_PROPOSAL_DEPOSIT", + "MAKE_PROPOSAL_DEPOSIT", + "SEND_PROPOSAL_DEPOSIT", + "PLACE_PROPOSAL_DEPOSIT", + "TRANSFER_PROPOSAL_DEPOSIT", + "DEPOSIT_TO_PROPOSAL", + "FUND_PROPOSAL", + "CONTRIBUTE_TO_PROPOSAL", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/ibc.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/ibc.ts new file mode 100644 index 000000000000..1fba527763b1 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/ibc.ts @@ -0,0 +1,35 @@ +export const getDenomTraceSimiles = [ + "VIEW_DENOM_TRACE", + "GET_DENOM_TRACE", + "CHECK_DENOM_TRACE", + "FETCH_DENOM_TRACE", + "READ_DENOM_TRACE", + "DISPLAY_DENOM_TRACE", + "SHOW_DENOM_TRACE", + "LIST_DENOM_TRACE", + "RETRIEVE_DENOM_TRACE", +]; + +export const getDenomsTraceSimiles = [ + "VIEW_DENOM_TRACES", + "GET_DENOM_TRACES", + "CHECK_DENOM_TRACES", + "FETCH_DENOM_TRACES", + "READ_DENOM_TRACES", + "DISPLAY_DENOM_TRACES", + "SHOW_DENOM_TRACES", + "LIST_DENOM_TRACES", + "RETRIEVE_DENOM_TRACES", +]; + +export const msgIBCTransferSimiles = [ + "SUBMIT_IBC_TRANSFER", + "EXECUTE_IBC_TRANSFER", + "PERFORM_IBC_TRANSFER", + "SEND_IBC_TOKENS", + "TRANSFER_IBC_TOKENS", + "INITIATE_IBC_TRANSFER", + "START_IBC_TRANSFER", + "CREATE_IBC_TRANSFER", + "PROCESS_IBC_TRANSFER", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/insurance.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/insurance.ts new file mode 100644 index 000000000000..2f2ac0c80903 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/insurance.ts @@ -0,0 +1,95 @@ +export const getInsuranceModuleParamsSimiles = [ + "VIEW_INSURANCE_MODULE_PARAMS", + "GET_INSURANCE_MODULE_PARAMS", + "CHECK_INSURANCE_MODULE_PARAMS", + "FETCH_INSURANCE_MODULE_PARAMS", + "READ_INSURANCE_MODULE_PARAMS", + "DISPLAY_INSURANCE_MODULE_PARAMS", + "SHOW_INSURANCE_MODULE_PARAMS", + "LIST_INSURANCE_MODULE_PARAMS", + "RETRIEVE_INSURANCE_MODULE_PARAMS", +]; + +export const getInsuranceFundsSimiles = [ + "VIEW_INSURANCE_FUNDS", + "GET_INSURANCE_FUNDS", + "CHECK_INSURANCE_FUNDS", + "FETCH_INSURANCE_FUNDS", + "READ_INSURANCE_FUNDS", + "DISPLAY_INSURANCE_FUNDS", + "SHOW_INSURANCE_FUNDS", + "LIST_INSURANCE_FUNDS", + "RETRIEVE_INSURANCE_FUNDS", +]; + +export const getInsuranceFundSimiles = [ + "VIEW_INSURANCE_FUND", + "GET_INSURANCE_FUND", + "CHECK_INSURANCE_FUND", + "FETCH_INSURANCE_FUND", + "READ_INSURANCE_FUND", + "DISPLAY_INSURANCE_FUND", + "SHOW_INSURANCE_FUND", + "LIST_INSURANCE_FUND", + "RETRIEVE_INSURANCE_FUND", +]; + +export const getEstimatedRedemptionsSimiles = [ + "VIEW_ESTIMATED_REDEMPTIONS", + "GET_ESTIMATED_REDEMPTIONS", + "CHECK_ESTIMATED_REDEMPTIONS", + "FETCH_ESTIMATED_REDEMPTIONS", + "READ_ESTIMATED_REDEMPTIONS", + "DISPLAY_ESTIMATED_REDEMPTIONS", + "SHOW_ESTIMATED_REDEMPTIONS", + "LIST_ESTIMATED_REDEMPTIONS", + "RETRIEVE_ESTIMATED_REDEMPTIONS", +]; + +export const getPendingRedemptionsSimiles = [ + "VIEW_PENDING_REDEMPTIONS", + "GET_PENDING_REDEMPTIONS", + "CHECK_PENDING_REDEMPTIONS", + "FETCH_PENDING_REDEMPTIONS", + "READ_PENDING_REDEMPTIONS", + "DISPLAY_PENDING_REDEMPTIONS", + "SHOW_PENDING_REDEMPTIONS", + "LIST_PENDING_REDEMPTIONS", + "RETRIEVE_PENDING_REDEMPTIONS", +]; + +export const msgCreateInsuranceFundSimiles = [ + "CREATE_INSURANCE_FUND", + "ESTABLISH_INSURANCE_FUND", + "SETUP_INSURANCE_FUND", + "INITIALIZE_INSURANCE_FUND", + "START_INSURANCE_FUND", + "LAUNCH_INSURANCE_FUND", + "OPEN_INSURANCE_FUND", + "BEGIN_INSURANCE_FUND", + "INSTITUTE_INSURANCE_FUND", +]; + +export const msgRequestRedemptionSimiles = [ + "REQUEST_REDEMPTION", + "INITIATE_REDEMPTION", + "SUBMIT_REDEMPTION", + "START_REDEMPTION", + "PROCESS_REDEMPTION", + "CREATE_REDEMPTION", + "EXECUTE_REDEMPTION", + "BEGIN_REDEMPTION", + "PERFORM_REDEMPTION", +]; + +export const msgUnderwriteSimiles = [ + "UNDERWRITE_INSURANCE", + "BACK_INSURANCE", + "SUPPORT_INSURANCE", + "GUARANTEE_INSURANCE", + "SECURE_INSURANCE", + "SPONSOR_INSURANCE", + "FUND_INSURANCE", + "FINANCE_INSURANCE", + "PROVIDE_INSURANCE_BACKING", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/mint.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/mint.ts new file mode 100644 index 000000000000..d5f12887b354 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/mint.ts @@ -0,0 +1,35 @@ +export const getMintModuleParamsSimiles = [ + "VIEW_MINT_MODULE_PARAMS", + "GET_MINT_MODULE_PARAMS", + "CHECK_MINT_MODULE_PARAMS", + "FETCH_MINT_MODULE_PARAMS", + "READ_MINT_MODULE_PARAMS", + "DISPLAY_MINT_MODULE_PARAMS", + "SHOW_MINT_MODULE_PARAMS", + "LIST_MINT_MODULE_PARAMS", + "RETRIEVE_MINT_MODULE_PARAMS", +]; + +export const getInflationSimiles = [ + "VIEW_INFLATION_RATE", + "GET_INFLATION_RATE", + "CHECK_INFLATION_RATE", + "FETCH_INFLATION_RATE", + "READ_INFLATION_RATE", + "DISPLAY_INFLATION_RATE", + "SHOW_INFLATION_RATE", + "LIST_INFLATION_RATE", + "RETRIEVE_INFLATION_RATE", +]; + +export const getAnnualProvisionsSimiles = [ + "VIEW_ANNUAL_PROVISIONS", + "GET_ANNUAL_PROVISIONS", + "CHECK_ANNUAL_PROVISIONS", + "FETCH_ANNUAL_PROVISIONS", + "READ_ANNUAL_PROVISIONS", + "DISPLAY_ANNUAL_PROVISIONS", + "SHOW_ANNUAL_PROVISIONS", + "LIST_ANNUAL_PROVISIONS", + "RETRIEVE_ANNUAL_PROVISIONS", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/mito.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/mito.ts new file mode 100644 index 000000000000..6f039389f897 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/mito.ts @@ -0,0 +1,364 @@ +// Vault Related Similes +export const getVaultSimiles = [ + "VIEW_VAULT", + "GET_VAULT", + "CHECK_VAULT", + "FETCH_VAULT", + "READ_VAULT", + "DISPLAY_VAULT", + "SHOW_VAULT", + "LIST_VAULT", + "RETRIEVE_VAULT", +]; + +export const getVaultsSimiles = [ + "VIEW_VAULTS", + "GET_VAULTS", + "CHECK_VAULTS", + "FETCH_VAULTS", + "READ_VAULTS", + "DISPLAY_VAULTS", + "SHOW_VAULTS", + "LIST_VAULTS", + "RETRIEVE_VAULTS", +]; + +export const getVaultsByHolderAddressSimiles = [ + "VIEW_HOLDER_VAULTS", + "GET_HOLDER_VAULTS", + "CHECK_HOLDER_VAULTS", + "FETCH_HOLDER_VAULTS", + "READ_HOLDER_VAULTS", + "DISPLAY_HOLDER_VAULTS", + "SHOW_HOLDER_VAULTS", + "LIST_HOLDER_VAULTS", + "RETRIEVE_HOLDER_VAULTS", +]; + +// LP Token Related Similes +export const getLpTokenPriceChartSimiles = [ + "VIEW_LP_PRICE_CHART", + "GET_LP_PRICE_CHART", + "CHECK_LP_PRICE_CHART", + "FETCH_LP_PRICE_CHART", + "READ_LP_PRICE_CHART", + "DISPLAY_LP_PRICE_CHART", + "SHOW_LP_PRICE_CHART", + "LIST_LP_PRICE_CHART", + "RETRIEVE_LP_PRICE_CHART", +]; + +export const getLPHoldersSimiles = [ + "VIEW_LP_HOLDERS", + "GET_LP_HOLDERS", + "CHECK_LP_HOLDERS", + "FETCH_LP_HOLDERS", + "READ_LP_HOLDERS", + "DISPLAY_LP_HOLDERS", + "SHOW_LP_HOLDERS", + "LIST_LP_HOLDERS", + "RETRIEVE_LP_HOLDERS", +]; + +// TVL and Portfolio Related Similes +export const getTVLChartSimiles = [ + "VIEW_TVL_CHART", + "GET_TVL_CHART", + "CHECK_TVL_CHART", + "FETCH_TVL_CHART", + "READ_TVL_CHART", + "DISPLAY_TVL_CHART", + "SHOW_TVL_CHART", + "LIST_TVL_CHART", + "RETRIEVE_TVL_CHART", +]; + +export const getHolderPortfolioSimiles = [ + "VIEW_HOLDER_PORTFOLIO", + "GET_HOLDER_PORTFOLIO", + "CHECK_HOLDER_PORTFOLIO", + "FETCH_HOLDER_PORTFOLIO", + "READ_HOLDER_PORTFOLIO", + "DISPLAY_HOLDER_PORTFOLIO", + "SHOW_HOLDER_PORTFOLIO", + "LIST_HOLDER_PORTFOLIO", + "RETRIEVE_HOLDER_PORTFOLIO", +]; + +// MITO_LEADERBOARD Related Similes +export const getLeaderboardSimiles = [ + "VIEW_MITO_LEADERBOARD", + "GET_MITO_LEADERBOARD", + "CHECK_MITO_LEADERBOARD", + "FETCH_MITO_LEADERBOARD", + "READ_MITO_LEADERBOARD", + "DISPLAY_MITO_LEADERBOARD", + "SHOW_MITO_LEADERBOARD", + "LIST_MITO_LEADERBOARD", + "RETRIEVE_MITO_LEADERBOARD", +]; + +export const getLeaderboardEpochsSimiles = [ + "VIEW_MITO_LEADERBOARD_EPOCHS", + "GET_MITO_LEADERBOARD_EPOCHS", + "CHECK_MITO_LEADERBOARD_EPOCHS", + "FETCH_MITO_LEADERBOARD_EPOCHS", + "READ_MITO_LEADERBOARD_EPOCHS", + "DISPLAY_MITO_LEADERBOARD_EPOCHS", + "SHOW_MITO_LEADERBOARD_EPOCHS", + "LIST_MITO_LEADERBOARD_EPOCHS", + "RETRIEVE_MITO_LEADERBOARD_EPOCHS", +]; + +// Transfer Related Similes +export const getTransferHistorySimiles = [ + "VIEW_TRANSFER_HISTORY", + "GET_TRANSFER_HISTORY", + "CHECK_TRANSFER_HISTORY", + "FETCH_TRANSFER_HISTORY", + "READ_TRANSFER_HISTORY", + "DISPLAY_TRANSFER_HISTORY", + "SHOW_TRANSFER_HISTORY", + "LIST_TRANSFER_HISTORY", + "RETRIEVE_TRANSFER_HISTORY", +]; + +// Staking Related Similes +export const getStakingPoolsSimiles = [ + "VIEW_STAKING_POOLS", + "GET_STAKING_POOLS", + "CHECK_STAKING_POOLS", + "FETCH_STAKING_POOLS", + "READ_STAKING_POOLS", + "DISPLAY_STAKING_POOLS", + "SHOW_STAKING_POOLS", + "LIST_STAKING_POOLS", + "RETRIEVE_STAKING_POOLS", +]; + +export const getStakingHistorySimiles = [ + "VIEW_STAKING_HISTORY", + "GET_STAKING_HISTORY", + "CHECK_STAKING_HISTORY", + "FETCH_STAKING_HISTORY", + "READ_STAKING_HISTORY", + "DISPLAY_STAKING_HISTORY", + "SHOW_STAKING_HISTORY", + "LIST_STAKING_HISTORY", + "RETRIEVE_STAKING_HISTORY", +]; + +export const getStakingRewardsByAccountSimiles = [ + "VIEW_STAKING_REWARDS", + "GET_STAKING_REWARDS", + "CHECK_STAKING_REWARDS", + "FETCH_STAKING_REWARDS", + "READ_STAKING_REWARDS", + "DISPLAY_STAKING_REWARDS", + "SHOW_STAKING_REWARDS", + "LIST_STAKING_REWARDS", + "RETRIEVE_STAKING_REWARDS", +]; + +// Mission Related Similes +export const getMissionsSimiles = [ + "VIEW_MISSIONS", + "GET_MISSIONS", + "CHECK_MISSIONS", + "FETCH_MISSIONS", + "READ_MISSIONS", + "DISPLAY_MISSIONS", + "SHOW_MISSIONS", + "LIST_MISSIONS", + "RETRIEVE_MISSIONS", +]; + +export const getMissionLeaderboardSimiles = [ + "VIEW_MISSION_MITO_LEADERBOARD", + "GET_MISSION_MITO_LEADERBOARD", + "CHECK_MISSION_MITO_LEADERBOARD", + "FETCH_MISSION_MITO_LEADERBOARD", + "READ_MISSION_MITO_LEADERBOARD", + "DISPLAY_MISSION_MITO_LEADERBOARD", + "SHOW_MISSION_MITO_LEADERBOARD", + "LIST_MISSION_MITO_LEADERBOARD", + "RETRIEVE_MISSION_MITO_LEADERBOARD", +]; + +// IDO Related Similes +export const getIDOSimiles = [ + "VIEW_IDO", + "GET_IDO", + "CHECK_IDO", + "FETCH_IDO", + "READ_IDO", + "DISPLAY_IDO", + "SHOW_IDO", + "LIST_IDO", + "RETRIEVE_IDO", +]; + +export const getIDOsSimiles = [ + "VIEW_IDOS", + "GET_IDOS", + "CHECK_IDOS", + "FETCH_IDOS", + "READ_IDOS", + "DISPLAY_IDOS", + "SHOW_IDOS", + "LIST_IDOS", + "RETRIEVE_IDOS", +]; + +export const getIDOSubscribersSimiles = [ + "VIEW_IDO_SUBSCRIBERS", + "GET_IDO_SUBSCRIBERS", + "CHECK_IDO_SUBSCRIBERS", + "FETCH_IDO_SUBSCRIBERS", + "READ_IDO_SUBSCRIBERS", + "DISPLAY_IDO_SUBSCRIBERS", + "SHOW_IDO_SUBSCRIBERS", + "LIST_IDO_SUBSCRIBERS", + "RETRIEVE_IDO_SUBSCRIBERS", +]; + +export const getIDOSubscriptionSimiles = [ + "VIEW_IDO_SUBSCRIPTION", + "GET_IDO_SUBSCRIPTION", + "CHECK_IDO_SUBSCRIPTION", + "FETCH_IDO_SUBSCRIPTION", + "READ_IDO_SUBSCRIPTION", + "DISPLAY_IDO_SUBSCRIPTION", + "SHOW_IDO_SUBSCRIPTION", + "LIST_IDO_SUBSCRIPTION", + "RETRIEVE_IDO_SUBSCRIPTION", +]; + +export const getIDOActivitiesSimiles = [ + "VIEW_IDO_ACTIVITIES", + "GET_IDO_ACTIVITIES", + "CHECK_IDO_ACTIVITIES", + "FETCH_IDO_ACTIVITIES", + "READ_IDO_ACTIVITIES", + "DISPLAY_IDO_ACTIVITIES", + "SHOW_IDO_ACTIVITIES", + "LIST_IDO_ACTIVITIES", + "RETRIEVE_IDO_ACTIVITIES", +]; + +export const getIDOWhitelistSimiles = [ + "VIEW_IDO_WHITELIST", + "GET_IDO_WHITELIST", + "CHECK_IDO_WHITELIST", + "FETCH_IDO_WHITELIST", + "READ_IDO_WHITELIST", + "DISPLAY_IDO_WHITELIST", + "SHOW_IDO_WHITELIST", + "LIST_IDO_WHITELIST", + "RETRIEVE_IDO_WHITELIST", +]; + +export const getClaimReferencesSimiles = [ + "VIEW_CLAIM_REFERENCES", + "GET_CLAIM_REFERENCES", + "CHECK_CLAIM_REFERENCES", + "FETCH_CLAIM_REFERENCES", + "READ_CLAIM_REFERENCES", + "DISPLAY_CLAIM_REFERENCES", + "SHOW_CLAIM_REFERENCES", + "LIST_CLAIM_REFERENCES", + "RETRIEVE_CLAIM_REFERENCES", +]; + +// Mito interactions + +// Launchpad Related Similes +export const getLaunchpadSubscribeSimiles = [ + "LAUNCHPAD_SUBSCRIBE", + "JOIN_LAUNCHPAD", + "ENTER_LAUNCHPAD", + "PARTICIPATE_LAUNCHPAD", + "REGISTER_LAUNCHPAD", + "ENROLL_LAUNCHPAD", + "ACCESS_LAUNCHPAD", + "ENGAGE_LAUNCHPAD", + "START_LAUNCHPAD", +]; + +export const getLaunchpadClaimSimiles = [ + "LAUNCHPAD_CLAIM", + "COLLECT_LAUNCHPAD", + "WITHDRAW_LAUNCHPAD", + "RETRIEVE_LAUNCHPAD", + "REDEEM_LAUNCHPAD", + "GATHER_LAUNCHPAD", + "OBTAIN_LAUNCHPAD", + "ACQUIRE_LAUNCHPAD", + "EXTRACT_LAUNCHPAD", +]; + +// Vault Related Action Similes +export const getSubscribeVaultSimiles = [ + "SUBSCRIBE_VAULT", + "JOIN_VAULT", + "ENTER_VAULT", + "PARTICIPATE_VAULT", + "REGISTER_VAULT", + "ENROLL_VAULT", + "ACCESS_VAULT", + "ENGAGE_VAULT", + "START_VAULT", +]; + +export const getInstantiateCPMMVaultSimiles = [ + "INSTANTIATE_CPMM_VAULT", + "CREATE_CPMM_VAULT", + "DEPLOY_CPMM_VAULT", + "LAUNCH_CPMM_VAULT", + "INITIALIZE_CPMM_VAULT", + "SETUP_CPMM_VAULT", + "START_CPMM_VAULT", + "BEGIN_CPMM_VAULT", + "ESTABLISH_CPMM_VAULT", +]; +export const getRedeemFromVaultSimiles = [ + "WITHDRAW_FROM_VAULT", + "EXIT_VAULT", + "REDEEM_FROM_VAULT", + "REMOVE_FROM_VAULT", + "LEAVE_VAULT", + "CASH_OUT_VAULT", + "EXTRACT_FROM_VAULT", + "PULL_FROM_VAULT", + "RECOVER_FROM_VAULT", +]; + +export const getStakeVaultLPSimiles = [ + "LOCK_VAULT_LP", + "STAKE_VAULT_LP", + "COMMIT_VAULT_LP", + "BOND_VAULT_LP", + "ALLOCATE_VAULT_LP", + "INVEST_VAULT_LP", + "HOLD_VAULT_LP", +]; + +export const getUnstakeVaultLPSimiles = [ + "UNLOCK_VAULT_LP", + "UNSTAKE_VAULT_LP", + "RELEASE_VAULT_LP", + "UNBOND_VAULT_LP", + "FREE_VAULT_LP", +]; + +export const getClaimVaultRewardsSimiles = [ + "COLLECT_VAULT_REWARDS", + "HARVEST_VAULT_REWARDS", + "CLAIM_VAULT_REWARDS", + "GATHER_VAULT_REWARDS", + "RECEIVE_VAULT_REWARDS", + "WITHDRAW_VAULT_REWARDS", + "GET_VAULT_REWARDS", + "FETCH_VAULT_REWARDS", + "REDEEM_VAULT_REWARDS", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/peggy.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/peggy.ts new file mode 100644 index 000000000000..bb846c2e6e8c --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/peggy.ts @@ -0,0 +1,23 @@ +export const getPeggyModuleParamsSimiles = [ + "VIEW_PEGGY_BRIDGE_PARAMS", + "GET_PEGGY_BRIDGE_PARAMS", + "CHECK_PEGGY_BRIDGE_PARAMS", + "FETCH_PEGGY_BRIDGE_PARAMS", + "READ_PEGGY_BRIDGE_PARAMS", + "DISPLAY_PEGGY_BRIDGE_PARAMS", + "SHOW_PEGGY_BRIDGE_PARAMS", + "LIST_PEGGY_BRIDGE_PARAMS", + "RETRIEVE_PEGGY_BRIDGE_PARAMS", +]; + +export const msgSendToEthSimiles = [ + "SEND_TO_ETHEREUM", + "TRANSFER_TO_ETH", + "BRIDGE_TO_ETHEREUM", + "MOVE_TO_ETH", + "TRANSMIT_TO_ETHEREUM", + "FORWARD_TO_ETH", + "RELAY_TO_ETHEREUM", + "DISPATCH_TO_ETH", + "TRANSPORT_TO_ETHEREUM", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/permissions.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/permissions.ts new file mode 100644 index 000000000000..b19ace1efc3a --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/permissions.ts @@ -0,0 +1,71 @@ +export const getAddressesByRoleSimiles = [ + "VIEW_ROLE_ADDRESSES", + "GET_ROLE_ADDRESSES", + "CHECK_ROLE_ADDRESSES", + "FETCH_ROLE_ADDRESSES", + "READ_ROLE_ADDRESSES", + "DISPLAY_ROLE_ADDRESSES", + "SHOW_ROLE_ADDRESSES", + "LIST_ROLE_ADDRESSES", + "RETRIEVE_ROLE_ADDRESSES", +]; + +export const getAddressRolesSimiles = [ + "VIEW_ADDRESS_ROLES", + "GET_ADDRESS_ROLES", + "CHECK_ADDRESS_ROLES", + "FETCH_ADDRESS_ROLES", + "READ_ADDRESS_ROLES", + "DISPLAY_ADDRESS_ROLES", + "SHOW_ADDRESS_ROLES", + "LIST_ADDRESS_ROLES", + "RETRIEVE_ADDRESS_ROLES", +]; + +export const getAllNamespacesSimiles = [ + "VIEW_NAMESPACES", + "GET_NAMESPACES", + "CHECK_NAMESPACES", + "FETCH_NAMESPACES", + "READ_NAMESPACES", + "DISPLAY_NAMESPACES", + "SHOW_NAMESPACES", + "LIST_NAMESPACES", + "RETRIEVE_NAMESPACES", +]; + +export const getPermissionsModuleParamsSimiles = [ + "VIEW_PERMISSIONS_PARAMS", + "GET_PERMISSIONS_PARAMS", + "CHECK_PERMISSIONS_PARAMS", + "FETCH_PERMISSIONS_PARAMS", + "READ_PERMISSIONS_PARAMS", + "DISPLAY_PERMISSIONS_PARAMS", + "SHOW_PERMISSIONS_PARAMS", + "LIST_PERMISSIONS_PARAMS", + "RETRIEVE_PERMISSIONS_PARAMS", +]; + +export const getNamespaceByDenomSimiles = [ + "VIEW_DENOM_NAMESPACE", + "GET_DENOM_NAMESPACE", + "CHECK_DENOM_NAMESPACE", + "FETCH_DENOM_NAMESPACE", + "READ_DENOM_NAMESPACE", + "DISPLAY_DENOM_NAMESPACE", + "SHOW_DENOM_NAMESPACE", + "LIST_DENOM_NAMESPACE", + "RETRIEVE_DENOM_NAMESPACE", +]; + +export const getVouchersForAddressSimiles = [ + "VIEW_ADDRESS_VOUCHERS", + "GET_ADDRESS_VOUCHERS", + "CHECK_ADDRESS_VOUCHERS", + "FETCH_ADDRESS_VOUCHERS", + "READ_ADDRESS_VOUCHERS", + "DISPLAY_ADDRESS_VOUCHERS", + "SHOW_ADDRESS_VOUCHERS", + "LIST_ADDRESS_VOUCHERS", + "RETRIEVE_ADDRESS_VOUCHERS", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/staking.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/staking.ts new file mode 100644 index 000000000000..a1acb0d55c89 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/staking.ts @@ -0,0 +1,279 @@ +// Module and Pool Query Actions +export const getStakingModuleParamsSimiles = [ + "VIEW_STAKING_PARAMS", + "GET_STAKING_PARAMS", + "CHECK_STAKING_PARAMS", + "FETCH_STAKING_PARAMS", + "READ_STAKING_PARAMS", + "DISPLAY_STAKING_PARAMS", + "SHOW_STAKING_PARAMS", + "LIST_STAKING_PARAMS", + "RETRIEVE_STAKING_PARAMS", +]; + +export const getPoolSimiles = [ + "VIEW_STAKING_POOL", + "GET_STAKING_POOL", + "CHECK_STAKING_POOL", + "FETCH_STAKING_POOL", + "READ_STAKING_POOL", + "DISPLAY_STAKING_POOL", + "SHOW_STAKING_POOL", + "LIST_STAKING_POOL", + "RETRIEVE_STAKING_POOL", +]; + +// Validator Query Actions +export const getValidatorsSimiles = [ + "VIEW_VALIDATORS", + "GET_VALIDATORS", + "CHECK_VALIDATORS", + "FETCH_VALIDATORS", + "READ_VALIDATORS", + "DISPLAY_VALIDATORS", + "SHOW_VALIDATORS", + "LIST_VALIDATORS", + "RETRIEVE_VALIDATORS", +]; + +export const getValidatorSimiles = [ + "VIEW_VALIDATOR", + "GET_VALIDATOR", + "CHECK_VALIDATOR", + "FETCH_VALIDATOR", + "READ_VALIDATOR", + "DISPLAY_VALIDATOR", + "SHOW_VALIDATOR", + "LIST_VALIDATOR", + "RETRIEVE_VALIDATOR", +]; + +// Delegation Query Actions +export const getValidatorDelegationsSimiles = [ + "VIEW_VALIDATOR_DELEGATIONS", + "GET_VALIDATOR_DELEGATIONS", + "CHECK_VALIDATOR_DELEGATIONS", + "FETCH_VALIDATOR_DELEGATIONS", + "READ_VALIDATOR_DELEGATIONS", + "DISPLAY_VALIDATOR_DELEGATIONS", + "SHOW_VALIDATOR_DELEGATIONS", + "LIST_VALIDATOR_DELEGATIONS", + "RETRIEVE_VALIDATOR_DELEGATIONS", +]; + +export const getValidatorDelegationsNoThrowSimiles = [ + "VIEW_VALIDATOR_DELEGATIONS_SAFE", + "GET_VALIDATOR_DELEGATIONS_SAFE", + "CHECK_VALIDATOR_DELEGATIONS_SAFE", + "FETCH_VALIDATOR_DELEGATIONS_SAFE", + "READ_VALIDATOR_DELEGATIONS_SAFE", + "DISPLAY_VALIDATOR_DELEGATIONS_SAFE", + "SHOW_VALIDATOR_DELEGATIONS_SAFE", + "LIST_VALIDATOR_DELEGATIONS_SAFE", + "RETRIEVE_VALIDATOR_DELEGATIONS_SAFE", +]; + +export const getValidatorUnbondingDelegationsSimiles = [ + "VIEW_VALIDATOR_UNBONDING", + "GET_VALIDATOR_UNBONDING", + "CHECK_VALIDATOR_UNBONDING", + "FETCH_VALIDATOR_UNBONDING", + "READ_VALIDATOR_UNBONDING", + "DISPLAY_VALIDATOR_UNBONDING", + "SHOW_VALIDATOR_UNBONDING", + "LIST_VALIDATOR_UNBONDING", + "RETRIEVE_VALIDATOR_UNBONDING", +]; + +export const getValidatorUnbondingDelegationsNoThrowSimiles = [ + "VIEW_VALIDATOR_UNBONDING_SAFE", + "GET_VALIDATOR_UNBONDING_SAFE", + "CHECK_VALIDATOR_UNBONDING_SAFE", + "FETCH_VALIDATOR_UNBONDING_SAFE", + "READ_VALIDATOR_UNBONDING_SAFE", + "DISPLAY_VALIDATOR_UNBONDING_SAFE", + "SHOW_VALIDATOR_UNBONDING_SAFE", + "LIST_VALIDATOR_UNBONDING_SAFE", + "RETRIEVE_VALIDATOR_UNBONDING_SAFE", +]; + +export const getDelegationSimiles = [ + "VIEW_DELEGATION", + "GET_DELEGATION", + "CHECK_DELEGATION", + "FETCH_DELEGATION", + "READ_DELEGATION", + "DISPLAY_DELEGATION", + "SHOW_DELEGATION", + "LIST_DELEGATION", + "RETRIEVE_DELEGATION", +]; + +export const getDelegationsSimiles = [ + "VIEW_DELEGATIONS", + "GET_DELEGATIONS", + "CHECK_DELEGATIONS", + "FETCH_DELEGATIONS", + "READ_DELEGATIONS", + "DISPLAY_DELEGATIONS", + "SHOW_DELEGATIONS", + "LIST_DELEGATIONS", + "RETRIEVE_DELEGATIONS", +]; + +export const getDelegationsNoThrowSimiles = [ + "VIEW_DELEGATIONS_SAFE", + "GET_DELEGATIONS_SAFE", + "CHECK_DELEGATIONS_SAFE", + "FETCH_DELEGATIONS_SAFE", + "READ_DELEGATIONS_SAFE", + "DISPLAY_DELEGATIONS_SAFE", + "SHOW_DELEGATIONS_SAFE", + "LIST_DELEGATIONS_SAFE", + "RETRIEVE_DELEGATIONS_SAFE", +]; + +export const getDelegatorsSimiles = [ + "VIEW_DELEGATORS", + "GET_DELEGATORS", + "CHECK_DELEGATORS", + "FETCH_DELEGATORS", + "READ_DELEGATORS", + "DISPLAY_DELEGATORS", + "SHOW_DELEGATORS", + "LIST_DELEGATORS", + "RETRIEVE_DELEGATORS", +]; + +export const getDelegatorsNoThrowSimiles = [ + "VIEW_DELEGATORS_SAFE", + "GET_DELEGATORS_SAFE", + "CHECK_DELEGATORS_SAFE", + "FETCH_DELEGATORS_SAFE", + "READ_DELEGATORS_SAFE", + "DISPLAY_DELEGATORS_SAFE", + "SHOW_DELEGATORS_SAFE", + "LIST_DELEGATORS_SAFE", + "RETRIEVE_DELEGATORS_SAFE", +]; + +export const getUnbondingDelegationsSimiles = [ + "VIEW_UNBONDING_DELEGATIONS", + "GET_UNBONDING_DELEGATIONS", + "CHECK_UNBONDING_DELEGATIONS", + "FETCH_UNBONDING_DELEGATIONS", + "READ_UNBONDING_DELEGATIONS", + "DISPLAY_UNBONDING_DELEGATIONS", + "SHOW_UNBONDING_DELEGATIONS", + "LIST_UNBONDING_DELEGATIONS", + "RETRIEVE_UNBONDING_DELEGATIONS", +]; + +export const getUnbondingDelegationsNoThrowSimiles = [ + "VIEW_UNBONDING_DELEGATIONS_SAFE", + "GET_UNBONDING_DELEGATIONS_SAFE", + "CHECK_UNBONDING_DELEGATIONS_SAFE", + "FETCH_UNBONDING_DELEGATIONS_SAFE", + "READ_UNBONDING_DELEGATIONS_SAFE", + "DISPLAY_UNBONDING_DELEGATIONS_SAFE", + "SHOW_UNBONDING_DELEGATIONS_SAFE", + "LIST_UNBONDING_DELEGATIONS_SAFE", + "RETRIEVE_UNBONDING_DELEGATIONS_SAFE", +]; + +export const getReDelegationsSimiles = [ + "VIEW_REDELEGATIONS", + "GET_REDELEGATIONS", + "CHECK_REDELEGATIONS", + "FETCH_REDELEGATIONS", + "READ_REDELEGATIONS", + "DISPLAY_REDELEGATIONS", + "SHOW_REDELEGATIONS", + "LIST_REDELEGATIONS", + "RETRIEVE_REDELEGATIONS", +]; + +export const getReDelegationsNoThrowSimiles = [ + "VIEW_REDELEGATIONS_SAFE", + "GET_REDELEGATIONS_SAFE", + "CHECK_REDELEGATIONS_SAFE", + "FETCH_REDELEGATIONS_SAFE", + "READ_REDELEGATIONS_SAFE", + "DISPLAY_REDELEGATIONS_SAFE", + "SHOW_REDELEGATIONS_SAFE", + "LIST_REDELEGATIONS_SAFE", + "RETRIEVE_REDELEGATIONS_SAFE", +]; + +// Message Actions +export const msgBeginRedelegateSimiles = [ + "START_REDELEGATION", + "BEGIN_REDELEGATION", + "INITIATE_REDELEGATION", + "CREATE_REDELEGATION", + "SUBMIT_REDELEGATION", + "EXECUTE_REDELEGATION", + "PROCESS_REDELEGATION", + "PERFORM_REDELEGATION", + "LAUNCH_REDELEGATION", +]; + +export const msgDelegateSimiles = [ + "START_DELEGATION", + "BEGIN_DELEGATION", + "INITIATE_DELEGATION", + "CREATE_DELEGATION", + "SUBMIT_DELEGATION", + "EXECUTE_DELEGATION", + "PROCESS_DELEGATION", + "PERFORM_DELEGATION", + "LAUNCH_DELEGATION", +]; + +export const msgUndelegateSimiles = [ + "START_UNDELEGATION", + "BEGIN_UNDELEGATION", + "INITIATE_UNDELEGATION", + "CREATE_UNDELEGATION", + "SUBMIT_UNDELEGATION", + "EXECUTE_UNDELEGATION", + "PROCESS_UNDELEGATION", + "PERFORM_UNDELEGATION", + "LAUNCH_UNDELEGATION", +]; + +export const msgCreateValidatorSimiles = [ + "CREATE_VALIDATOR", + "ESTABLISH_VALIDATOR", + "INITIALIZE_VALIDATOR", + "SETUP_VALIDATOR", + "REGISTER_VALIDATOR", + "START_VALIDATOR", + "LAUNCH_VALIDATOR", + "DEPLOY_VALIDATOR", + "INSTITUTE_VALIDATOR", +]; + +export const msgEditValidatorSimiles = [ + "UPDATE_VALIDATOR", + "MODIFY_VALIDATOR", + "CHANGE_VALIDATOR", + "EDIT_VALIDATOR", + "REVISE_VALIDATOR", + "ALTER_VALIDATOR", + "ADJUST_VALIDATOR", + "AMEND_VALIDATOR", + "TRANSFORM_VALIDATOR", +]; + +export const msgCancelUnbondingDelegationSimiles = [ + "CANCEL_UNBONDING", + "STOP_UNBONDING", + "HALT_UNBONDING", + "TERMINATE_UNBONDING", + "END_UNBONDING", + "ABORT_UNBONDING", + "WITHDRAW_UNBONDING", + "REVERSE_UNBONDING", + "NULLIFY_UNBONDING", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/token-factory.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/token-factory.ts new file mode 100644 index 000000000000..7120de01e24b --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/token-factory.ts @@ -0,0 +1,109 @@ +// Query Actions +export const getDenomsFromCreatorSimiles = [ + "VIEW_CREATOR_TOKENS", + "GET_CREATOR_TOKENS", + "CHECK_CREATOR_TOKENS", + "FETCH_CREATOR_TOKENS", + "READ_CREATOR_TOKENS", + "DISPLAY_CREATOR_TOKENS", + "SHOW_CREATOR_TOKENS", + "LIST_CREATOR_TOKENS", + "RETRIEVE_CREATOR_TOKENS", +]; + +export const getDenomAuthorityMetadataSimiles = [ + "VIEW_TOKEN_AUTHORITY", + "GET_TOKEN_AUTHORITY", + "CHECK_TOKEN_AUTHORITY", + "FETCH_TOKEN_AUTHORITY", + "READ_TOKEN_AUTHORITY", + "DISPLAY_TOKEN_AUTHORITY", + "SHOW_TOKEN_AUTHORITY", + "LIST_TOKEN_AUTHORITY", + "RETRIEVE_TOKEN_AUTHORITY", +]; + +export const getTokenFactoryModuleParamsSimiles = [ + "VIEW_TOKEN_FACTORY_PARAMS", + "GET_TOKEN_FACTORY_PARAMS", + "CHECK_TOKEN_FACTORY_PARAMS", + "FETCH_TOKEN_FACTORY_PARAMS", + "READ_TOKEN_FACTORY_PARAMS", + "DISPLAY_TOKEN_FACTORY_PARAMS", + "SHOW_TOKEN_FACTORY_PARAMS", + "LIST_TOKEN_FACTORY_PARAMS", + "RETRIEVE_TOKEN_FACTORY_PARAMS", +]; + +export const getTokenFactoryModuleStateSimiles = [ + "VIEW_TOKEN_FACTORY_STATE", + "GET_TOKEN_FACTORY_STATE", + "CHECK_TOKEN_FACTORY_STATE", + "FETCH_TOKEN_FACTORY_STATE", + "READ_TOKEN_FACTORY_STATE", + "DISPLAY_TOKEN_FACTORY_STATE", + "SHOW_TOKEN_FACTORY_STATE", + "LIST_TOKEN_FACTORY_STATE", + "RETRIEVE_TOKEN_FACTORY_STATE", +]; + +// Message Actions +export const msgBurnSimiles = [ + "BURN_TOKENS", + "DESTROY_TOKENS", + "REMOVE_TOKENS", + "DELETE_TOKENS", + "ELIMINATE_TOKENS", + "CONSUME_TOKENS", + "ERASE_TOKENS", + "CANCEL_TOKENS", + "NULLIFY_TOKENS", +]; + +export const msgChangeAdminSimiles = [ + "UPDATE_TOKEN_ADMIN", + "CHANGE_TOKEN_ADMIN", + "MODIFY_TOKEN_ADMIN", + "TRANSFER_TOKEN_ADMIN", + "REPLACE_TOKEN_ADMIN", + "REASSIGN_TOKEN_ADMIN", + "SWITCH_TOKEN_ADMIN", + "ALTER_TOKEN_ADMIN", + "REVISE_TOKEN_ADMIN", +]; + +export const msgCreateDenomSimiles = [ + "CREATE_TOKEN_DENOM", + "ESTABLISH_TOKEN_DENOM", + "INITIALIZE_TOKEN_DENOM", + "SETUP_TOKEN_DENOM", + "GENERATE_TOKEN_DENOM", + "LAUNCH_TOKEN_DENOM", + "DEPLOY_TOKEN_DENOM", + "INSTITUTE_TOKEN_DENOM", + "PRODUCE_TOKEN_DENOM", +]; + +export const msgMintSimiles = [ + "MINT_TOKENS", + "ISSUE_TOKENS", + "GENERATE_TOKENS", + "CREATE_TOKENS", + "PRODUCE_TOKENS", + "MAKE_TOKENS", + "FORGE_TOKENS", + "FABRICATE_TOKENS", + "CONSTRUCT_TOKENS", +]; + +export const msgSetDenomMetadataSimiles = [ + "UPDATE_TOKEN_METADATA", + "SET_TOKEN_METADATA", + "MODIFY_TOKEN_METADATA", + "CHANGE_TOKEN_METADATA", + "REVISE_TOKEN_METADATA", + "ALTER_TOKEN_METADATA", + "ADJUST_TOKEN_METADATA", + "EDIT_TOKEN_METADATA", + "CONFIGURE_TOKEN_METADATA", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/similes/wasm.ts b/packages/plugin-injective/injective-sdk-client-ts/src/similes/wasm.ts new file mode 100644 index 000000000000..a73c8614589b --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/similes/wasm.ts @@ -0,0 +1,219 @@ +// Contract Query Actions +export const getContractAccountsBalanceSimiles = [ + "VIEW_CONTRACT_BALANCES", + "GET_CONTRACT_BALANCES", + "CHECK_CONTRACT_BALANCES", + "FETCH_CONTRACT_BALANCES", + "READ_CONTRACT_BALANCES", + "DISPLAY_CONTRACT_BALANCES", + "SHOW_CONTRACT_BALANCES", + "LIST_CONTRACT_BALANCES", + "RETRIEVE_CONTRACT_BALANCES", +]; + +export const getContractStateSimiles = [ + "VIEW_CONTRACT_STATE", + "GET_CONTRACT_STATE", + "CHECK_CONTRACT_STATE", + "FETCH_CONTRACT_STATE", + "READ_CONTRACT_STATE", + "DISPLAY_CONTRACT_STATE", + "SHOW_CONTRACT_STATE", + "LIST_CONTRACT_STATE", + "RETRIEVE_CONTRACT_STATE", +]; + +export const getContractInfoSimiles = [ + "VIEW_CONTRACT_INFO", + "GET_CONTRACT_INFO", + "CHECK_CONTRACT_INFO", + "FETCH_CONTRACT_INFO", + "READ_CONTRACT_INFO", + "DISPLAY_CONTRACT_INFO", + "SHOW_CONTRACT_INFO", + "LIST_CONTRACT_INFO", + "RETRIEVE_CONTRACT_INFO", +]; + +export const getContractHistorySimiles = [ + "VIEW_CONTRACT_HISTORY", + "GET_CONTRACT_HISTORY", + "CHECK_CONTRACT_HISTORY", + "FETCH_CONTRACT_HISTORY", + "READ_CONTRACT_HISTORY", + "DISPLAY_CONTRACT_HISTORY", + "SHOW_CONTRACT_HISTORY", + "LIST_CONTRACT_HISTORY", + "RETRIEVE_CONTRACT_HISTORY", +]; + +export const getSmartContractStateSimiles = [ + "VIEW_SMART_STATE", + "GET_SMART_STATE", + "CHECK_SMART_STATE", + "FETCH_SMART_STATE", + "READ_SMART_STATE", + "DISPLAY_SMART_STATE", + "SHOW_SMART_STATE", + "LIST_SMART_STATE", + "RETRIEVE_SMART_STATE", +]; + +export const getRawContractStateSimiles = [ + "VIEW_RAW_STATE", + "GET_RAW_STATE", + "CHECK_RAW_STATE", + "FETCH_RAW_STATE", + "READ_RAW_STATE", + "DISPLAY_RAW_STATE", + "SHOW_RAW_STATE", + "LIST_RAW_STATE", + "RETRIEVE_RAW_STATE", +]; + +// Code Query Actions +export const getContractCodesSimiles = [ + "VIEW_CONTRACT_CODES", + "GET_CONTRACT_CODES", + "CHECK_CONTRACT_CODES", + "FETCH_CONTRACT_CODES", + "READ_CONTRACT_CODES", + "DISPLAY_CONTRACT_CODES", + "SHOW_CONTRACT_CODES", + "LIST_CONTRACT_CODES", + "RETRIEVE_CONTRACT_CODES", +]; + +export const getContractCodeSimiles = [ + "VIEW_CONTRACT_CODE", + "GET_CONTRACT_CODE", + "CHECK_CONTRACT_CODE", + "FETCH_CONTRACT_CODE", + "READ_CONTRACT_CODE", + "DISPLAY_CONTRACT_CODE", + "SHOW_CONTRACT_CODE", + "LIST_CONTRACT_CODE", + "RETRIEVE_CONTRACT_CODE", +]; + +export const getContractCodeContractsSimiles = [ + "VIEW_CODE_CONTRACTS", + "GET_CODE_CONTRACTS", + "CHECK_CODE_CONTRACTS", + "FETCH_CODE_CONTRACTS", + "READ_CODE_CONTRACTS", + "DISPLAY_CODE_CONTRACTS", + "SHOW_CODE_CONTRACTS", + "LIST_CODE_CONTRACTS", + "RETRIEVE_CODE_CONTRACTS", +]; + +// Message Actions +export const msgStoreCodeSimiles = [ + "STORE_CONTRACT_CODE", + "UPLOAD_CONTRACT_CODE", + "DEPLOY_CONTRACT_CODE", + "SUBMIT_CONTRACT_CODE", + "PUBLISH_CONTRACT_CODE", + "REGISTER_CONTRACT_CODE", + "SAVE_CONTRACT_CODE", + "INSTALL_CONTRACT_CODE", + "PUSH_CONTRACT_CODE", +]; + +export const msgUpdateAdminSimiles = [ + "UPDATE_CONTRACT_ADMIN", + "CHANGE_CONTRACT_ADMIN", + "MODIFY_CONTRACT_ADMIN", + "TRANSFER_CONTRACT_ADMIN", + "REPLACE_CONTRACT_ADMIN", + "REASSIGN_CONTRACT_ADMIN", + "SWITCH_CONTRACT_ADMIN", + "ALTER_CONTRACT_ADMIN", + "REVISE_CONTRACT_ADMIN", +]; + +export const msgExecuteContractSimiles = [ + "EXECUTE_CONTRACT", + "RUN_CONTRACT", + "CALL_CONTRACT", + "INVOKE_CONTRACT", + "TRIGGER_CONTRACT", + "PERFORM_CONTRACT", + "PROCESS_CONTRACT", + "START_CONTRACT", + "OPERATE_CONTRACT", +]; + +export const msgMigrateContractSimiles = [ + "MIGRATE_CONTRACT", + "UPGRADE_CONTRACT", + "UPDATE_CONTRACT", + "TRANSFER_CONTRACT", + "MOVE_CONTRACT", + "SHIFT_CONTRACT", + "PORT_CONTRACT", + "TRANSITION_CONTRACT", + "CONVERT_CONTRACT", +]; + +export const msgInstantiateContractSimiles = [ + "CREATE_CONTRACT_INSTANCE", + "INSTANTIATE_CONTRACT", + "INITIALIZE_CONTRACT", + "DEPLOY_CONTRACT", + "LAUNCH_CONTRACT", + "START_CONTRACT_INSTANCE", + "SETUP_CONTRACT", + "ESTABLISH_CONTRACT", + "GENERATE_CONTRACT", +]; + +export const msgExecuteContractCompatSimiles = [ + "EXECUTE_COMPAT_CONTRACT", + "RUN_COMPAT_CONTRACT", + "CALL_COMPAT_CONTRACT", + "INVOKE_COMPAT_CONTRACT", + "TRIGGER_COMPAT_CONTRACT", + "PERFORM_COMPAT_CONTRACT", + "PROCESS_COMPAT_CONTRACT", + "START_COMPAT_CONTRACT", + "OPERATE_COMPAT_CONTRACT", +]; + +export const msgPrivilegedExecuteContractSimiles = [ + "EXECUTE_PRIVILEGED_CONTRACT", + "RUN_PRIVILEGED_CONTRACT", + "CALL_PRIVILEGED_CONTRACT", + "INVOKE_PRIVILEGED_CONTRACT", + "TRIGGER_PRIVILEGED_CONTRACT", + "PERFORM_PRIVILEGED_CONTRACT", + "PROCESS_PRIVILEGED_CONTRACT", + "START_PRIVILEGED_CONTRACT", + "OPERATE_PRIVILEGED_CONTRACT", +]; + +// WasmX Query Actions +export const getWasmxModuleParamsSimiles = [ + "VIEW_WASMX_PARAMS", + "GET_WASMX_PARAMS", + "CHECK_WASMX_PARAMS", + "FETCH_WASMX_PARAMS", + "READ_WASMX_PARAMS", + "DISPLAY_WASMX_PARAMS", + "SHOW_WASMX_PARAMS", + "LIST_WASMX_PARAMS", + "RETRIEVE_WASMX_PARAMS", +]; + +export const getWasmxModuleStateSimiles = [ + "VIEW_WASMX_STATE", + "GET_WASMX_STATE", + "CHECK_WASMX_STATE", + "FETCH_WASMX_STATE", + "READ_WASMX_STATE", + "DISPLAY_WASMX_STATE", + "SHOW_WASMX_STATE", + "LIST_WASMX_STATE", + "RETRIEVE_WASMX_STATE", +]; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/auction.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/auction.ts new file mode 100644 index 000000000000..85fdaa8559f4 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/auction.ts @@ -0,0 +1,212 @@ +// Auction Module Templates + +export const getAuctionModuleParamsTemplate = ` +Extract the following details to get auction module parameters: +- **auctionPeriod** (number): The duration of each auction period in seconds +- **minNextBidIncrementRate** (string): The minimum rate at which the next bid must increase + +Provide the response in the following JSON format: + +\`\`\`json +{ + "auctionPeriod": 3600, + "minNextBidIncrementRate": "0.1" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAuctionModuleStateTemplate = ` +Extract the following details for the auction module state: +- **params** (object): Module parameters containing: + - **auctionPeriod** (number): The duration of each auction period in seconds + - **minNextBidIncrementRate** (string): The minimum rate for next bid increment +- **auctionRound** (number): Current auction round number +- **highestBid** (object): Information about the highest bid: + - **bidder** (string): Address of the highest bidder + - **amount** (string): Amount of the highest bid +- **auctionEndingTimestamp** (number): Unix timestamp when the auction ends + +Provide the response in the following JSON format: + +\`\`\`json +{ + "params": { + "auctionPeriod": 3600, + "minNextBidIncrementRate": "0.1" + }, + "auctionRound": 5, + "highestBid": { + "bidder": "inj1...", + "amount": "1000000000" + }, + "auctionEndingTimestamp": 1632150400 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getCurrentBasketTemplate = ` +Extract the following details for the current auction basket: +- **amountList** (array): List of amounts in the basket, each containing: + - **denom** (string): Token denomination (e.g., "inj") + - **amount** (string): Token amount +- **auctionRound** (number): Current auction round number +- **auctionClosingTime** (number): Unix timestamp when the auction closes +- **highestBidder** (string): Address of the current highest bidder +- **highestBidAmount** (string): Amount of the current highest bid + +Provide the response in the following JSON format: + +\`\`\`json +{ + "amountList": [ + { + "denom": "inj", + "amount": "1000000000" + } + ], + "auctionRound": 5, + "auctionClosingTime": 1632150400, + "highestBidder": "inj1...", + "highestBidAmount": "1000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAuctionRoundTemplate = ` +Extract the following details for getting auction round information: +- **round** (number): The auction round number to query + +Ensure that: +1. Round number is positive +2. Round number exists in the system + +Provide the round parameter in the following JSON format: + +\`\`\`json +{ + "round": 5 +} +\`\`\` + +The response will contain: +- **auction** (object): Auction information containing: + - **winner** (string): Address of the auction winner + - **basketList** (array): List of tokens in the basket + - **winningBidAmount** (string): Amount of the winning bid + - **round** (number): Round number + - **endTimestamp** (number): Unix timestamp when the round ended + - **updatedAt** (number): Last update timestamp +- **bids** (array): List of bids in the round, each containing: + - **bidder** (string): Address of the bidder + - **bidAmount** (string): Bid amount + - **bidTimestamp** (number): When the bid was placed + +Response format: + +\`\`\`json +{ + "auction": { + "winner": "inj1...", + "basketList": [ + { + "denom": "inj", + "amount": "1000000000" + } + ], + "winningBidAmount": "1000000000", + "round": 5, + "endTimestamp": 1632150400, + "updatedAt": 1632150400 + }, + "bids": [ + { + "bidder": "inj1...", + "bidAmount": "1000000000", + "bidTimestamp": 1632150300 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAuctionsTemplate = ` +Extract details for retrieving multiple auctions. The response will provide: +- **auction** (array): List of auctions, each containing: + - **winner** (string): Address of the auction winner + - **basketList** (array): List of tokens in the basket + - **winningBidAmount** (string): Amount of the winning bid + - **round** (number): Auction round number + - **endTimestamp** (number): Unix timestamp when the auction ended + - **updatedAt** (number): Last update timestamp + +Provide the response in the following JSON format: + +\`\`\`json +[ + { + "winner": "inj1...", + "basketList": [ + { + "denom": "inj", + "amount": "1000000000" + } + ], + "winningBidAmount": "1000000000", + "round": 5, + "endTimestamp": 1632150400, + "updatedAt": 1632150400 + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBidTemplate = ` +Extract the following details for placing a bid: +- **round** (number): The auction round number to bid in +- **amount** (string): The bid amount in INJ_DENOM + +Ensure that: +1. Round number is positive and exists in the system +2. Amount is positive and properly formatted +3. Amount is greater than the current highest bid plus minimum increment + +Provide the bid details in the following JSON format: + +\`\`\`json +{ + "round": 5, + "amount": "1000000000" +} +\`\`\` + +A successful response will include: +- **txHash** (string): The transaction hash +- **success** (boolean): Whether the bid was successful + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/auth.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/auth.ts new file mode 100644 index 000000000000..6fb8a639611e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/auth.ts @@ -0,0 +1,330 @@ +export const getAuthModuleParamsTemplate = ` +Extract the following details for auth module parameters: +- **maxMemoCharacters** (number): Maximum number of characters allowed in memo +- **txSigLimit** (number): Transaction signature limit +- **txSizeCostPerByte** (number): Cost per byte for transaction size +- **sigVerifyCostEd25519** (number): Cost for Ed25519 signature verification +- **sigVerifyCostSecp256k1** (number): Cost for Secp256k1 signature verification + +Provide the response in the following JSON format: + +\`\`\`json +{ + "maxMemoCharacters": 256, + "txSigLimit": 7, + "txSizeCostPerByte": 10, + "sigVerifyCostEd25519": 590, + "sigVerifyCostSecp256k1": 1000 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAccountDetailsTemplate = ` +Extract the following details for account information: +- **codeHash** (string): Hash of the account's code +- **baseAccount** (object): Base account information containing: + - **address** (string): Account address + - **pubKey** (object, optional): Public key information: + - **key** (string): The public key + - **typeUrl** (string): Type URL of the public key + - **accountNumber** (number): Account number + - **sequence** (number): Account sequence + +Provide the response in the following JSON format: + +\`\`\`json +{ + "codeHash": "0x...", + "baseAccount": { + "address": "inj1...", + "pubKey": { + "key": "key_string", + "typeUrl": "/cosmos.crypto.secp256k1.PubKey" + }, + "accountNumber": 12345, + "sequence": 67890 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAccountsTemplate = ` +Extract the following details for multiple accounts: +- **pagination** (object): Pagination information containing: + - **nextKey** (string): Key for the next page + - **total** (number): Total number of items +- **accounts** (array): List of accounts, each containing: + - **codeHash** (string): Hash of the account's code + - **baseAccount** (object): Base account information + +Provide the response in the following JSON format: + +\`\`\`json +{ + "pagination": { + "nextKey": "next_page_key", + "total": 100 + }, + "accounts": [ + { + "codeHash": "0x...", + "baseAccount": { + "address": "inj1...", + "pubKey": { + "key": "key_string", + "typeUrl": "/cosmos.crypto.secp256k1.PubKey" + }, + "accountNumber": 12345, + "sequence": 67890 + } + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getGrantsTemplate = ` +Extract the following details for fetching grants: +- **pagination** (object, optional): Pagination options +- **granter** (string): Address of the granter +- **grantee** (string): Address of the grantee +- **msgTypeUrl** (string, optional): Type of message authorization + +Provide the request in the following JSON format: + +\`\`\`json +{ + "pagination": { + "key": "base64_encoded_key", + "offset": 0, + "limit": 100, + "reverse": false + }, + "granter": "inj1...", + "grantee": "inj1...", + "msgTypeUrl": "/cosmos.bank.v1beta1.MsgSend" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "pagination": { + "nextKey": "next_page_key", + "total": 100 + }, + "grants": [ + { + "authorization": { + "@type": "/cosmos.authz.v1beta1.GenericAuthorization", + "msg": "/cosmos.bank.v1beta1.MsgSend" + }, + "authorizationType": "GenericAuthorization", + "expiration": "2024-12-31T23:59:59Z" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getGranterGrantsTemplate = ` +Extract the following details for fetching granter's grants: +- **granter** (string): Address of the granter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "granter": "inj1...", + "pagination": { + "key": "base64_encoded_key", + "offset": 0, + "limit": 100, + "reverse": false + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "pagination": { + "nextKey": "next_page_key", + "total": 100 + }, + "grants": [ + { + "granter": "inj1...", + "grantee": "inj1...", + "authorization": { + "@type": "/cosmos.authz.v1beta1.GenericAuthorization", + "msg": "/cosmos.bank.v1beta1.MsgSend" + }, + "authorizationType": "GenericAuthorization", + "expiration": "2024-12-31T23:59:59Z" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getGranteeGrantsTemplate = ` +Extract the following details for fetching grantee's grants: +- **grantee** (string): Address of the grantee +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "grantee": "inj1...", + "pagination": { + "key": "base64_encoded_key", + "offset": 0, + "limit": 100, + "reverse": false + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "pagination": { + "nextKey": "next_page_key", + "total": 100 + }, + "grants": [ + { + "granter": "inj1...", + "grantee": "inj1...", + "authorization": { + "@type": "/cosmos.authz.v1beta1.GenericAuthorization", + "msg": "/cosmos.bank.v1beta1.MsgSend" + }, + "authorizationType": "GenericAuthorization", + "expiration": "2024-12-31T23:59:59Z" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgGrantTemplate = ` +Extract the following details for granting authorization: +- **messageType** (string): Type of message to authorize +- **grantee** (string): Address of the grantee +- **granter** (string): Address of the granter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "messageType": "/cosmos.bank.v1beta1.MsgSend", + "grantee": "inj1...", + "granter": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgExecTemplate = ` +Extract the following details for executing authorized messages: +- **grantee** (string): Address of the grantee executing the messages +- **msgs** (array): Array of messages to execute + +Provide the request in the following JSON format: + +\`\`\`json +{ + "grantee": "inj1...", + "msgs": [ + { + "@type": "/cosmos.bank.v1beta1.MsgSend", + "fromAddress": "inj1...", + "toAddress": "inj1...", + "amount": [ + { + "denom": "inj", + "amount": "1000000000" + } + ] + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgRevokeTemplate = ` +Extract the following details for revoking authorization: +- **messageType** (string): Type of message authorization to revoke +- **grantee** (string): Address of the grantee +- **granter** (string): Address of the granter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "messageType": "/cosmos.bank.v1beta1.MsgSend", + "grantee": "inj1...", + "granter": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/bank.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/bank.ts new file mode 100644 index 000000000000..2cdd091fd88b --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/bank.ts @@ -0,0 +1,372 @@ +export const getBankModuleParamsTemplate = ` +Extract the following details for bank module parameters: +- **sendEnabledList** (array): List of send-enabled denominations containing: + - **denom** (string): Denomination + - **enabled** (boolean): Whether sending is enabled +- **defaultSendEnabled** (boolean): Default send enabled status + +Provide the response in the following JSON format: + +\`\`\`json +{ + "sendEnabledList": [ + { + "denom": "inj", + "enabled": true + } + ], + "defaultSendEnabled": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBankBalanceTemplate = ` +Extract the following details for bank balance: +- **accountAddress** (string): Address of the account +- **denom** (string): Denomination to query + +Provide the request in the following JSON format: + +\`\`\`json +{ + "accountAddress": "inj1...", + "denom": "inj" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "denom": "inj", + "amount": "1000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBankBalancesTemplate = ` +Extract the following details for all bank balances: +- **accountAddress** (string): Address of the account +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "accountAddress": "inj1...", + "pagination": { + "key": "base64_encoded_key", + "offset": 0, + "limit": 100, + "reverse": false + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "balances": [ + { + "denom": "inj", + "amount": "1000000000" + } + ], + "pagination": { + "nextKey": "next_page_key", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTotalSupplyTemplate = ` +Extract total supply with optional pagination. + +Response format: + +\`\`\`json +{ + "supply": [ + { + "denom": "inj", + "amount": "1000000000000" + } + ], + "pagination": { + "nextKey": "next_page_key", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAllTotalSupplyTemplate = ` +Extract complete total supply for all denominations. + +Response format: + +\`\`\`json +{ + "supply": [ + { + "denom": "inj", + "amount": "1000000000000" + } + ], + "pagination": { + "nextKey": "next_page_key", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSupplyOfTemplate = ` +Extract the following details for supply of specific denomination: +- **denom** (string): Denomination to query + +Provide the request in the following JSON format: + +\`\`\`json +{ + "denom": "inj" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "denom": "inj", + "amount": "1000000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDenomsMetadataTemplate = ` +Extract metadata for all denominations with optional pagination. + +Response format: + +\`\`\`json +{ + "metadatas": [ + { + "description": "The native staking token of the Injective blockchain", + "denom_units": [ + { + "denom": "inj", + "exponent": 0, + "aliases": ["inj"] + } + ], + "base": "inj", + "display": "inj", + "name": "Injective", + "symbol": "INJ" + } + ], + "pagination": { + "nextKey": "next_page_key", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDenomMetadataTemplate = ` +Extract the following details for denomination metadata: +- **denom** (string): Denomination to query + +Provide the request in the following JSON format: + +\`\`\`json +{ + "denom": "inj" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "description": "The native staking token of the Injective blockchain", + "denom_units": [ + { + "denom": "inj", + "exponent": 0, + "aliases": ["inj"] + } + ], + "base": "inj", + "display": "inj", + "name": "Injective", + "symbol": "INJ" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDenomOwnersTemplate = ` +Extract the following details for denomination owners: +- **denom** (string): Denomination to query +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "denom": "inj", + "pagination": { + "key": "base64_encoded_key", + "offset": 0, + "limit": 100, + "reverse": false + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "denomOwners": [ + { + "address": "inj1...", + "balance": { + "denom": "inj", + "amount": "1000000000" + } + } + ], + "pagination": { + "nextKey": "next_page_key", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSendTemplate = ` +Extract the following details for sending tokens: +- **srcInjectiveAddress** (string): Source address +- **dstInjectiveAddress** (string): Destination address +- **amount** (object): Amount to send containing: + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Provide the request in the following JSON format: + +\`\`\`json +{ + "srcInjectiveAddress": "inj1...", + "dstInjectiveAddress": "inj1...", + "amount": { + "denom": "inj", + "amount": "1000000000" + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgMultiSendTemplate = ` +Extract the following details for multi-send transaction: +- **inputs** (array): List of input addresses and amounts +- **outputs** (array): List of output addresses and amounts + +Each input/output contains: +- **address** (string): Injective address +- **amount** (array): List of coins containing: + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Provide the request in the following JSON format: + +\`\`\`json +{ + "inputs": [ + { + "address": "inj1...", + "coins": [ + { + "denom": "inj", + "amount": "1000000000" + } + ] + } + ], + "outputs": [ + { + "address": "inj1...", + "coins": [ + { + "denom": "inj", + "amount": "500000000" + } + ] + }, + { + "address": "inj1...", + "coins": [ + { + "denom": "inj", + "amount": "500000000" + } + ] + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/base.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/base.ts new file mode 100644 index 000000000000..c27ea1254aa3 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/base.ts @@ -0,0 +1,31 @@ +// base-templates.ts +export const paginationParamsTemplate = ` +Extract pagination parameters: +- Pagination: {{pagination}} (PaginationOption?) - Optional pagination configuration + - Key: {{pagination.key}} (string?) - Optional pagination key + - Offset: {{pagination.offset}} (number?) - Optional offset + - Limit: {{pagination.limit}} (number?) - Optional limit + - Reverse: {{pagination.reverse}} (boolean?) - Optional reverse order flag +`; + +export const addressParamsTemplate = ` +Extract address parameters: +- Address: {{address}} (string) - Account address +`; + +export const timeRangeParamsTemplate = ` +Extract time range parameters: +- Start Time: {{startTime}} (number?) - Optional start timestamp +- End Time: {{endTime}} (number?) - Optional end timestamp +`; + +export const denomParamTemplate = ` +Extract denomination parameters: +- Denom: {{denom}} (string) - Token denomination +`; + +export const standardResponseTemplate = ` +Extract standard response structure: +- Success: {{success}} (boolean) - Operation success status +- Result: {{result}} (T) - Response data of generic type T +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/distribution.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/distribution.ts new file mode 100644 index 000000000000..194c748988cf --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/distribution.ts @@ -0,0 +1,195 @@ +export const getDistributionModuleParamsTemplate = ` +Extract the following details for distribution module parameters: +- **communityTax** (string): Tax rate for community fund +- **baseProposerReward** (string): Base reward for block proposer +- **bonusProposerReward** (string): Bonus reward for block proposer +- **withdrawAddrEnabled** (boolean): Whether withdraw address modification is enabled + +Provide the response in the following JSON format: + +\`\`\`json +{ + "communityTax": "0.020000000000000000", + "baseProposerReward": "0.010000000000000000", + "bonusProposerReward": "0.040000000000000000", + "withdrawAddrEnabled": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegatorRewardsForValidatorTemplate = ` +Extract the following details for delegator rewards from specific validator: +- **delegatorAddress** (string): Address of the delegator +- **validatorAddress** (string): Address of the validator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "denom": "inj", + "amount": "1000000000" + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegatorRewardsForValidatorNoThrowTemplate = ` +Extract the following details for delegator rewards from specific validator (no-throw version): +- **delegatorAddress** (string): Address of the delegator +- **validatorAddress** (string): Address of the validator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "denom": "inj", + "amount": "1000000000" + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegatorRewardsTemplate = ` +Extract the following details for delegator rewards: +- **injectiveAddress** (string): Address of the delegator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "validatorAddress": "injvaloper1...", + "rewards": [ + { + "denom": "inj", + "amount": "1000000000" + } + ] + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegatorRewardsNoThrowTemplate = ` +Extract the following details for delegator rewards (no-throw version): +- **injectiveAddress** (string): Address of the delegator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "validatorAddress": "injvaloper1...", + "rewards": [ + { + "denom": "inj", + "amount": "1000000000" + } + ] + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgWithdrawDelegatorRewardTemplate = ` +Extract the following details for withdrawing delegator rewards: +- **delegatorAddress** (string): Address of the delegator +- **validatorAddress** (string): Address of the validator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgWithdrawValidatorCommissionTemplate = ` +Extract the following details for withdrawing validator commission: +- **validatorAddress** (string): Address of the validator + +Provide the request in the following JSON format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/exchange.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/exchange.ts new file mode 100644 index 000000000000..902510178ed9 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/exchange.ts @@ -0,0 +1,3100 @@ +export const getAccountPortfolioTemplate = ` +Extract the following details for account portfolio: +- **address** (string): Account address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "accountAddress": "inj1...", + "bankBalancesList": [ + { + "amount": "1000000", + "denom": "inj" + } + ], + "subaccountsList": [ + { + "subaccountId": "subaccount_id", + "denom": "inj", + "deposit": { + "totalBalance": "1000000", + "availableBalance": "900000" + } + } + ], + "positionsWithUpnlList": [ + { + "position": { + "marketId": "market_id", + "subaccountId": "subaccount_id", + "direction": "long", + "quantity": "1.5", + "entryPrice": "25000.5", + "margin": "1000", + "liquidationPrice": "24000.0", + "markPrice": "25100.0", + "ticker": "BTC/USDT" + }, + "unrealizedPnl": "150.75" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSubaccountHistoryTemplate = ` +Extract the following details for subaccount history: +- **subaccountId** (string): Subaccount ID +- **denom** (string, optional): Token denomination +- **transferTypes** (string[], optional): Types of transfers to include +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "subaccount_id", + "denom": "inj", + "transferTypes": ["deposit", "withdraw"], + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "transfers": [ + { + "transferType": "deposit", + "srcSubaccountId": "src_subaccount_id", + "srcSubaccountAddress": "inj1...", + "dstSubaccountId": "dst_subaccount_id", + "dstSubaccountAddress": "inj1...", + "amount": { + "amount": "1000000", + "denom": "inj" + }, + "executedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotMarketTemplate = ` +Extract the following details for spot market lookup: +- **marketId** (string): Market ID + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "marketId": "market_id", + "marketStatus": "active", + "ticker": "INJ/USDT", + "baseDenom": "inj", + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "serviceProviderFee": "0.4", + "minPriceTickSize": 0.000001, + "minQuantityTickSize": 0.000001 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeMarketTemplate = ` +Extract the following details for derivative market lookup: +- **marketId** (string): Market ID + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "marketId": "market_id", + "marketStatus": "active", + "ticker": "BTC/USDT PERP", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "serviceProviderFee": "0.4", + "initialMarginRatio": "0.05", + "maintenanceMarginRatio": "0.02", + "isPerpetual": true, + "minPriceTickSize": 0.01, + "minQuantityTickSize": 0.001 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getExchangePositionsTemplate = ` +Extract the exchange module's open positions +Response format: + +\`\`\`json +{ + "positions": [ + { + "marketId": "market_id", + "subaccountId": "subaccount_id", + "direction": "long", + "quantity": "1.5", + "entryPrice": "25000.5", + "margin": "1000", + "liquidationPrice": "24000.0", + "markPrice": "25100.0", + "ticker": "BTC/USDT" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getExchangeInsuranceFundsTemplate = ` +Extract insurance funds information. + +Response format: + +\`\`\`json +{ + "funds": [ + { + "depositDenom": "inj", + "insurancePoolTokenDenom": "insurance_pool_token", + "redemptionNoticePeriodDuration": 1209600, + "balance": "1000000", + "totalShare": "1000000", + "marketId": "market_id", + "marketTicker": "BTC/USDT PERP", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "oracleType": "band", + "expiry": 0 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getRedemptionsTemplate = ` +Extract the following details for redemptions query: +- **address** (string): Account address +- **denom** (string, optional): Token denomination +- **status** (string, optional): Redemption status + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "denom": "inj", + "status": "pending" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "redemptions": [ + { + "redemptionId": 1, + "status": "pending", + "redeemer": "inj1...", + "claimableRedemptionTime": 1641859200, + "redemptionAmount": "1000000", + "redemptionDenom": "inj", + "requestedAt": 1641772800, + "disbursedAmount": "0", + "disbursedDenom": "", + "disbursedAt": 0 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotOrdersTemplate = ` +Extract the following details for spot orders query: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **orderSide** (string, optional): Order side (buy/sell) +- **isConditional** (boolean, optional): Whether order is conditional +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id", + "marketIds": ["market_id1", "market_id2"], + "subaccountId": "subaccount_id", + "orderSide": "buy", + "isConditional": false, + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orders": [ + { + "orderHash": "0x...", + "orderSide": "buy", + "marketId": "market_id", + "subaccountId": "subaccount_id", + "price": "25000.5", + "quantity": "1.5", + "unfilledQuantity": "0.5", + "triggerPrice": "0", + "feeRecipient": "inj1...", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeOrdersTemplate = ` +Extract the following details for derivative orders query: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **orderSide** (string, optional): Order side (buy/sell) +- **isConditional** (boolean, optional): Whether order is conditional +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id", + "marketIds": ["market_id1", "market_id2"], + "subaccountId": "subaccount_id", + "orderSide": "buy", + "isConditional": false, + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orders": [ + { + "orderHash": "0x...", + "orderSide": "buy", + "marketId": "market_id", + "subaccountId": "subaccount_id", + "margin": "1000", + "price": "25000.5", + "quantity": "1.5", + "unfilledQuantity": "0.5", + "triggerPrice": "0", + "feeRecipient": "inj1...", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getHistoricalTradesTemplate = ` +Extract the following details for historical trades query: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **endTime** (number, optional): End timestamp +- **startTime** (number, optional): Start timestamp +- **direction** (string, optional): Trade direction +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id", + "marketIds": ["market_id1", "market_id2"], + "subaccountId": "subaccount_id", + "endTime": 1641945600, + "startTime": 1641859200, + "direction": "buy", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "trades": [ + { + "orderHash": "0x...", + "subaccountId": "subaccount_id", + "marketId": "market_id", + "tradeId": "trade_id", + "executedAt": 1641859200, + "tradeExecutionType": "limit", + "tradeDirection": "buy", + "executionPrice": "25000.5", + "executionQuantity": "1.5", + "fee": "0.5", + "feeRecipient": "inj1..." + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getFundingRatesTemplate = ` +Extract the following details for funding rates query: +- **marketId** (string, optional): Market ID filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "market_id", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "fundingRates": [ + { + "marketId": "market_id", + "rate": "0.0001", + "timestamp": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Account & Portfolio Related Templates +export const msgDepositTemplate = ` +Extract the following details for deposit: +- **injectiveAddress** (string): Injective sender address +- **subaccountId** (string): Subaccount ID to deposit to +- **amount** (string): Amount to deposit + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "subaccountId": "0x...", + "amount": "1000000" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgWithdrawTemplate = ` +Extract the following details for withdrawal: +- **injectiveAddress** (string): Injective sender address +- **subaccountId** (string): Subaccount ID to withdraw from +- **amount** (string): Amount to withdraw + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "subaccountId": "0x...", + "amount": "1000000" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Order Related Templates +export const msgCreateSpotMarketOrderTemplate = ` +Extract the following details for creating spot market order: +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **injectiveAddress** (string): Injective sender address +- **orderType** (string): Order type (BUY/SELL) +- **price** (string): Order price +- **quantity** (string): Order quantity + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "subaccountId": "0x...", + "injectiveAddress": "inj1...", + "orderType": "BUY", + "price": "25000.5", + "quantity": "0.5" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateDerivativeMarketOrderTemplate = ` +Extract the following details for creating derivative market order: +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **injectiveAddress** (string): Injective sender address +- **orderType** (string): Order type (BUY/SELL) +- **price** (string): Order price +- **quantity** (string): Order quantity +- **margin** (string): Order margin +- **leverage** (string): Order leverage + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "subaccountId": "0x...", + "injectiveAddress": "inj1...", + "orderType": "BUY", + "price": "25000.5", + "quantity": "0.5", + "margin": "1000", + "leverage": "10" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBatchCancelOrdersTemplate = ` +Extract the following details for batch canceling orders: +- **injectiveAddress** (string): Injective sender address +- **orders** (array): List of orders to cancel containing: + - marketId (string) + - subaccountId (string) + - orderHash (string) + - orderMask (number) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "orders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x...", + "orderMask": 1 + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBatchUpdateOrdersTemplate = ` +Extract the following details for batch updating orders: +- **injectiveAddress** (string): Injective sender address +- **spotOrders** (array, optional): List of spot orders to update +- **derivativeOrders** (array, optional): List of derivative orders to update +Each order contains: + - marketId (string) + - subaccountId (string) + - orderHash (string, optional) + - orderType (string) + - price (string) + - quantity (string) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "spotOrders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x...", + "orderType": "BUY", + "price": "25000.5", + "quantity": "0.5" + } + ], + "derivativeOrders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x...", + "orderType": "SELL", + "price": "25100.5", + "quantity": "1.0" + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "spotOrderHashes": ["0x..."], + "derivativeOrderHashes": ["0x..."], + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgExternalTransferTemplate = ` +Extract the following details for external transfer: +- **injectiveAddress** (string): Injective sender address +- **sourceSubaccountId** (string): Source subaccount ID +- **destinationSubaccountId** (string): Destination subaccount ID +- **amount** (string): Amount to transfer + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "sourceSubaccountId": "0x...", + "destinationSubaccountId": "0x...", + "amount": "1000000" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgIncreasePositionMarginTemplate = ` +Extract the following details for increasing position margin: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **sourceSubaccountId** (string): Source subaccount ID +- **destinationSubaccountId** (string): Destination subaccount ID +- **amount** (string): Margin amount to add + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "sourceSubaccountId": "0x...", + "destinationSubaccountId": "0x...", + "amount": "1000000" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgRewardsOptOutTemplate = ` +Extract the following details for opting out of rewards: +- **injectiveAddress** (string): Injective sender address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Admin Related Templates +export const msgAdminUpdateBinaryOptionsMarketTemplate = ` +Extract the following details for admin updating binary options market: +- **injectiveAddress** (string): Admin injective address +- **marketId** (string): Market ID +- **settlementPrice** (string): Settlement price +- **expiryTime** (number): Expiry timestamp +- **settlementTime** (number): Settlement timestamp + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "settlementPrice": "25000.5", + "expiryTime": 1641859200, + "settlementTime": 1641945600 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Module State & Parameters +export const getModuleStateTemplate = ` +Extract module state information. + +Response format: + +\`\`\`json +{ + "moduleState": { + "params": { + "spotMarketInstantListingFee": { + "amount": "100000000", + "denom": "inj" + }, + "derivativeMarketInstantListingFee": { + "amount": "1000000000", + "denom": "inj" + }, + "defaultSpotMakerFeeRate": "0.001", + "defaultSpotTakerFeeRate": "0.002", + "defaultDerivativeMakerFeeRate": "0.001", + "defaultDerivativeTakerFeeRate": "0.002", + "defaultInitialMarginRatio": "0.05", + "defaultMaintenanceMarginRatio": "0.02", + "defaultFundingInterval": 3600, + "fundingMultiple": 3600 + }, + "spotMarkets": [], + "derivativeMarkets": [], + "spotOrderbooks": [], + "derivativeOrderbooks": [], + "balances": [], + "positions": [] + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getFeeDiscountScheduleTemplate = ` +Extract fee discount schedule information. + +Response format: + +\`\`\`json +{ + "bucketCount": 10, + "bucketDuration": 1209600, + "quoteDenomsList": ["inj"], + "tierInfosList": [ + { + "makerDiscountRate": "0.001", + "takerDiscountRate": "0.001", + "stakedAmount": "10000000000", + "volume": "100000000" + } + ], + "disqualifiedMarketIdsList": [] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getFeeDiscountAccountInfoTemplate = ` +Extract the following details for fee discount account info: +- **injAddress** (string): Injective address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "tierLevel": 1, + "accountInfo": { + "makerDiscountRate": "0.001", + "takerDiscountRate": "0.001", + "stakedAmount": "10000000000", + "volume": "100000000" + }, + "accountTtl": { + "tier": 1, + "ttlTimestamp": 1641945600 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Trading Rewards +export const getTradingRewardsCampaignTemplate = ` +Extract trading rewards campaign information. + +Response format: + +\`\`\`json +{ + "tradingRewardCampaignInfo": { + "campaignDurationSeconds": 604800, + "quoteDenomsList": ["inj"], + "tradingRewardBoostInfo": { + "boostedSpotMarketIdsList": [], + "spotMarketMultipliersList": [], + "boostedDerivativeMarketIdsList": [], + "derivativeMarketMultipliersList": [] + }, + "disqualifiedMarketIdsList": [] + }, + "tradingRewardPoolCampaignScheduleList": [ + { + "startTimestamp": 1641859200, + "maxCampaignRewardsList": [ + { + "amount": "1000000000", + "denom": "inj" + } + ] + } + ], + "totalTradeRewardPoints": "1000000", + "pendingTradingRewardPoolCampaignScheduleList": [], + "pendingTotalTradeRewardPointsList": [] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTradeRewardPointsTemplate = ` +Extract the following details for trade reward points: +- **injectiveAddresses** (string[]): List of Injective addresses + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddresses": ["inj1...", "inj2..."] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "rewardPoints": ["100", "200"] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPendingTradeRewardPointsTemplate = ` +Extract the following details for pending trade reward points: +- **injectiveAddresses** (string[]): List of Injective addresses + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddresses": ["inj1...", "inj2..."] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "rewardPoints": ["100", "200"] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Binary Options Markets +export const msgCreateBinaryOptionsMarketTemplate = ` +Extract the following details for creating binary options market: +- **oracle** (string): Oracle provider +- **symbol** (string): Trading symbol +- **expiryTime** (number): Market expiry timestamp +- **settlementTime** (number): Settlement timestamp +- **admin** (string): Admin address +- **quoteDenom** (string): Quote denomination +- **minPriceTickSize** (string): Minimum price tick size +- **minQuantityTickSize** (string): Minimum quantity tick size + +Provide the request in the following JSON format: + +\`\`\`json +{ + "oracle": "band", + "symbol": "BTC/USD", + "expiryTime": 1641945600, + "settlementTime": 1641945600, + "admin": "inj1...", + "quoteDenom": "inj", + "minPriceTickSize": "0.000001", + "minQuantityTickSize": "0.000001" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "marketId": "0x...", + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Subaccount Trade Nonce +export const getSubaccountTradeNonceTemplate = ` +Extract the following details for subaccount trade nonce: +- **subaccountId** (string): Subaccount ID + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "subaccount_id" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "nonce": 5 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Position History +export const getPositionsV2Template = ` +Extract the following details for positions V2 query: +- **address** (string, optional): Account address +- **marketId** (string, optional): Market ID +- **marketIds** (string[], optional): Multiple market IDs +- **subaccountId** (string, optional): Subaccount ID +- **direction** (string, optional): Position direction +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "marketId": "market_id", + "marketIds": ["market_id1", "market_id2"], + "subaccountId": "subaccount_id", + "direction": "long", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "positions": [ + { + "marketId": "market_id", + "subaccountId": "subaccount_id", + "direction": "long", + "quantity": "1.5", + "entryPrice": "25000.5", + "margin": "1000", + "liquidationPrice": "24000.0", + "markPrice": "25100.0", + "ticker": "BTC/USDT", + "aggregateReduceOnlyQuantity": "0", + "updatedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Historical Data +export const getHistoricalBalanceTemplate = ` +Extract the following details for historical balance: +- **account** (string): Account address +- **resolution** (string): Time resolution for data points + +Provide the request in the following JSON format: + +\`\`\`json +{ + "account": "inj1...", + "resolution": "1d" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "t": [1641859200, 1641945600], + "v": [1000.5, 1100.75] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Denom Holders +export const getDenomHoldersTemplate = ` +Extract the following details for denom holders: +- **denom** (string): Token denomination +- **token** (string, optional): Token address +- **limit** (number, optional): Number of results + +Provide the request in the following JSON format: + +\`\`\`json +{ + "denom": "inj", + "token": "0x...", + "limit": 100 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "holders": [ + { + "accountAddress": "inj1...", + "balance": "1000000" + } + ], + "next": ["next_key"] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Grid Strategies +export const getGridStrategiesTemplate = ` +Extract the following details for grid strategies: +- **skip** (number, optional): Number of items to skip +- **limit** (number, optional): Number of items to return +- **state** (string, optional): Strategy state +- **marketId** (string, optional): Market ID +- **marketType** (string, optional): Market type +- **strategyType** (string[], optional): Strategy types +- **subaccountId** (string, optional): Subaccount ID +- **accountAddress** (string, optional): Account address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "skip": 0, + "limit": 100, + "state": "active", + "marketId": "market_id", + "marketType": "spot", + "strategyType": ["uniform"], + "subaccountId": "subaccount_id", + "accountAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "strategies": [ + { + "id": "strategy_id", + "accountAddress": "inj1...", + "subaccountId": "subaccount_id", + "marketId": "market_id", + "strategyType": "uniform", + "tickSize": "0.1", + "minPrice": "24000.0", + "maxPrice": "26000.0", + "gridCount": 20, + "state": "active", + "totalVolume": "100000.5", + "currentPnL": "1000.25", + "createdAt": 1641859200, + "updatedAt": 1641945600 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Instant Market Launch +export const msgInstantSpotMarketLaunchTemplate = ` +Extract the following details for instant spot market launch: +- **ticker** (string): Market ticker +- **baseDenom** (string): Base denomination +- **quoteDenom** (string): Quote denomination +- **minPriceTickSize** (string): Minimum price tick size +- **minQuantityTickSize** (string): Minimum quantity tick size + +Provide the request in the following JSON format: + +\`\`\`json +{ + "ticker": "INJ/USDT", + "baseDenom": "inj", + "quoteDenom": "usdt", + "minPriceTickSize": "0.000001", + "minQuantityTickSize": "0.000001" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "marketId": "0x...", + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getModuleParamsTemplate = ` +Extract module parameters information. + +Response format: + +\`\`\`json +{ + "spotMarketInstantListingFee": { + "amount": "100000000", + "denom": "inj" + }, + "derivativeMarketInstantListingFee": { + "amount": "1000000000", + "denom": "inj" + }, + "defaultSpotMakerFeeRate": "0.001", + "defaultSpotTakerFeeRate": "0.002", + "defaultDerivativeMakerFeeRate": "0.001", + "defaultDerivativeTakerFeeRate": "0.002", + "defaultInitialMarginRatio": "0.05", + "defaultMaintenanceMarginRatio": "0.02", + "defaultFundingInterval": 3600, + "fundingMultiple": 3600, + "relayerFeeShareRate": "0.4", + "exchangeModuleAdmin": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getOrderStatesTemplate = ` +Extract the following details for order states: +- **spotOrderHashes** (string[], optional): Spot order hashes +- **derivativeOrderHashes** (string[], optional): Derivative order hashes + +Provide the request in the following JSON format: + +\`\`\`json +{ + "spotOrderHashes": ["0x..."], + "derivativeOrderHashes": ["0x..."] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "spotOrderStates": { + "orderHash": "OrderState" + }, + "derivativeOrderStates": { + "orderHash": "OrderState" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSubaccountOrderSummaryTemplate = ` +Extract the following details for subaccount order summary: +- **subaccountId** (string): Subaccount ID +- **marketId** (string, optional): Market ID filter +- **orderDirection** (string, optional): Order direction filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "orderDirection": "buy" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "spotOrdersTotal": "10", + "derivativeOrdersTotal": "5", + "spotOrdersActiveTotal": "3", + "derivativeOrdersActiveTotal": "2", + "spotOrdersCancelledTotal": "5", + "derivativeOrdersCancelledTotal": "2", + "spotOrdersFilledTotal": "2", + "derivativeOrdersFilledTotal": "1" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeMarketsTemplate = ` +Extract the following details for derivative markets: +- **quoteDenom** (string, optional): Quote denomination filter, this needs to be in denom format! +- **marketStatus** (string, optional): Market status filter +- **marketStatuses** (string[], optional): Multiple market status filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "quoteDenom": "peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", + "marketStatus": "active", + "marketStatuses": ["active", "paused"] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "markets": [ + { + "marketId": "0x...", + "marketStatus": "active", + "ticker": "BTC/USDT PERP", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "serviceProviderFee": "0.4", + "isPerpetual": true, + "minPriceTickSize": 0.01, + "minQuantityTickSize": 0.001 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotMarketsTemplate = ` +Extract the following details for spot markets: +- **baseDenom** (string, optional): Base denomination filter +- **quoteDenom** (string, optional): Quote denomination filter +- **marketStatus** (string, optional): Market status filter +- **marketStatuses** (string[], optional): Multiple market status filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "baseDenom": "inj", + "quoteDenom": "peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", + "marketStatus": "active", + "marketStatuses": ["active", "paused"] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "markets": [ + { + "marketId": "0x...", + "marketStatus": "active", + "ticker": "INJ/USDT", + "baseDenom": "inj", + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "serviceProviderFee": "0.4", + "minPriceTickSize": 0.000001, + "minQuantityTickSize": 0.000001 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSubaccountsListTemplate = ` +Extract the following details for subaccounts list: +- **address** (string): Account address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "subaccounts": ["0x..."] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSubaccountBalancesListTemplate = ` +Extract the following details for subaccount balances: +- **subaccountId** (string): Subaccount ID + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "balances": [ + { + "subaccountId": "0x...", + "accountAddress": "inj1...", + "denom": "inj", + "deposit": { + "totalBalance": "1000000", + "availableBalance": "900000" + } + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getOrderbooksV2Template = ` +Extract the following details for orderbooks V2: +- **marketIds** (string[]): List of market IDs + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketIds": ["0x..."] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderbooks": [ + { + "marketId": "0x...", + "orderbook": { + "sequence": "123", + "buys": [ + { + "price": "25000.5", + "quantity": "1.5", + "timestamp": 1641859200 + } + ], + "sells": [ + { + "price": "25100.5", + "quantity": "0.5", + "timestamp": 1641859200 + } + ] + } + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTradingRewardsTemplate = ` +Extract the following details for trading rewards: +- **address** (string): Account address +- **epoch** (number): Reward epoch + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "epoch": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "rewards": [ + { + "accountAddress": "inj1...", + "rewards": [ + { + "amount": "1000000", + "denom": "inj" + } + ], + "distributedAt": 1641859200 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getHistoricalRpnlTemplate = ` +Extract the following details for historical RPNL: +- **account** (string): Account address +- **resolution** (string): Time resolution for data points + +Provide the request in the following JSON format: + +\`\`\`json +{ + "account": "inj1...", + "resolution": "1d" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "t": [1641859200, 1641945600], + "v": [1000.5, 1100.75] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getHistoricalVolumesTemplate = ` +Extract the following details for historical volumes: +- **account** (string): Account address +- **resolution** (string): Time resolution for data points + +Provide the request in the following JSON format: + +\`\`\`json +{ + "account": "inj1...", + "resolution": "1d" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "t": [1641859200, 1641945600], + "v": [50000.5, 75000.25] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getFundingPaymentsTemplate = ` +Extract the following details for funding payments: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "marketIds": ["0x..."], + "subaccountId": "0x...", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "fundingPayments": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "amount": "100.5", + "timestamp": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPnlLeaderboardTemplate = ` +Extract the following details for PnL leaderboard: +- **startDate** (string): Start date +- **endDate** (string): End date +- **limit** (number, optional): Number of results +- **account** (string, optional): Account address filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "startDate": "2024-01-01", + "endDate": "2024-01-31", + "limit": 100, + "account": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "firstDate": "2024-01-01", + "lastDate": "2024-01-31", + "leaders": [ + { + "account": "inj1...", + "pnl": 100000.5, + "volume": 1000000.0, + "rank": 1 + } + ], + "accountRow": { + "account": "inj1...", + "pnl": 50000.25, + "volume": 500000.0, + "rank": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getVolLeaderboardTemplate = ` +Extract the following details for volume leaderboard: +- **startDate** (string): Start date +- **endDate** (string): End date +- **limit** (number, optional): Number of results +- **account** (string, optional): Account address filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "startDate": "2024-01-01", + "endDate": "2024-01-31", + "limit": 100, + "account": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "firstDate": "2024-01-01", + "lastDate": "2024-01-31", + "leaders": [ + { + "account": "inj1...", + "volume": 1000000.0, + "rank": 1 + } + ], + "accountRow": { + "account": "inj1...", + "volume": 500000.0, + "rank": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPnlLeaderboardFixedResolutionTemplate = ` +Extract the following details for PnL leaderboard with fixed resolution: +- **resolution** (string): Time resolution +- **limit** (number, optional): Number of results +- **account** (string, optional): Account address filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "resolution": "1d", + "limit": 100, + "account": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "firstDate": "2024-01-01", + "lastDate": "2024-01-31", + "leaders": [ + { + "account": "inj1...", + "pnl": 100000.5, + "volume": 1000000.0, + "rank": 1 + } + ], + "accountRow": { + "account": "inj1...", + "pnl": 50000.25, + "volume": 500000.0, + "rank": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getVolLeaderboardFixedResolutionTemplate = ` +Extract the following details for volume leaderboard with fixed resolution: +- **resolution** (string): Time resolution +- **limit** (number, optional): Number of results +- **account** (string, optional): Account address filter + +Provide the request in the following JSON format: + +\`\`\`json +{ + "resolution": "1d", + "limit": 100, + "account": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "firstDate": "2024-01-01", + "lastDate": "2024-01-31", + "leaders": [ + { + "account": "inj1...", + "volume": 1000000.0, + "rank": 1 + } + ], + "accountRow": { + "account": "inj1...", + "volume": 500000.0, + "rank": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAtomicSwapHistoryTemplate = ` +Extract the following details for atomic swap history: +- **address** (string): Account address +- **contractAddress** (string): Contract address +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "contractAddress": "0x...", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "swapHistory": [ + { + "sender": "inj1...", + "route": "route_id", + "sourceCoin": { + "amount": "1000000", + "denom": "inj" + }, + "destinationCoin": { + "amount": "900000", + "denom": "usdt" + }, + "fees": [ + { + "amount": "1000", + "denom": "inj" + } + ], + "contractAddress": "0x...", + "indexBySender": 1, + "indexBySenderContract": 1, + "txHash": "0x...", + "executedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIsOptedOutOfRewardsTemplate = ` +Extract the following details for rewards opt-out status: +- **account** (string): Account address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "account": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "isOptedOut": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBinaryOptionsMarketsTemplate = ` +Extract the following details for binary options markets: +- **marketStatus** (string, optional): Market status filter +- **quoteDenom** (string, optional): Quote denomination filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketStatus": "active", + "quoteDenom": "usdt", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "markets": [ + { + "marketId": "0x...", + "marketStatus": "active", + "ticker": "BTC>25000-240630", + "oracleSymbol": "BTC", + "oracleProvider": "band", + "oracleScaleFactor": 6, + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "expirationTimestamp": 1719705600, + "settlementTimestamp": 1719792000, + "serviceProviderFee": "0.4", + "minPriceTickSize": 0.01, + "minQuantityTickSize": 0.001 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBinaryOptionsMarketTemplate = ` +Extract the following details for binary options market lookup: +- **marketId** (string): Market ID + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "market": { + "marketId": "0x...", + "marketStatus": "active", + "ticker": "BTC>25000-240630", + "oracleSymbol": "BTC", + "oracleProvider": "band", + "oracleScaleFactor": 6, + "quoteDenom": "usdt", + "makerFeeRate": "0.001", + "takerFeeRate": "0.002", + "expirationTimestamp": 1719705600, + "settlementTimestamp": 1719792000, + "serviceProviderFee": "0.4", + "minPriceTickSize": 0.01, + "minQuantityTickSize": 0.001 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeOrderHistoryTemplate = ` +Extract the following details for derivative order history: +- **subaccountId** (string, optional): Subaccount ID filter +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **orderTypes** (string[], optional): Order types filter +- **executionTypes** (string[], optional): Execution types filter +- **direction** (string, optional): Order direction filter +- **isConditional** (boolean, optional): Whether order is conditional +- **state** (string, optional): Order state filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "marketIds": ["0x..."], + "orderTypes": ["limit", "market"], + "executionTypes": ["limit", "market"], + "direction": "buy", + "isConditional": false, + "state": "booked", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHistory": [ + { + "orderHash": "0x...", + "marketId": "0x...", + "isActive": true, + "subaccountId": "0x...", + "executionType": "limit", + "orderType": "buy", + "price": "25000.5", + "triggerPrice": "0", + "quantity": "1.5", + "filledQuantity": "0.5", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200, + "direction": "buy", + "isConditional": false, + "triggerAt": 0, + "margin": "1000" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPositionsListTemplate = ` +Extract the following details for positions list: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **direction** (string, optional): Position direction filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "marketIds": ["0x..."], + "subaccountId": "0x...", + "direction": "long", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "positions": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "direction": "long", + "quantity": "1.5", + "entryPrice": "25000.5", + "margin": "1000", + "liquidationPrice": "24000.0", + "markPrice": "25100.0", + "ticker": "BTC/USDT" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeTradesTemplate = ` +Extract the following details for derivative trades: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **executionSide** (string, optional): Execution side filter +- **direction** (string, optional): Trade direction filter +- **executionTypes** (string[], optional): Execution types filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "marketIds": ["0x..."], + "subaccountId": "0x...", + "executionSide": "taker", + "direction": "buy", + "executionTypes": ["market", "limit"], + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "trades": [ + { + "orderHash": "0x...", + "subaccountId": "0x...", + "marketId": "0x...", + "tradeId": "trade_id", + "executedAt": 1641859200, + "tradeExecutionType": "market", + "executionSide": "taker", + "tradeDirection": "buy", + "executionPrice": "25000.5", + "executionQuantity": "1.5", + "executionMargin": "1000", + "fee": "25.0", + "feeRecipient": "inj1...", + "isLiquidation": false, + "payout": "37525.75" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDerivativeSubaccountOrdersListTemplate = ` +Extract the following details for derivative subaccount orders: +- **subaccountId** (string): Subaccount ID +- **marketId** (string, optional): Market ID filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orders": [ + { + "orderHash": "0x...", + "orderSide": "buy", + "marketId": "0x...", + "subaccountId": "0x...", + "isReduceOnly": false, + "margin": "1000", + "price": "25000.5", + "quantity": "1.5", + "unfilledQuantity": "0.5", + "triggerPrice": "0", + "feeRecipient": "inj1...", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200, + "orderNumber": 1, + "orderType": "limit", + "isConditional": false, + "triggerAt": 0, + "placedOrderHash": "0x...", + "executionType": "limit" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getOrderbookTemplate = ` +Extract the following details for orderbooks: +- **marketIds** (string[]): Market IDs + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketIds": ["0x..."] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderbook": [ + "marketId": "0x...", + "orderbook": { + "sequence": "123", + "buys": [ + { + "price": "25000.5", + "quantity": "1.5", + "timestamp": 1641859200 + } + ], + "sells": [ + { + "price": "25100.5", + "quantity": "0.5", + "timestamp": 1641859200 + } + ] + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBatchCancelBinaryOptionsOrdersTemplate = ` +Extract the following details for batch canceling binary options orders: +- **injectiveAddress** (string): Injective sender address +- **orders** (array): List of orders to cancel containing: + - marketId (string) + - subaccountId (string) + - orderHash (string) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "orders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCancelBinaryOptionsOrderTemplate = ` +Extract the following details for canceling a binary options order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **orderHash** (string): Order hash + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateBinaryOptionsLimitOrderTemplate = ` +Extract the following details for creating binary options limit order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **feeRecipient** (string): Fee recipient address +- **price** (string): Order price +- **quantity** (string): Order quantity +- **orderType** (string): Order type (BUY/SELL) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "feeRecipient": "inj1...", + "price": "25000.5", + "quantity": "1.5", + "orderType": "BUY" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgLiquidatePositionTemplate = ` +Extract the following details for liquidating a position: +- **injectiveAddress** (string): Injective sender address +- **subaccountId** (string): Subaccount ID to liquidate +- **marketId** (string): Market ID +- **order** (object): Liquidation order details containing: + - marketId (string) + - orderType (string) + - price (string) + - quantity (string) + - margin (string) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "subaccountId": "0x...", + "marketId": "0x...", + "order": { + "marketId": "0x...", + "orderType": "SELL", + "price": "24000.0", + "quantity": "1.5", + "margin": "1000" + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgReclaimLockedFundsTemplate = ` +Extract the following details for reclaiming locked funds: +- **injectiveAddress** (string): Injective sender address +- **lockedAccountPubKey** (string): Public key of the locked account +- **lockedAccountSignature** (string): Signature from the locked account + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "lockedAccountPubKey": "0x...", + "lockedAccountSignature": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSignDataTemplate = ` +Extract the following details for signing data: +- **injectiveAddress** (string): Injective sender address +- **data** (string): Data to sign + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "data": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "signature": "0x...", + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateSpotLimitOrderTemplate = ` +Extract the following details for creating spot limit order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **orderType** (string): Order type (BUY/SELL) +- **price** (string): Order price +- **quantity** (string): Order quantity +- **feeRecipient** (string): Fee recipient address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "orderType": "BUY", + "price": "25000.5", + "quantity": "1.5", + "feeRecipient": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateDerivativeLimitOrderTemplate = ` +Extract the following details for creating derivative limit order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **orderType** (string): Order type (BUY/SELL) +- **price** (string): Order price +- **quantity** (string): Order quantity +- **margin** (string): Order margin +- **feeRecipient** (string): Fee recipient address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "orderType": "BUY", + "price": "25000.5", + "quantity": "1.5", + "margin": "1000", + "feeRecipient": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBatchCancelSpotOrdersTemplate = ` +Extract the following details for batch canceling spot orders: +- **injectiveAddress** (string): Injective sender address +- **orders** (array): List of orders to cancel containing: + - marketId (string) + - subaccountId (string) + - orderHash (string) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "orders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBatchCancelDerivativeOrdersTemplate = ` +Extract the following details for batch canceling derivative orders: +- **injectiveAddress** (string): Injective sender address +- **orders** (array): List of orders to cancel containing: + - marketId (string) + - subaccountId (string) + - orderHash (string) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "orders": [ + { + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." + } + ] +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCancelSpotOrderTemplate = ` +Extract the following details for canceling a spot order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **orderHash** (string): Order hash + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCancelDerivativeOrderTemplate = ` +Extract the following details for canceling a derivative order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **orderHash** (string): Order hash + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "orderHash": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "success": true, + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotSubaccountOrdersListTemplate = ` +Extract the following details for spot subaccount orders: +- **subaccountId** (string): Subaccount ID +- **marketId** (string, optional): Market ID filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orders": [ + { + "orderHash": "0x...", + "orderSide": "buy", + "marketId": "0x...", + "subaccountId": "0x...", + "price": "25000.5", + "quantity": "1.5", + "unfilledQuantity": "0.5", + "triggerPrice": "0", + "feeRecipient": "inj1...", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotSubaccountTradesListTemplate = ` +Extract the following details for spot subaccount trades: +- **subaccountId** (string): Subaccount ID +- **marketId** (string, optional): Market ID filter +- **direction** (string, optional): Trade direction +- **executionType** (string, optional): Execution type +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "direction": "buy", + "executionType": "market", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "trades": [ + { + "orderHash": "0x...", + "subaccountId": "0x...", + "marketId": "0x...", + "tradeId": "trade_id", + "executedAt": 1641859200, + "executionSide": "taker", + "tradeExecutionType": "market", + "tradeDirection": "buy", + "executionPrice": "25000.5", + "executionQuantity": "1.5", + "fee": "25.0", + "feeRecipient": "inj1..." + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateBinaryOptionsMarketOrderTemplate = ` +Extract the following details for creating binary options market order: +- **injectiveAddress** (string): Injective sender address +- **marketId** (string): Market ID +- **subaccountId** (string): Subaccount ID +- **feeRecipient** (string): Fee recipient address +- **price** (string): Order price +- **quantity** (string): Order quantity +- **orderType** (string): Order type (BUY/SELL) + +Provide the request in the following JSON format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "marketId": "0x...", + "subaccountId": "0x...", + "feeRecipient": "inj1...", + "price": "25000.5", + "quantity": "1.5", + "orderType": "BUY" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHash": "0x...", + "txHash": "0x..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotOrderHistoryTemplate = ` +Extract the following details for spot order history: +- **subaccountId** (string, optional): Subaccount ID filter +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **orderTypes** (string[], optional): Order types filter +- **executionTypes** (string[], optional): Execution types filter +- **direction** (string, optional): Order direction filter +- **isConditional** (boolean, optional): Whether order is conditional +- **state** (string, optional): Order state filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "subaccountId": "0x...", + "marketId": "0x...", + "marketIds": ["0x..."], + "orderTypes": ["limit", "market"], + "executionTypes": ["limit", "market"], + "direction": "buy", + "isConditional": false, + "state": "booked", + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "orderHistory": [ + { + "orderHash": "0x...", + "marketId": "0x...", + "active": true, + "subaccountId": "0x...", + "executionType": "limit", + "orderType": "buy", + "price": "25000.5", + "triggerPrice": "0", + "quantity": "1.5", + "filledQuantity": "0.5", + "state": "booked", + "createdAt": 1641859200, + "updatedAt": 1641859200, + "direction": "buy" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSpotTradesTemplate = ` +Extract the following details for spot trades: +- **marketId** (string, optional): Market ID filter +- **marketIds** (string[], optional): Multiple market IDs filter +- **subaccountId** (string, optional): Subaccount ID filter +- **executionSide** (string, optional): Execution side filter +- **direction** (string, optional): Trade direction filter +- **executionTypes** (string[], optional): Execution types filter +- **pagination** (object, optional): Pagination options + +Provide the request in the following JSON format: + +\`\`\`json +{ + "marketId": "0x...", + "marketIds": ["0x..."], + "subaccountId": "0x...", + "executionSide": "taker", + "direction": "buy", + "executionTypes": ["market", "limit"], + "pagination": { + "from": 1, + "to": 100, + "limit": 10 + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "trades": [ + { + "orderHash": "0x...", + "subaccountId": "0x...", + "marketId": "0x...", + "tradeId": "trade_id", + "executedAt": 1641859200, + "executionSide": "taker", + "tradeExecutionType": "market", + "tradeDirection": "buy", + "price": "25000.5", + "quantity": "1.5", + "fee": "25.0", + "feeRecipient": "inj1..." + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAccountPortfolioBalancesTemplate = ` +Extract the following details for account portfolio balances: +- **address** (string): Account address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "balances": [ + { + "denom": "inj", + "totalBalance": "1000000", + "availableBalance": "900000", + "lockedBalance": "100000" + } + ], + "subaccountBalances": [ + { + "subaccountId": "0x...", + "denom": "inj", + "deposit": { + "totalBalance": "1000000", + "availableBalance": "900000" + } + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getRewardsTemplate = ` +Extract the following details for rewards: +- **address** (string): Account address +- **epoch** (number): Reward epoch + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "epoch": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "rewards": [ + { + "accountAddress": "inj1...", + "rewards": [ + { + "amount": "1000000", + "denom": "inj" + } + ], + "distributedAt": 1641859200 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/explorer.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/explorer.ts new file mode 100644 index 000000000000..f4f4606a243f --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/explorer.ts @@ -0,0 +1,450 @@ +export const getTxByHashTemplate = ` +Extract the following details for transaction lookup: +- **hash** (string): Transaction hash to lookup + +Provide the request in the following JSON format: + +\`\`\`json +{ + "hash": "0x..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "id": "tx_id", + "blockNumber": 12345, + "blockTimestamp": "2024-01-11T12:00:00Z", + "hash": "0x...", + "memo": "transaction memo", + "code": 0, + "data": "base64_encoded_data", + "info": "transaction info", + "gasWanted": 100000, + "gasUsed": 80000, + "gasFee": { + "amounts": [ + { + "amount": "1000000", + "denom": "inj" + } + ], + "gasLimit": 100000, + "payer": "inj1...", + "granter": "inj1..." + }, + "txType": "MsgSend", + "signatures": [ + { + "pubkey": "public_key", + "address": "inj1...", + "signature": "sig_data", + "sequence": 5 + } + ], + "messages": [ + { + "key": "message_key", + "value": "message_value" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAccountTxTemplate = ` +Extract the following details for account transactions: +- **address** (string): Account address +- **limit** (number, optional): Number of results +- **type** (string, optional): Transaction type filter +- **before** (number, optional): Results before this block +- **after** (number, optional): Results after this block +- **startTime** (number, optional): Start timestamp +- **endTime** (number, optional): End timestamp + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "inj1...", + "limit": 10, + "type": "MsgSend", + "before": 12345, + "after": 12300, + "startTime": 1641859200, + "endTime": 1641945600 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "txs": [ + { + "id": "tx_id", + "blockNumber": 12345, + "blockTimestamp": "2024-01-11T12:00:00Z", + "hash": "0x...", + "txType": "MsgSend" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorTemplate = ` +Extract the following details for validator lookup: +- **address** (string): Validator address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "address": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "id": "validator_id", + "moniker": "Validator Name", + "operatorAddress": "injvaloper1...", + "consensusAddress": "injvalcons1...", + "jailed": false, + "status": 1, + "tokens": "1000000000", + "delegatorShares": "1000000000", + "description": { + "moniker": "Validator Name", + "identity": "keybase_id", + "website": "https://validator.com", + "securityContact": "security@validator.com", + "details": "Validator details" + }, + "uptimePercentage": 99.9, + "commissionRate": "0.1", + "commissionMaxRate": "0.2", + "commissionMaxChangeRate": "0.01" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorUptimeTemplate = ` +Extract the following details for validator uptime: +- **validatorAddress** (string): Validator address + +Provide the request in the following JSON format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "blockNumber": 12345, + "status": "signed" + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPeggyDepositTxsTemplate = ` +Extract the following details for Peggy deposit transactions: +- **sender** (string, optional): Sender address +- **receiver** (string, optional): Receiver address +- **limit** (number, optional): Number of results +- **skip** (number, optional): Number of results to skip + +Provide the request in the following JSON format: + +\`\`\`json +{ + "sender": "eth_address", + "receiver": "inj1...", + "limit": 10, + "skip": 0 +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "sender": "eth_address", + "receiver": "inj1...", + "eventNonce": 123, + "eventHeight": 12345, + "amount": "1000000000", + "denom": "peggy0x...", + "orchestratorAddress": "inj1...", + "state": "completed", + "txHashesList": ["0x..."] + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPeggyWithdrawalTxsTemplate = ` +Extract the following details for Peggy withdrawal transactions: +- **sender** (string, optional): Sender address +- **receiver** (string, optional): Receiver address +- **limit** (number, optional): Number of results +- **skip** (number, optional): Number of results to skip + +Provide the request in the following JSON format: + +\`\`\`json +{ + "sender": "inj1...", + "receiver": "eth_address", + "limit": 10, + "skip": 0 +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "sender": "inj1...", + "receiver": "eth_address", + "amount": "1000000000", + "denom": "peggy0x...", + "bridgeFee": "1000000", + "outgoingTxId": 123, + "batchTimeout": 100, + "batchNonce": 5, + "state": "completed", + "txHashesList": ["0x..."] + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBlocksTemplate = ` +Extract the following details for blocks query: +- **before** (number, optional): Results before this block +- **after** (number, optional): Results after this block +- **limit** (number, optional): Number of results +- **from** (number, optional): Start block height +- **to** (number, optional): End block height + +Provide the request in the following JSON format: + +\`\`\`json +{ + "before": 12345, + "after": 12300, + "limit": 10, + "from": 12300, + "to": 12345 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "blocks": [ + { + "height": 12345, + "proposer": "injvaloper1...", + "moniker": "Validator Name", + "blockHash": "0x...", + "parentHash": "0x...", + "numPreCommits": 150, + "numTxs": 10, + "timestamp": "2024-01-11T12:00:00Z" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getBlockTemplate = ` +Extract the following details for block lookup: +- **id** (string): Block height or hash + +Provide the request in the following JSON format: + +\`\`\`json +{ + "id": "12345" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "block": { + "height": 12345, + "proposer": "injvaloper1...", + "moniker": "Validator Name", + "blockHash": "0x...", + "parentHash": "0x...", + "numPreCommits": 150, + "numTxs": 10, + "timestamp": "2024-01-11T12:00:00Z" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTxsTemplate = ` +Extract the following details for transactions query: +- **before** (number, optional): Results before this block +- **after** (number, optional): Results after this block +- **limit** (number, optional): Number of results +- **skip** (number, optional): Number of results to skip +- **type** (string, optional): Transaction type filter +- **chainModule** (string, optional): Chain module filter +- **startTime** (number, optional): Start timestamp +- **endTime** (number, optional): End timestamp + +Provide the request in the following JSON format: + +\`\`\`json +{ + "before": 12345, + "after": 12300, + "limit": 10, + "skip": 0, + "type": "MsgSend", + "chainModule": "bank", + "startTime": 1641859200, + "endTime": 1641945600 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "transactions": [ + { + "id": "tx_id", + "blockNumber": 12345, + "blockTimestamp": "2024-01-11T12:00:00Z", + "hash": "0x...", + "txType": "MsgSend" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIBCTransferTxsTemplate = ` +Extract the following details for IBC transfer transactions: +- **sender** (string, optional): Sender address +- **receiver** (string, optional): Receiver address +- **srcChannel** (string, optional): Source channel +- **srcPort** (string, optional): Source port +- **destChannel** (string, optional): Destination channel +- **destPort** (string, optional): Destination port +- **limit** (number, optional): Number of results +- **skip** (number, optional): Number of results to skip + +Provide the request in the following JSON format: + +\`\`\`json +{ + "sender": "inj1...", + "receiver": "cosmos1...", + "srcChannel": "channel-1", + "srcPort": "transfer", + "destChannel": "channel-0", + "destPort": "transfer", + "limit": 10, + "skip": 0 +} +\`\`\` + +Response format: + +\`\`\`json +[ + { + "sender": "inj1...", + "receiver": "cosmos1...", + "sourcePort": "transfer", + "sourceChannel": "channel-1", + "destinationPort": "transfer", + "destinationChannel": "channel-0", + "amount": "1000000000", + "denom": "inj", + "timeoutHeight": "1-1000000", + "timeoutTimestamp": 1641945600, + "state": "completed" + } +] +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getExplorerStatsTemplate = ` +Extract explorer statistics. + +Response format: + +\`\`\`json +{ + "assets": "1000", + "txsTotal": "1000000", + "addresses": "50000", + "injSupply": "100000000", + "txsInPast30Days": "100000", + "txsInPast24Hours": "10000", + "blockCountInPast24Hours": "5000", + "txsPerSecondInPast24Hours": "0.5", + "txsPerSecondInPast100Blocks": "0.8" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/gov.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/gov.ts new file mode 100644 index 000000000000..3f6467b1ffb6 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/gov.ts @@ -0,0 +1,503 @@ +// Governance Module Templates + +export const getGovernanceModuleParamsTemplate = ` +Extract the following details to get governance module parameters: +- **votingParams** (object): Contains: + - **votingPeriod** (number): Duration of the voting period in seconds +- **tallyParams** (object): Contains: + - **quorum** (string): Minimum percentage of voting power required + - **threshold** (string): Minimum percentage for proposal to pass + - **vetoThreshold** (string): Minimum veto percentage to reject +- **depositParams** (object): Contains: + - **minDepositList** (array): Required minimum deposits + - **maxDepositPeriod** (number): Maximum deposit period in seconds + +Provide the response in the following JSON format: + +\`\`\`json +{ + "votingParams": { + "votingPeriod": 604800 + }, + "tallyParams": { + "quorum": "0.334", + "threshold": "0.5", + "vetoThreshold": "0.334" + }, + "depositParams": { + "minDepositList": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ], + "maxDepositPeriod": 1209600 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getProposalsTemplate = ` +Extract the following details for retrieving proposals: +- **status** (CosmosGovV1Gov.ProposalStatus): Filter by proposal status +- **pagination** (PaginationOption): Optional pagination parameters + +Response will contain: +- **proposals** (Proposal[]): List of proposals +- **pagination**: Pagination response information + +Provide the request in the following JSON format: + +\`\`\`json +{ + "status": 2, + "pagination": { + "key": "", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "proposals": [ + { + "proposalId": 1, + "title": "Example Proposal", + "summary": "This is an example proposal", + "proposer": "inj1...", + "status": 2, + "finalTallyResult": { + "yesCount": "100", + "abstainCount": "10", + "noCount": "5", + "noWithVetoCount": "2" + }, + "submitTime": 1632150400, + "depositEndTime": 1633360000, + "votingStartTime": 1633360000, + "votingEndTime": 1633964800, + "totalDeposits": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] + } + ], + "pagination": { + "nextKey": "", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getProposalTemplate = ` +Extract the following details for retrieving a specific proposal: +- **proposalId** (number): The ID of the proposal + +Provide the request in the following JSON format: + +\`\`\`json +{ + "proposalId": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "proposalId": 1, + "title": "Example Proposal", + "summary": "This is an example proposal", + "proposer": "inj1...", + "status": 2, + "finalTallyResult": { + "yesCount": "100", + "abstainCount": "10", + "noCount": "5", + "noWithVetoCount": "2" + }, + "submitTime": 1632150400, + "depositEndTime": 1633360000, + "votingStartTime": 1633360000, + "votingEndTime": 1633964800, + "totalDeposits": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getProposalDepositsTemplate = ` +Extract the following details for retrieving proposal deposits: +- **proposalId** (number): The ID of the proposal +- **pagination** (PaginationOption): Optional pagination parameters + +Response will contain: +- **deposits** (ProposalDeposit[]): List of deposits +- **pagination**: Pagination response information + +Request format: + +\`\`\`json +{ + "proposalId": 1, + "pagination": { + "key": "", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "deposits": [ + { + "depositor": "inj1...", + "amounts": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] + } + ], + "pagination": { + "nextKey": "", + "total": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getProposalVotesTemplate = ` +Extract the following details for retrieving proposal votes: +- **proposalId** (number): The ID of the proposal +- **pagination** (PaginationOption): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "proposalId": 1, + "pagination": { + "key": "", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response format: + +\`\`\`json +{ + "votes": [ + { + "proposalId": 1, + "voter": "inj1...", + "options": [ + { + "option": 1, + "weight": "1.0" + } + ], + "metadata": "" + } + ], + "pagination": { + "nextKey": "", + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getProposalTallyTemplate = ` +Extract the following details for retrieving proposal tally: +- **proposalId** (number): The ID of the proposal + +Request format: + +\`\`\`json +{ + "proposalId": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "yesCount": "100", + "abstainCount": "10", + "noCount": "5", + "noWithVetoCount": "2" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitProposalExpiryFuturesMarketLaunchTemplate = ` +Extract the following details for submitting an expiry futures market launch proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **marketId** (string): Market identifier +- **ticker** (string): Market ticker symbol +- **quoteDenom** (string): Quote denomination +- **oracleBase** (string): Oracle base +- **oracleQuote** (string): Oracle quote +- **expiry** (number): Expiry timestamp +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Launch BTC-USDT Quarterly Futures", + "description": "Proposal to launch BTC-USDT quarterly futures market", + "marketId": "0x123...", + "ticker": "BTC-USDT-Q", + "quoteDenom": "peggy0x123...USDT", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "expiry": 1640995200, + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitProposalSpotMarketLaunchTemplate = ` +Extract the following details for submitting a spot market launch proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **ticker** (string): Market ticker symbol +- **baseDenom** (string): Base denomination +- **quoteDenom** (string): Quote denomination +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Launch INJ-USDT Spot Market", + "description": "Proposal to launch INJ-USDT spot market", + "ticker": "INJ-USDT", + "baseDenom": "inj", + "quoteDenom": "peggy0x123...USDT", + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitProposalPerpetualMarketLaunchTemplate = ` +Extract the following details for submitting a perpetual market launch proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **ticker** (string): Market ticker symbol +- **quoteDenom** (string): Quote denomination +- **oracleBase** (string): Oracle base +- **oracleQuote** (string): Oracle quote +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Launch ETH-USDT Perpetual", + "description": "Proposal to launch ETH-USDT perpetual market", + "ticker": "ETH-USDT-PERP", + "quoteDenom": "peggy0x123...USDT", + "oracleBase": "ETH", + "oracleQuote": "USDT", + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgVoteTemplate = ` +Extract the following details for submitting a vote: +- **proposalId** (number): The ID of the proposal +- **options** (WeightedVoteOption[]): Vote options with weights +- **metadata** (string): Optional vote metadata + +Request format: + +\`\`\`json +{ + "proposalId": 1, + "options": [ + { + "option": 1, + "weight": "1.0" + } + ], + "metadata": "" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitTextProposalTemplate = ` +Extract the following details for submitting a text proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Community Pool Spend", + "description": "Proposal to spend community pool funds", + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitProposalSpotMarketParamUpdateTemplate = ` +Extract the following details for submitting a spot market parameter update proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **marketId** (string): Market identifier +- **makerFeeRate** (string): Maker fee rate +- **takerFeeRate** (string): Taker fee rate +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Update INJ-USDT Spot Market Parameters", + "description": "Proposal to update INJ-USDT spot market parameters", + "marketId": "0x123...", + "makerFeeRate": "-0.0001", + "takerFeeRate": "0.001", + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSubmitGenericProposalTemplate = ` +Extract the following details for submitting a generic proposal: +- **title** (string): Proposal title +- **description** (string): Proposal description +- **messages** (any[]): Proposal messages +- **initialDeposit** (Coin[]): Initial deposit amount + +Request format: + +\`\`\`json +{ + "title": "Generic Proposal", + "description": "Generic governance proposal", + "messages": [], + "initialDeposit": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgGovDepositTemplate = ` +Extract the following details for depositing to a proposal: +- **proposalId** (number): The ID of the proposal +- **amount** (Coin[]): Deposit amount + +Request format: + +\`\`\`json +{ + "proposalId": 1, + "amount": [ + { + "denom": "inj", + "amount": "100000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/ibc.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/ibc.ts new file mode 100644 index 000000000000..b97e6a1f38c4 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/ibc.ts @@ -0,0 +1,135 @@ +// IBC Module Templates + +export const getDenomTraceTemplate = ` +Extract the following details to get denom trace information: +- **hash** (string): The hash of the denomination to trace + +Provide the request in the following JSON format: + +\`\`\`json +{ + "hash": "hash_string" +} +\`\`\` + +The response will contain: +- **path** (string): Chain of port/channel identifiers used for tracing +- **baseDenom** (string): Base denomination of the relayed fungible token + +Response format: + +\`\`\`json +{ + "path": "transfer/channel-0/transfer/channel-1", + "baseDenom": "uatom" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDenomsTraceTemplate = ` +Extract the following details to get multiple denom traces: +- **pagination** (object): Optional pagination parameters containing: + - **key** (string): Pagination key + - **offset** (number): Pagination offset + - **limit** (number): Number of records to return + - **countTotal** (boolean): Whether to count total records + +Provide the request in the following JSON format: + +\`\`\`json +{ + "pagination": { + "key": "", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +The response will contain an array of denom traces: +- **denomTraces** (array): List of denomination traces, each containing: + - **path** (string): Chain of port/channel identifiers + - **baseDenom** (string): Base denomination +- **pagination** (object): Pagination response information + +Response format: + +\`\`\`json +{ + "denomTraces": [ + { + "path": "transfer/channel-0/transfer/channel-1", + "baseDenom": "uatom" + }, + { + "path": "transfer/channel-2", + "baseDenom": "uosmo" + } + ], + "pagination": { + "nextKey": "", + "total": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgIBCTransferTemplate = ` +Extract the following details for IBC token transfer: +- **sourcePort** (string): Source port ID (e.g., "transfer") +- **sourceChannel** (string): Source channel ID +- **token** (object): Token to transfer containing: + - **denom** (string): Token denomination + - **amount** (string): Token amount +- **receiver** (string): Receiver address on destination chain +- **timeoutHeight** (object): Optional timeout height containing: + - **revisionNumber** (string): Chain revision number + - **revisionHeight** (string): Block height for timeout +- **timeoutTimestamp** (string): Optional timeout timestamp in nanoseconds +- **memo** (string): Optional transfer memo + +Ensure that: +1. Port ID and channel ID are valid +2. Token amount is positive +3. Receiver address is valid for destination chain +4. Either timeoutHeight or timeoutTimestamp is specified + +Provide the transfer details in the following JSON format: + +\`\`\`json +{ + "sourcePort": "transfer", + "sourceChannel": "channel-0", + "token": { + "denom": "inj", + "amount": "1000000000000000000" + }, + "receiver": "cosmos1...", + "timeoutHeight": { + "revisionNumber": "1", + "revisionHeight": "1000000" + }, + "timeoutTimestamp": "1640995200000000000", + "memo": "Optional transfer memo" +} +\`\`\` + +Success response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/index.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/index.ts new file mode 100644 index 000000000000..5045f3233d2d --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/index.ts @@ -0,0 +1,15 @@ +export * from "./auction"; +export * from "./auth"; +export * from "./bank"; +export * from "./distribution"; +export * from "./exchange"; +export * from "./gov"; +export * from "./ibc"; +export * from "./insurance"; +export * from "./mint"; +export * from "./mito"; +export * from "./peggy"; +export * from "./permissions"; +export * from "./staking"; +export * from "./token-factory"; +export * from "./wasm"; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/insurance.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/insurance.ts new file mode 100644 index 000000000000..3d7b09d98ae9 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/insurance.ts @@ -0,0 +1,246 @@ +// Insurance Fund Module Templates + +export const getInsuranceModuleParamsTemplate = ` +Extract the following details for insurance module parameters: +- **defaultRedemptionNoticePeriodDuration** (number): Default duration for redemption notice period in seconds + +Provide the response in the following JSON format: + +\`\`\`json +{ + "defaultRedemptionNoticePeriodDuration": 1209600 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getInsuranceFundsTemplate = ` +Request to fetch all insurance funds. No parameters required. + +Response will contain an array of insurance funds with the following details: +- **depositDenom** (string): Denomination of deposits +- **insurancePoolTokenDenom** (string): Denomination of pool tokens +- **redemptionNoticePeriodDuration** (number): Duration for redemption notice +- **balance** (string): Current fund balance +- **totalShare** (string): Total share amount +- **marketId** (string): Market identifier +- **marketTicker** (string): Market ticker symbol +- **oracleBase** (string): Oracle base asset +- **oracleQuote** (string): Oracle quote asset +- **oracleType** (number): Type of oracle +- **expiry** (number): Expiry timestamp + +Response format: + +\`\`\`json +{ + "insuranceFunds": [ + { + "depositDenom": "inj", + "insurancePoolTokenDenom": "share1", + "redemptionNoticePeriodDuration": 1209600, + "balance": "1000000000000000000", + "totalShare": "1000000000000000000", + "marketId": "0x1234...", + "marketTicker": "BTC/USDT", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "oracleType": 1, + "expiry": 1640995200 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getInsuranceFundTemplate = ` +Extract the following details to get a specific insurance fund: +- **marketId** (string): Market identifier for the insurance fund + +Request format: + +\`\`\`json +{ + "marketId": "0x1234..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "depositDenom": "inj", + "insurancePoolTokenDenom": "share1", + "redemptionNoticePeriodDuration": 1209600, + "balance": "1000000000000000000", + "totalShare": "1000000000000000000", + "marketId": "0x1234...", + "marketTicker": "BTC/USDT", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "oracleType": 1, + "expiry": 1640995200 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getEstimatedRedemptionsTemplate = ` +Extract the following details for estimated redemptions: +- **marketId** (string): Market identifier +- **address** (string): Account address + +Request format: + +\`\`\`json +{ + "marketId": "0x1234...", + "address": "inj1..." +} +\`\`\` + +Response will contain array of redemption amounts: +- **amounts** (array): List of redemption amounts containing: + - **amount** (string): Redemption amount + - **denom** (string): Token denomination + +Response format: + +\`\`\`json +{ + "amounts": [ + { + "amount": "1000000000000000000", + "denom": "inj" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPendingRedemptionsTemplate = ` +Extract the following details for pending redemptions: +- **marketId** (string): Market identifier +- **address** (string): Account address + +Request format: + +\`\`\`json +{ + "marketId": "0x1234...", + "address": "inj1..." +} +\`\`\` + +Response will contain array of pending redemption amounts: +- **amounts** (array): List of pending redemption amounts containing: + - **amount** (string): Redemption amount + - **denom** (string): Token denomination + +Response format: + +\`\`\`json +{ + "amounts": [ + { + "amount": "1000000000000000000", + "denom": "inj" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateInsuranceFundTemplate = ` +Extract the following details for creating an insurance fund: +- **marketId** (string): Market identifier +- **ticker** (string): Market ticker symbol +- **quoteDenom** (string): Quote denomination +- **oracleBase** (string): Oracle base asset +- **oracleQuote** (string): Oracle quote asset +- **oracleType** (number): Type of oracle +- **expiry** (number): Optional expiry timestamp +- **initialDeposit** (object): Initial deposit containing: + - **amount** (string): Deposit amount + - **denom** (string): Token denomination + +Request format: + +\`\`\`json +{ + "marketId": "0x1234...", + "ticker": "BTC/USDT", + "quoteDenom": "peggy0x...", + "oracleBase": "BTC", + "oracleQuote": "USDT", + "oracleType": 1, + "expiry": 1640995200, + "initialDeposit": { + "amount": "1000000000000000000", + "denom": "inj" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgRequestRedemptionTemplate = ` +Extract the following details for requesting a redemption: +- **marketId** (string): Market identifier +- **amount** (object): Redemption amount containing: + - **amount** (string): Amount to redeem + - **denom** (string): Token denomination + +Request format: + +\`\`\`json +{ + "marketId": "0x1234...", + "amount": { + "amount": "1000000000000000000", + "denom": "share1" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgUnderwriteTemplate = ` +Extract the following details for underwriting an insurance fund: +- **marketId** (string): Market identifier +- **deposit** (object): Deposit amount containing: + - **amount** (string): Amount to deposit + - **denom** (string): Token denomination + +Request format: + +\`\`\`json +{ + "marketId": "0x1234...", + "deposit": { + "amount": "1000000000000000000", + "denom": "inj" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/mint.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/mint.ts new file mode 100644 index 000000000000..10ed5c947689 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/mint.ts @@ -0,0 +1,65 @@ +// Mint Module Templates + +export const getMintModuleParamsTemplate = ` +Extract the mint module parameters. + +The response will contain: +- **mintDenom** (string): Type of coin to mint +- **inflationRateChange** (string): Maximum annual change in inflation rate +- **inflationMax** (string): Maximum inflation rate +- **inflationMin** (string): Minimum inflation rate +- **goalBonded** (string): Goal of percent bonded atoms +- **blocksPerYear** (string): Expected blocks per year + +Response format: + +\`\`\`json +{ + "mintDenom": "inj", + "inflationRateChange": "0.130000000000000000", + "inflationMax": "0.200000000000000000", + "inflationMin": "0.070000000000000000", + "goalBonded": "0.670000000000000000", + "blocksPerYear": "6311520" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getInflationTemplate = ` +Extract the current inflation rate. + +The response will contain: +- **inflation** (string): Current inflation rate + +Response format: + +\`\`\`json +{ + "inflation": "0.130000000000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAnnualProvisionsTemplate = ` +Extract the current annual provisions. + +The response will contain: +- **annualProvisions** (string): Current annual provisions + +Response format: + +\`\`\`json +{ + "annualProvisions": "5000000000000000000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/mito.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/mito.ts new file mode 100644 index 000000000000..980269a967bb --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/mito.ts @@ -0,0 +1,1242 @@ +// Mito Module Templates + +export const getVaultTemplate = ` +Extract the following details for retrieving a specific vault: +- **contractAddress** (string): Optional contract address +- **slug** (string): Optional vault slug + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "slug": "vault-slug" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "codeId": "1", + "vaultName": "Example Vault", + "marketId": "0x123...", + "currentTvl": 1000000, + "profits": { + "allTimeChange": 10.5, + "threeMonthsChange": 5.2, + "oneMonthChange": 2.1, + "oneDayChange": 0.5, + "oneWeekChange": 1.2, + "oneYearChange": 15.3, + "threeYearsChange": 45.6, + "sixMonthsChange": 8.4 + }, + "updatedAt": 1632150400, + "vaultType": "perpetual", + "lpTokenPrice": 1.05, + "subaccountInfo": { + "subaccountId": "0x123...", + "balancesList": [ + { + "denom": "inj", + "totalBalance": "1000000000" + } + ] + }, + "masterContractAddress": "inj1...", + "totalLpAmount": "1000000", + "slug": "vault-slug", + "createdAt": 1632150400, + "notionalValueCap": "10000000", + "tvlChanges": { + "allTimeChange": 20.5 + }, + "apy": 15.2, + "apy7D": 14.8, + "apy7DFq": 14.9, + "apyue": 15.0, + "apyV3": 15.1, + "registrationMode": "open" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getVaultsTemplate = ` +Extract the following details for retrieving vaults: +- **limit** (number): Optional number of records +- **codeId** (string): Optional code ID filter +- **pageIndex** (number): Optional page index + +Request format: + +\`\`\`json +{ + "limit": 10, + "codeId": "1", + "pageIndex": 0 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "vaults": [ + { + "contractAddress": "inj1...", + "vaultName": "Example Vault", + "currentTvl": 1000000, + "lpTokenPrice": 1.05, + "apy": 15.2 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getLpTokenPriceChartTemplate = ` +Extract the following details for LP token price chart: +- **to** (string): Optional end timestamp +- **from** (string): Optional start timestamp +- **vaultAddress** (string): Vault address + +Request format: + +\`\`\`json +{ + "to": "1640995200", + "from": "1633360000", + "vaultAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "priceSnapshots": [ + { + "price": 1.05, + "updatedAt": 1633360000 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTVLChartTemplate = ` +Extract the following details for TVL chart: +- **to** (string): Optional end timestamp +- **from** (string): Optional start timestamp +- **vaultAddress** (string): Vault address + +Request format: + +\`\`\`json +{ + "to": "1640995200", + "from": "1633360000", + "vaultAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "priceSnapshots": [ + { + "price": 1000000, + "updatedAt": 1633360000 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getVaultsByHolderAddressTemplate = ` +Extract the following details for vaults by holder: +- **skip** (number): Optional skip count +- **limit** (number): Optional number of records +- **holderAddress** (string): Holder address +- **vaultAddress** (string): Optional vault address + +Request format: + +\`\`\`json +{ + "skip": 0, + "limit": 10, + "holderAddress": "inj1...", + "vaultAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "subscriptions": [ + { + "vaultInfo": { + "contractAddress": "inj1...", + "vaultName": "Example Vault", + "currentTvl": 1000000 + }, + "lpAmount": "1000000", + "holderAddress": "inj1...", + "lpAmountPercentage": 0.1 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getLPHoldersTemplate = ` +Extract the following details for LP holders: +- **skip** (number): Optional skip count +- **limit** (number): Optional number of records +- **vaultAddress** (string): Vault address +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "skip": 0, + "limit": 10, + "vaultAddress": "inj1...", + "stakingContractAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "holders": [ + { + "holderAddress": "inj1...", + "vaultAddress": "inj1...", + "amount": "1000000", + "updatedAt": 1633360000, + "lpAmountPercentage": 0.1, + "redemptionLockTime": "1640995200", + "stakedAmount": "500000" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getHolderPortfolioTemplate = ` +Extract the following details for holder portfolio: +- **holderAddress** (string): Holder address +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "holderAddress": "inj1...", + "stakingContractAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "totalValue": 1000000, + "pnl": 50000, + "totalValueChartList": [ + { + "price": 1000000, + "updatedAt": 1633360000 + } + ], + "pnlChartList": [ + { + "price": 50000, + "updatedAt": 1633360000 + } + ], + "updatedAt": 1633360000 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getLeaderboardTemplate = ` +Extract the following details for leaderboard: +- **epochId** (number): Optional epoch ID + +Request format: + +\`\`\`json +{ + "epochId": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "entriesList": [ + { + "address": "inj1...", + "pnl": 50000 + } + ], + "snapshotBlock": "1000000", + "updatedAt": 1633360000, + "epochId": 1 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getLeaderboardEpochsTemplate = ` +Extract the following details for leaderboard epochs: +- **limit** (number): Optional number of records +- **toEpochId** (number): Optional end epoch ID +- **fromEpochId** (number): Optional start epoch ID + +Request format: + +\`\`\`json +{ + "limit": 10, + "toEpochId": 10, + "fromEpochId": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "epochs": [ + { + "epochId": 1, + "startAt": 1633360000, + "endAt": 1640995200, + "isLive": true + } + ], + "pagination": { + "total": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTransferHistoryTemplate = ` +Extract the following details for transfer history: +- **vault** (string): Optional vault address +- **account** (string): Optional account address +- **limit** (number): Optional number of records +- **toNumber** (number): Optional end number +- **fromNumber** (number): Optional start number + +Request format: + +\`\`\`json +{ + "vault": "inj1...", + "account": "inj1...", + "limit": 10, + "toNumber": 100, + "fromNumber": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "transfers": [ + { + "lpAmount": "1000000", + "coins": [ + { + "denom": "inj", + "amount": "1000000" + } + ], + "usdValue": "1000000", + "isDeposit": true, + "executedAt": 1633360000, + "account": "inj1...", + "vault": "inj1...", + "txHash": "0x...", + "tidByVault": 1, + "tidByAccount": 1 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getStakingPoolsTemplate = ` +Extract the following details for staking pools: +- **staker** (string): Optional staker address +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "staker": "inj1...", + "stakingContractAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "pools": [ + { + "vaultName": "Example Vault", + "vaultAddress": "inj1...", + "stakeDenom": "inj", + "gauges": [ + { + "id": "1", + "owner": "inj1...", + "startTimestamp": 1633360000, + "endTimestamp": 1640995200, + "rewardTokens": [ + { + "denom": "inj", + "amount": "1000000" + } + ], + "lastDistribution": 1633360000, + "status": "active" + } + ], + "apr": 15.2, + "totalLiquidity": 1000000, + "stakingAddress": "inj1...", + "aprBreakdown": { + "inj": 15.2 + } + } + ], + "pagination": { + "total": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getStakingHistoryTemplate = ` +Extract the following details for staking history: +- **staker** (string): Optional staker address +- **toNumber** (number): Optional end number +- **limit** (number): Optional number of records +- **fromNumber** (number): Optional start number + +Request format: + +\`\`\`json +{ + "staker": "inj1...", + "toNumber": 100, + "limit": 10, + "fromNumber": 1 +} +\`\`\` + +Response format: + +\`\`\`json +{ + "activities": [ + { + "action": "stake", + "txHash": "0x...", + "staker": "inj1...", + "vaultAddress": "inj1...", + "numberByAccount": 1, + "timestamp": 1633360000, + "rewardedTokens": [ + { + "denom": "inj", + "amount": "1000000" + } + ], + "stakeAmount": { + "denom": "inj", + "amount": "1000000" + } + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getStakingRewardsByAccountTemplate = ` +Extract the following details for staking rewards: +- **staker** (string): Staker address +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "staker": "inj1...", + "stakingContractAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "rewards": [ + { + "apr": 15.2, + "vaultName": "Example Vault", + "vaultAddress": "inj1...", + "lockTimestamp": 1633360000, + "claimableRewards": [ + { + "denom": "inj", + "amount": "1000000" + } + ], + "stakedAmount": { + "denom": "inj", + "amount": "1000000" + }, + "lockedAmount": { + "denom": "inj", + "amount": "1000000" + } + } + ], + "pagination": { + "total": 10 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getMissionsTemplate = ` +Extract the following details for retrieving missions: +- **accountAddress** (string): Account address + +Request format: + +\`\`\`json +{ + "accountAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "missions": [ + { + "id": "mission1", + "points": "100", + "completed": true, + "accruedPoints": "50", + "updatedAt": 1633360000, + "progress": 0.5, + "expected": 100 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getMissionLeaderboardTemplate = ` +Extract the following details for mission leaderboard: +- **userAddress** (string): Optional user address + +Request format: + +\`\`\`json +{ + "userAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "entries": [ + { + "address": "inj1...", + "accruedPoints": "100" + } + ], + "updatedAt": 1633360000, + "rank": "1" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOTemplate = ` +Extract the following details for IDO information: +- **contractAddress** (string): Contract address +- **accountAddress** (string): Optional account address + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "accountAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "ido": { + "startTime": 1633360000, + "endTime": 1640995200, + "owner": "inj1...", + "status": "active", + "tokenInfo": { + "denom": "inj", + "supply": "1000000", + "symbol": "INJ", + "decimal": 18, + "logoUrl": "https://example.com/logo.png" + }, + "capPerAddress": "1000000", + "contractAddress": "inj1...", + "subscribedAmount": "500000", + "projectTokenAmount": "1000000", + "targetAmountInQuoteDenom": "1000000", + "secondBeforeStartToSetQuotePrice": 3600, + "targetAmountInUsd": "1000000", + "tokenPrice": 1.0, + "isAccountWhiteListed": true, + "isLaunchWithVault": true, + "isVestingScheduleEnabled": true, + "name": "Example IDO", + "progress": [ + { + "status": "active", + "timestamp": 1633360000 + } + ], + "quoteDenom": "inj", + "stakeToSubscription": [ + { + "stakedAmount": "1000000", + "subscribableAmount": "500000" + } + ], + "useWhitelist": true, + "marketId": "0x...", + "vaultAddress": "inj1..." + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOsTemplate = ` +Extract the following details for retrieving IDOs: +- **status** (string): Optional status filter +- **limit** (number): Optional number of records +- **toNumber** (number): Optional end number +- **accountAddress** (string): Optional account address +- **ownerAddress** (string): Optional owner address + +Request format: + +\`\`\`json +{ + "status": "active", + "limit": 10, + "toNumber": 100, + "accountAddress": "inj1...", + "ownerAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "idos": [ + { + "startTime": 1633360000, + "endTime": 1640995200, + "owner": "inj1...", + "status": "active", + "contractAddress": "inj1...", + "name": "Example IDO" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOSubscribersTemplate = ` +Extract the following details for IDO subscribers: +- **skip** (number): Optional skip count +- **limit** (number): Optional number of records +- **sortBy** (string): Optional sort field +- **contractAddress** (string): Contract address + +Request format: + +\`\`\`json +{ + "skip": 0, + "limit": 10, + "sortBy": "subscribedAmount", + "contractAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "marketId": "0x...", + "quoteDenom": "inj", + "subscribers": [ + { + "address": "inj1...", + "subscribedCoin": { + "denom": "inj", + "amount": "1000000" + }, + "lastSubscribeTime": 1633360000, + "estimateTokenReceived": { + "denom": "token", + "amount": "500000" + }, + "createdAt": 1633360000 + } + ], + "pagination": { + "total": 100 + }, + "tokenInfo": { + "denom": "inj", + "supply": "1000000", + "symbol": "INJ", + "decimal": 18, + "logoUrl": "https://example.com/logo.png" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOSubscriptionTemplate = ` +Extract the following details for IDO subscription: +- **contractAddress** (string): Contract address +- **accountAddress** (string): Account address + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "accountAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "subscription": { + "maxSubscriptionCoin": { + "denom": "inj", + "amount": "1000000" + }, + "committedAmount": "500000", + "price": 1.0, + "claimableCoins": [ + { + "denom": "token", + "amount": "500000" + } + ], + "rewardClaimed": false, + "tokenInfo": { + "denom": "inj", + "supply": "1000000", + "symbol": "INJ", + "decimal": 18, + "logoUrl": "https://example.com/logo.png" + }, + "quoteDenom": "inj", + "updatedAt": 1633360000, + "stakedAmount": "1000000", + "marketId": "0x..." + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOActivitiesTemplate = ` +Extract the following details for IDO activities: +- **contractAddress** (string): Optional contract address +- **accountAddress** (string): Optional account address +- **limit** (number): Optional number of records +- **toNumber** (string): Optional end number + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "accountAddress": "inj1...", + "limit": 10, + "toNumber": "100" +} +\`\`\` + +Response format: + +\`\`\`json +{ + "activities": [ + { + "address": "inj1...", + "subscribedCoin": { + "denom": "inj", + "amount": "1000000" + }, + "usdValue": 1000000, + "timestamp": 1633360000, + "txHash": "0x..." + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getIDOWhitelistTemplate = ` +Extract the following details for IDO whitelist: +- **skip** (number): Optional skip count +- **limit** (number): Optional number of records +- **idoAddress** (string): IDO address + +Request format: + +\`\`\`json +{ + "skip": 0, + "limit": 10, + "idoAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "idoAddress": "inj1...", + "accounts": [ + { + "accountAddress": "inj1...", + "updatedAt": 1633360000, + "weight": "1.0" + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getClaimReferencesTemplate = ` +Extract the following details for claim references: +- **skip** (number): Optional skip count +- **limit** (number): Optional number of records +- **idoAddress** (string): IDO address +- **accountAddress** (string): Account address + +Request format: + +\`\`\`json +{ + "skip": 0, + "limit": 10, + "idoAddress": "inj1...", + "accountAddress": "inj1..." +} +\`\`\` + +Response format: + +\`\`\`json +{ + "claimReferences": [ + { + "denom": "inj", + "updatedAt": 1633360000, + "claimedAmount": "500000", + "claimableAmount": "1000000", + "accountAddress": "inj1...", + "cwContractAddress": "inj1...", + "idoContractAddress": "inj1...", + "startVestingTime": 1633360000, + "vestingDurationSeconds": 2592000 + } + ], + "pagination": { + "total": 100 + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +//Mito txs +export const getLaunchpadSubscribeTemplate = ` +Extract the following details for launchpad subscription: +- **amount** (number): Amount to subscribe +- **quoteTokenDenom** (string): Quote token denomination +- **quoteTokenDecimals** (number): Quote token decimals +- **contractAddress** (string): Contract address + +Request format: + +\`\`\`json +{ + "amount": 1000, + "quoteTokenDenom": "inj", + "quoteTokenDecimals": 18, + "contractAddress": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSubscribeVaultTemplate = ` +Extract the following details for vault subscription: +- **market** (object): Market details including base/quote denominations and decimals +- **baseAmount** (number): Base token amount +- **quoteAmount** (number): Quote token amount +- **subscriptionType** (string): Type of subscription (BaseOnly, QuoteOnly, etc.) +- **vaultDetails** (object): Vault details including subaccount ID and master address +- **slippage** (object): Optional slippage configuration + +Request format: + +\`\`\`json +{ + "market": { + "baseDenom": "inj", + "baseDecimals": 18, + "quoteDecimals": 6, + "quoteDenom": "usdt" + }, + "baseAmount": 1.5, + "quoteAmount": 1000, + "subscriptionType": "BaseOnly", + "vaultDetails": { + "vaultSubaccountId": "0x...", + "vaultMasterAddress": "inj1...", + "vaultType": "crates.io:vault-cpmm-spot" + }, + "slippage": { + "max_penalty": "0.1" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getInstantiateCPMMVaultTemplate = ` +Extract the following details for instantiating a CPMM vault: +- **MITO_MASTER_CONTRACT_ADDRESS** (string): Mito master contract address +- **CPMM_CONTRACT_CODE** (number): CPMM contract code +- **senderWalletAddress** (string): Sender's wallet address +- **marketId** (string): Market ID +- **feeBps** (number): Fee in basis points +- **baseDecimals** (number): Base token decimals +- **quoteDecimals** (number): Quote token decimals +- **funds** (array): Array of fund objects with denom and amount +- **notionalValueCap** (string): Optional notional value cap +- **pricingStrategy** (object): Optional pricing strategy configuration +- **maxInvariantSensitivityBps** (string): Optional max invariant sensitivity in basis points +- **maxPriceSensitivityBps** (string): Optional max price sensitivity in basis points +- **orderType** (string): Optional order type + +Request format: + +\`\`\`json +{ + "MITO_MASTER_CONTRACT_ADDRESS": "inj1...", + "CPMM_CONTRACT_CODE": 123, + "senderWalletAddress": "inj1...", + "marketId": "0x...", + "feeBps": 30, + "baseDecimals": 18, + "quoteDecimals": 6, + "funds": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ], + "notionalValueCap": "1000000", + "pricingStrategy": { + "SmoothingPricingWithRelativePriceRange": { + "bid_range": "0.01", + "ask_range": "0.01" + } + }, + "maxInvariantSensitivityBps": "100", + "maxPriceSensitivityBps": "100", + "orderType": "LIMIT" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; +export const getLaunchpadClaimTemplate = ` +Extract the following details for claiming launchpad tokens: +- **contractAddress** (string): Contract address of the launchpad + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; +export const getVaultSubscribeTemplate = ` +Extract the following details for subscribing to a vault: +- **vaultType** (string): Type of vault contract +- **slippage** (object): Optional slippage configuration +- **vaultSubaccountId** (string): Vault subaccount ID +- **baseAmount** (number): Base token amount +- **quoteAmount** (number): Quote token amount +- **market** (object): Market details including base/quote denominations and decimals +- **subscriptionType** (string): Type of subscription +- **masterAddress** (string): Master contract address + +Request format: + +\`\`\`json +{ + "vaultType": "crates.io:vault-cpmm-spot", + "slippage": { + "max_penalty": "0.1" + }, + "vaultSubaccountId": "0x...", + "baseAmount": 1.5, + "quoteAmount": 1000, + "market": { + "baseDenom": "inj", + "baseDecimals": 18, + "quoteDenom": "usdt", + "quoteDecimals": 6 + }, + "subscriptionType": "BaseOnly", + "masterAddress": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getRedeemFromVaultTemplate = ` +Extract the following details for redeeming from a vault: +- **vaultSubaccountId** (string): Vault subaccount ID +- **redeemAmount** (number): Amount to redeem +- **vaultBaseDecimals** (number): Vault base token decimals +- **masterAddress** (string): Master contract address +- **vaultLpDenom** (string): LP token denom +- **marketType** (string): Market type (Spot or Derivative) +- **redemptionType** (string): Type of redemption +- **slippage** (object): Optional slippage configuration + +Request format: + +\`\`\`json +{ + "vaultSubaccountId": "0x...", + "redeemAmount": 0.01, + "vaultBaseDecimals": 18, + "masterAddress": "inj1...", + "vaultLpDenom": "factory/...", + "marketType": "Spot", + "redemptionType": "BaseOnly", + "slippage": { + "max_penalty": "0.1" + } +} +\`\`\` +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getStakeVaultLPTemplate = ` +Extract the following details for staking vault LP tokens: +- **amount** (number): Amount to stake +- **vaultLpDenom** (string): LP token denom +- **vaultTokenDecimals** (number): Token decimals +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "amount": 0.01, + "vaultLpDenom": "factory/...", + "vaultTokenDecimals": 18, + "stakingContractAddress": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getUnstakeVaultLPTemplate = ` +Extract the following details for unstaking vault LP tokens: +- **amount** (number): Amount to unstake +- **vaultLpDenom** (string): LP token denom +- **vaultTokenDecimals** (number): Token decimals +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "amount": 0.01, + "vaultLpDenom": "factory/...", + "vaultTokenDecimals": 18, + "stakingContractAddress": "inj1..." +} +\`\`\` + +Response format: +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getClaimVaultRewardsTemplate = ` +Extract the following details for claiming vault rewards: +- **vaultLpDenom** (string): LP token denom +- **stakingContractAddress** (string): Staking contract address + +Request format: + +\`\`\`json +{ + "vaultLpDenom": "factory/...", + "stakingContractAddress": "inj1..." +} +\`\`\` +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/peggy.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/peggy.ts new file mode 100644 index 000000000000..b19332be21ba --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/peggy.ts @@ -0,0 +1,99 @@ +// Peggy Module Templates + +export const getPeggyModuleParamsTemplate = ` +Extract the Peggy module parameters. + +Response will contain the following parameters: +- **bridgeParams** (object): Bridge parameters containing: + - **bridgeChainId** (string): Chain ID for the bridge + - **peggyId** (string): Unique identifier for the Peggy bridge + - **signedValsetsWindow** (string): Window for signed validator sets + - **signedBatchesWindow** (string): Window for signed batches + - **signedClaimsWindow** (string): Window for signed claims + - **targetBatchTimeout** (string): Target timeout for batches + - **averageBlockTime** (string): Average block time + - **averageEthereumBlockTime** (string): Average Ethereum block time + - **slashFractionValset** (string): Slash fraction for validator sets + - **slashFractionBatch** (string): Slash fraction for batches + - **slashFractionClaim** (string): Slash fraction for claims + - **slashFractionConflictingClaim** (string): Slash fraction for conflicting claims + - **unbondSlashingValsetsWindow** (string): Unbond slashing window for validator sets + - **bridgeContractAddress** (string): Ethereum bridge contract address + - **bridgeActive** (boolean): Whether the bridge is active + - **oracles** (string[]): List of oracle addresses + +Response format: + +\`\`\`json +{ + "bridgeParams": { + "bridgeChainId": "1", + "peggyId": "peggy1", + "signedValsetsWindow": "10000", + "signedBatchesWindow": "10000", + "signedClaimsWindow": "10000", + "targetBatchTimeout": "43200000", + "averageBlockTime": "5000", + "averageEthereumBlockTime": "15000", + "slashFractionValset": "0.001", + "slashFractionBatch": "0.001", + "slashFractionClaim": "0.001", + "slashFractionConflictingClaim": "0.001", + "unbondSlashingValsetsWindow": "10000", + "bridgeContractAddress": "0x...", + "bridgeActive": true, + "oracles": [ + "0x..." + ] + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSendToEthTemplate = ` +Extract the following details for sending tokens to Ethereum: +- **amount** (object): Token amount containing: + - **denom** (string): Token denomination + - **amount** (string): Token amount +- **bridgeFee** (object): Bridge fee containing: + - **denom** (string): Fee denomination + - **amount** (string): Fee amount +- **ethDest** (string): Destination Ethereum address + +Ensure that: +1. Amount is positive and properly formatted +2. Bridge fee is sufficient for the transfer +3. Ethereum destination address is valid +4. Token denomination is supported by the bridge + +Request format: + +\`\`\`json +{ + "amount": { + "denom": "inj", + "amount": "1000000000000000000" + }, + "bridgeFee": { + "denom": "inj", + "amount": "1000000000000000" + }, + "ethDest": "0x..." +} +\`\`\` + +Success response format: + +\`\`\`json +{ + "txHash": "0x...", + "success": true +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/permissions.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/permissions.ts new file mode 100644 index 000000000000..5edf158efd59 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/permissions.ts @@ -0,0 +1,221 @@ +// Permission Module Templates + +export const getAddressesByRoleTemplate = ` +Extract the following details for fetching addresses by role: +- **denom** (string): Token denomination +- **role** (string): Role identifier + +Request format: + +\`\`\`json +{ + "denom": "peggy0x...", + "role": "minter" +} +\`\`\` + +Response will contain an array of addresses: +- **addresses** (array): List of addresses associated with the role + +Response format: + +\`\`\`json +{ + "addresses": [ + "inj1...", + "inj2..." + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAddressRolesTemplate = ` +Extract the following details for fetching roles by address: +- **address** (string): Account address +- **denom** (string): Token denomination + +Request format: + +\`\`\`json +{ + "address": "inj1...", + "denom": "peggy0x..." +} +\`\`\` + +Response will contain an array of roles: +- **roles** (array): List of roles associated with the address + +Response format: + +\`\`\`json +{ + "roles": [ + "minter", + "burner" + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getAllNamespacesTemplate = ` +Request to fetch all namespaces. No parameters required. + +Response will contain an array of namespace objects: +- **namespaces** (array): List of namespaces containing: + - **denom** (string): Token denomination + - **wasmHook** (string): WASM hook address + - **mintsPaused** (boolean): Minting pause status + - **sendsPaused** (boolean): Sending pause status + - **burnsPaused** (boolean): Burning pause status + - **rolePermissions** (array): List of role permissions + - **addressRoles** (array): List of address roles + +Response format: + +\`\`\`json +{ + "namespaces": [ + { + "denom": "peggy0x...", + "wasmHook": "inj1...", + "mintsPaused": false, + "sendsPaused": false, + "burnsPaused": false, + "rolePermissions": [ + { + "role": "minter", + "permissions": 1 + } + ], + "addressRoles": [ + { + "address": "inj1...", + "roles": ["minter"] + } + ] + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPermissionsModuleParamsTemplate = ` +Request to fetch permission module parameters. No parameters required. + +Response will contain module parameters: +- **wasmHookQueryMaxGas** (string): Maximum gas for WASM hook queries + +Response format: + +\`\`\`json +{ + "wasmHookQueryMaxGas": "1000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getNamespaceByDenomTemplate = ` +Extract the following details for fetching namespace by denomination: +- **denom** (string): Token denomination +- **includeRoles** (boolean): Whether to include role information + +Request format: + +\`\`\`json +{ + "denom": "peggy0x...", + "includeRoles": true +} +\`\`\` + +Response will contain namespace details: +- **namespace** (object): Namespace information containing: + - **denom** (string): Token denomination + - **wasmHook** (string): WASM hook address + - **mintsPaused** (boolean): Minting pause status + - **sendsPaused** (boolean): Sending pause status + - **burnsPaused** (boolean): Burning pause status + - **rolePermissions** (array): Optional list of role permissions if includeRoles is true + - **addressRoles** (array): Optional list of address roles if includeRoles is true + +Response format: + +\`\`\`json +{ + "namespace": { + "denom": "peggy0x...", + "wasmHook": "inj1...", + "mintsPaused": false, + "sendsPaused": false, + "burnsPaused": false, + "rolePermissions": [ + { + "role": "minter", + "permissions": 1 + } + ], + "addressRoles": [ + { + "address": "inj1...", + "roles": ["minter"] + } + ] + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getVouchersForAddressTemplate = ` +Extract the following details for fetching vouchers by address: +- **address** (string): Account address + +Request format: + +\`\`\`json +{ + "address": "inj1..." +} +\`\`\` + +Response will contain array of vouchers: +- **vouchers** (array): List of voucher objects containing: + - **coins** (array): List of coin objects containing: + - **amount** (string): Token amount + - **denom** (string): Token denomination + +Response format: + +\`\`\`json +{ + "vouchers": [ + { + "coins": [ + { + "amount": "1000000000000000000", + "denom": "peggy0x..." + } + ] + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/staking.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/staking.ts new file mode 100644 index 000000000000..d7f4f1e11bac --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/staking.ts @@ -0,0 +1,664 @@ +// Staking Module Templates Aligned with Actions + +export const getStakingModuleParamsTemplate = ` +Request to fetch staking module parameters. No parameters required. + +Response will contain module parameters: +- **unbondingTime** (number): Time in seconds for unbonding period +- **maxValidators** (number): Maximum number of validators +- **maxEntries** (number): Maximum entries for unbonding delegation +- **historicalEntries** (number): Number of historical entries to persist +- **bondDenom** (string): Native token denomination for staking + +Response format: + +\`\`\`json +{ + "unbondingTime": 1209600, + "maxValidators": 100, + "maxEntries": 7, + "historicalEntries": 10000, + "bondDenom": "inj" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getPoolTemplate = ` +Request to fetch staking pool information. No parameters required. + +Response will contain pool details: +- **notBondedTokens** (string): Amount of tokens not bonded +- **bondedTokens** (string): Amount of tokens bonded + +Response format: + +\`\`\`json +{ + "notBondedTokens": "1000000000000000000", + "bondedTokens": "5000000000000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorsTemplate = ` +Extract the following details for fetching validators: +- **pagination** (object): Optional pagination parameters + - **key** (string): Page key + - **offset** (number): Page offset + - **limit** (number): Page size + - **countTotal** (boolean): Whether to count total + +Request format: + +\`\`\`json +{ + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain validator list and pagination details. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorTemplate = ` +Extract the following details for fetching a specific validator: +- **address** (string): Validator operator address + +Request format: + +\`\`\`json +{ + "address": "injvaloper1..." +} +\`\`\` + +Response will contain validator details including description, commission rates, and delegation information. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorDelegationsTemplate = ` +Extract the following details for fetching validator delegations: +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of delegations to this validator. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorDelegationsNoThrowTemplate = ` +Extract the following details for fetching validator delegations (safe version): +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of delegations to this validator. This version handles errors gracefully. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorUnbondingDelegationsTemplate = ` +Extract the following details for fetching validator unbonding delegations: +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of unbonding delegations from this validator. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getValidatorUnbondingDelegationsNoThrowTemplate = ` +Extract the following details for fetching validator unbonding delegations (safe version): +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of unbonding delegations from this validator. This version handles errors gracefully. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegationsTemplate = ` +Extract the following details for fetching all delegations: +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of all delegations for this address. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegationsNoThrowTemplate = ` +Extract the following details for fetching all delegations (safe version): +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of all delegations for this address. This version handles errors gracefully. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getUnbondingDelegationsTemplate = ` +Extract the following details for fetching unbonding delegations: +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of unbonding delegations for this address. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getReDelegationsTemplate = ` +Extract the following details for fetching redelegations: +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of redelegations for this address. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateValidatorTemplate = ` +Extract the following details for creating a validator: +- **moniker** (string): Validator name +- **identity** (string): Optional identity string (e.g., Keybase) +- **website** (string): Optional website URL +- **securityContact** (string): Optional security contact +- **details** (string): Optional validator details +- **rate** (string): Commission rate (e.g., "0.100000000000000000") +- **maxRate** (string): Maximum commission rate +- **maxChangeRate** (string): Maximum commission change rate +- **minSelfDelegation** (string): Minimum self-delegation amount +- **delegatorAddress** (string): Delegator address +- **validatorAddress** (string): Validator address +- **pubkey** (string): Validator public key +- **value** (object): Initial self-delegation + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "description": { + "moniker": "Validator Name", + "identity": "keybase-id", + "website": "https://validator.com", + "securityContact": "security@validator.com", + "details": "Validator details" + }, + "commission": { + "rate": "0.100000000000000000", + "maxRate": "0.200000000000000000", + "maxChangeRate": "0.010000000000000000" + }, + "minSelfDelegation": "1000000000000000000", + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "pubkey": "injvalconspub1...", + "value": { + "denom": "inj", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgEditValidatorTemplate = ` +Extract the following details for editing a validator: +- **description** (object): Updated validator description + - **moniker** (string): Optional new validator name + - **identity** (string): Optional new identity string + - **website** (string): Optional new website URL + - **securityContact** (string): Optional new security contact + - **details** (string): Optional new validator details +- **validatorAddress** (string): Validator address +- **commissionRate** (string): Optional new commission rate +- **minSelfDelegation** (string): Optional new minimum self-delegation amount + +Request format: + +\`\`\`json +{ + "description": { + "moniker": "New Validator Name", + "identity": "new-keybase-id", + "website": "https://new-website.com", + "securityContact": "new-security@validator.com", + "details": "Updated validator details" + }, + "validatorAddress": "injvaloper1...", + "commissionRate": "0.150000000000000000", + "minSelfDelegation": "2000000000000000000" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgDelegateTemplate = ` +Extract the following details for delegating tokens: +- **delegatorAddress** (string): Delegator address +- **validatorAddress** (string): Validator address +- **amount** (object): Delegation amount + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "amount": { + "denom": "inj", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBeginRedelegateTemplate = ` +Extract the following details for beginning a redelegation: +- **delegatorAddress** (string): Delegator address +- **validatorSrcAddress** (string): Source validator address +- **validatorDstAddress** (string): Destination validator address +- **amount** (object): Amount to redelegate + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorSrcAddress": "injvaloper1...", + "validatorDstAddress": "injvaloper2...", + "amount": { + "denom": "inj", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Staking Module Templates - Part 2 (Message Templates Continued) + +export const msgUndelegateTemplate = ` +Extract the following details for undelegating tokens: +- **delegatorAddress** (string): Delegator address +- **validatorAddress** (string): Validator address +- **amount** (object): Amount to undelegate + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "amount": { + "denom": "inj", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCancelUnbondingDelegationTemplate = ` +Extract the following details for canceling an unbonding delegation: +- **delegatorAddress** (string): Delegator address +- **validatorAddress** (string): Validator address +- **amount** (object): Amount to cancel unbonding + - **denom** (string): Token denomination + - **amount** (string): Token amount +- **creationHeight** (number): Original unbonding creation height + +Request format: + +\`\`\`json +{ + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "amount": { + "denom": "inj", + "amount": "1000000000000000000" + }, + "creationHeight": 1000000 +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegationTemplate = ` +Extract the following details for fetching a specific delegation: +- **injectiveAddress** (string): Delegator address +- **validatorAddress** (string): Validator address + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "validatorAddress": "injvaloper1..." +} +\`\`\` + +Response will contain delegation details: +- **delegation** (object): Delegation information + - **delegatorAddress** (string): Delegator address + - **validatorAddress** (string): Validator address + - **shares** (string): Delegation shares +- **balance** (object): Balance information + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Response format: + +\`\`\`json +{ + "delegation": { + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "shares": "1000000000000000000" + }, + "balance": { + "denom": "inj", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDelegatorsTemplate = ` +Extract the following details for fetching all delegators of a validator: +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + - **key** (string): Page key + - **offset** (number): Page offset + - **limit** (number): Page size + - **countTotal** (boolean): Whether to count total + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain delegations and pagination: +- **delegations** (array): List of delegations +- **pagination** (object): Pagination information + - **nextKey** (string): Next page key + - **total** (string): Total count if requested + +Response format: + +\`\`\`json +{ + "delegations": [ + { + "delegation": { + "delegatorAddress": "inj1...", + "validatorAddress": "injvaloper1...", + "shares": "1000000000000000000" + }, + "balance": { + "denom": "inj", + "amount": "1000000000000000000" + } + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "50" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Template for NoThrow versions (handling errors gracefully) +export const getDelegatorsNoThrowTemplate = ` +Extract the following details for fetching all delegators (safe version): +- **validatorAddress** (string): Validator address +- **pagination** (object): Optional pagination parameters + - **key** (string): Page key + - **offset** (number): Page offset + - **limit** (number): Page size + - **countTotal** (boolean): Whether to count total + +Request format: + +\`\`\`json +{ + "validatorAddress": "injvaloper1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain delegations and pagination (same format as getDelegatorsTemplate). +This version handles errors gracefully and won't throw exceptions. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Additional NoThrow templates for other endpoints +export const getUnbondingDelegationsNoThrowTemplate = ` +Extract the following details for fetching unbonding delegations (safe version): +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of unbonding delegations. +This version handles errors gracefully and won't throw exceptions. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getReDelegationsNoThrowTemplate = ` +Extract the following details for fetching redelegations (safe version): +- **injectiveAddress** (string): Delegator address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "injectiveAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of redelegations. +This version handles errors gracefully and won't throw exceptions. + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/token-factory.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/token-factory.ts new file mode 100644 index 000000000000..1f9679f6a089 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/token-factory.ts @@ -0,0 +1,227 @@ +// Token Factory Module Templates + +export const getDenomsFromCreatorTemplate = ` +Extract the following details for fetching denominations from creator: +- **creator** (string): Creator's address + +Request format: + +\`\`\`json +{ + "creator": "inj1..." +} +\`\`\` + +Response will contain an array of denominations: +- **denoms** (array): List of denomination strings + +Response format: + +\`\`\`json +{ + "denoms": [ + "factory/inj1.../token1", + "factory/inj1.../token2" + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getDenomAuthorityMetadataTemplate = ` +Extract the following details for fetching denomination authority metadata: +- **creator** (string): Creator's address +- **subDenom** (string): Sub-denomination identifier + +Request format: + +\`\`\`json +{ + "creator": "inj1...", + "subDenom": "token1" +} +\`\`\` + +Response will contain authority metadata: +- **authorityMetadata** (object): Authority metadata information + - **admin** (string): Admin address (can be undefined) + +Response format: + +\`\`\`json +{ + "authorityMetadata": { + "admin": "inj1..." + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTokenFactoryModuleParamsTemplate = ` +Request to fetch token factory module parameters. No parameters required. + +Response will contain module parameters: +- **denomCreationFee** (array): Array of creation fee coins + - **denom** (string): Token denomination + - **amount** (string): Fee amount + +Response format: + +\`\`\`json +{ + "denomCreationFee": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getTokenFactoryModuleStateTemplate = ` +Request to fetch token factory module state. No parameters required. + +Response will contain module state: +- **denomCreationFee** (array): Array of creation fee coins + - **denom** (string): Token denomination + - **amount** (string): Fee amount +- **factoryDenoms** (array): List of factory denominations with metadata + - **denom** (string): Full denomination string + - **authorityMetadata** (object): Authority metadata + - **admin** (string): Admin address + +Response format: + +\`\`\`json +{ + "denomCreationFee": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ], + "factoryDenoms": [ + { + "denom": "factory/inj1.../token1", + "authorityMetadata": { + "admin": "inj1..." + } + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgBurnTemplate = ` +Extract the following details for burning tokens: +- **amount** (object): Amount to burn + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "amount": { + "denom": "factory/inj1.../token1", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgChangeAdminTemplate = ` +Extract the following details for changing token admin: +- **denom** (string): Token denomination +- **newAdmin** (string): New admin address + +Request format: + +\`\`\`json +{ + "denom": "factory/inj1.../token1", + "newAdmin": "inj1..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgCreateDenomTemplate = ` +Extract the following details for creating a new denomination: +- **subDenom** (string): Sub-denomination identifier + +Request format: + +\`\`\`json +{ + "subDenom": "token1" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgMintTemplate = ` +Extract the following details for minting tokens: +- **totalAmount** (object): Amount to mint + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "totalAmount": { + "denom": "factory/inj1.../token1", + "amount": "1000000000000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgSetDenomMetadataTemplate = ` +Extract the following details for setting denomination metadata: +- **description** (string): Token description +- **denom** (string): Token denomination +- **name** (string): Token name +- **symbol** (string): Token symbol +- **uri** (string): Project URI +- **uriHash** (string): URI hash + +Request format: + +\`\`\`json +{ + "description": "Example Token", + "denom": "factory/inj1.../token1", + "name": "Example Token", + "symbol": "EXT", + "uri": "https://example.com", + "uriHash": "hash123" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/template/wasm.ts b/packages/plugin-injective/injective-sdk-client-ts/src/template/wasm.ts new file mode 100644 index 000000000000..99e882a0e4e6 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/template/wasm.ts @@ -0,0 +1,848 @@ +// WASM and WasmX Module Templates + +// WasmX Module Templates + +export const getWasmxModuleParamsTemplate = ` +Request to fetch WasmX module parameters. No parameters required. + +Response will contain module parameters as per the WasmX params structure: +- **params** (object): Module parameters and settings + +Response format: + +\`\`\`json +{ + "params": { + "is_execution_enabled": true, + "registration_fee": { + "denom": "inj", + "amount": "100000000000000000000" + }, + "max_begin_block_tx_gas": 1000000, + "max_contract_gas_limit": 500000, + "min_gas_price": "1000000000" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getWasmxModuleStateTemplate = ` +Request to fetch WasmX module state. No parameters required. + +Response will contain the complete module state: +- **params** (object): Module parameters +- **registered_contracts** (array): List of registered contracts + - **address** (string): Contract address + - **gas_limit** (number): Gas limit + - **gas_price** (string): Gas price + - **is_executable** (boolean): Execution status + - **code_id** (number): Contract code ID + +Response format: + +\`\`\`json +{ + "params": { + "is_execution_enabled": true, + "registration_fee": { + "denom": "inj", + "amount": "100000000000000000000" + }, + "max_begin_block_tx_gas": 1000000, + "max_contract_gas_limit": 500000, + "min_gas_price": "1000000000" + }, + "registered_contracts": [ + { + "address": "inj1...", + "gas_limit": 1000000, + "gas_price": "1000000000", + "is_executable": true, + "code_id": 1 + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Standard WASM Module Templates + +export const getContractAccountsBalanceTemplate = ` +Extract the following details for fetching contract accounts balance: +- **contractAddress** (string): Contract address +- **pagination** (object): Optional pagination parameters + - **key** (string): Page key + - **offset** (number): Page offset + - **limit** (number): Page size + - **countTotal** (boolean): Whether to count total + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain contract balances and information: +- **tokenInfo** (object): Token information + - **name** (string): Token name + - **symbol** (string): Token symbol + - **decimals** (number): Token decimals + - **total_supply** (string): Total supply + - **mint** (string): Mint address +- **contractInfo** (object): Contract information + - **codeId** (number): Code ID + - **creator** (string): Creator address + - **admin** (string): Admin address + - **label** (string): Contract label +- **marketingInfo** (object): Marketing information + - **project** (string): Project name + - **description** (string): Project description + - **logo** (object): Logo information + - **url** (string): Logo URL + - **marketing** (string): Marketing info +- **contractAccountsBalance** (array): List of account balances + - **account** (string): Account address + - **balance** (string): Account balance + +Response format: + +\`\`\`json +{ + "tokenInfo": { + "name": "Example Token", + "symbol": "EXT", + "decimals": 18, + "total_supply": "1000000000000000000000000", + "mint": "inj1..." + }, + "contractInfo": { + "codeId": 1, + "creator": "inj1...", + "admin": "inj1...", + "label": "Example Contract" + }, + "marketingInfo": { + "project": "Example Project", + "description": "Example Description", + "logo": { + "url": "https://example.com/logo.png" + }, + "marketing": "Example Marketing Info" + }, + "contractAccountsBalance": [ + { + "account": "inj1...", + "balance": "1000000000000000000" + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "100" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractStateTemplate = ` +Extract the following details for fetching contract state: +- **contractAddress** (string): Contract address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain contract state with same structure as getContractAccountsBalanceTemplate. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractInfoTemplate = ` +Extract the following details for fetching contract information: +- **contractAddress** (string): Contract address + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1..." +} +\`\`\` + +Response will contain contract information: +- **codeId** (number): Code ID +- **creator** (string): Creator address +- **admin** (string): Admin address +- **label** (string): Contract label +- **created** (object): Creation information + - **blockHeight** (number): Block height + - **txIndex** (number): Transaction index +- **ibcPortId** (string): IBC port ID +- **extension** (object): Optional extension data + +Response format: + +\`\`\`json +{ + "codeId": 1, + "creator": "inj1...", + "admin": "inj1...", + "label": "Example Contract", + "created": { + "blockHeight": 1000000, + "txIndex": 0 + }, + "ibcPortId": "wasm.1", + "extension": { + "typeUrl": "example", + "value": "base64encodeddata" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractHistoryTemplate = ` +Extract the following details for fetching contract history: +- **contractAddress** (string): Contract address + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1..." +} +\`\`\` + +Response will contain contract history: +- **entriesList** (array): List of history entries + - **operation** (string): Operation type + - **codeId** (number): Code ID + - **updated** (object): Update information + - **blockHeight** (number): Block height + - **txIndex** (number): Transaction index + - **msg** (string): Operation message +- **pagination** (object): Pagination information + +Response format: + +\`\`\`json +{ + "entriesList": [ + { + "operation": "CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT", + "codeId": 1, + "updated": { + "blockHeight": 1000000, + "txIndex": 0 + }, + "msg": "base64encodeddata" + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "10" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getSmartContractStateTemplate = ` +Extract the following details for fetching smart contract state: +- **contractAddress** (string): Contract address +- **query** (string or object): Query parameters + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "query": { + "get_state": {} + } +} +\`\`\` + +Response will contain contract-specific state data. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getRawContractStateTemplate = ` +Extract the following details for fetching raw contract state: +- **contractAddress** (string): Contract address +- **query** (string): Query key + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "query": "base64encodedkey" +} +\`\`\` + +Response will contain raw contract state data. + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractCodesTemplate = ` +Extract the following details for fetching contract codes: +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of code information: +- **codeInfosList** (array): List of code information + - **codeId** (number): Code ID + - **creator** (string): Creator address + - **dataHash** (string): Code data hash +- **pagination** (object): Pagination information + +Response format: + +\`\`\`json +{ + "codeInfosList": [ + { + "codeId": 1, + "creator": "inj1...", + "dataHash": "base64encodeddata" + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "50" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractCodeTemplate = ` +Extract the following details for fetching contract code: +- **codeId** (number): Code ID + +Request format: + +\`\`\`json +{ + "codeId": 1 +} +\`\`\` + +Response will contain code information and data: +- **codeInfo** (object): Code information + - **codeId** (number): Code ID + - **creator** (string): Creator address + - **dataHash** (string): Code data hash +- **data** (string): Base64 encoded WASM bytecode + +Response format: + +\`\`\`json +{ + "codeInfo": { + "codeId": 1, + "creator": "inj1...", + "dataHash": "base64encodeddata" + }, + "data": "base64encodedwasmcode" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractCodeContractsTemplate = ` +Extract the following details for fetching contracts by code ID: +- **codeId** (number): Code ID +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "codeId": 1, + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain list of contracts: +- **contractsList** (array): List of contract addresses +- **pagination** (object): Pagination information + +Response format: + +\`\`\`json +{ + "contractsList": [ + "inj1...", + "inj2..." + ], + "pagination": { + "nextKey": "xyz789...", + "total": "20" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Message Templates + +export const msgStoreCodeTemplate = ` +Extract the following details for storing contract code: +- **sender** (string): Sender address +- **wasmByteCode** (string): Base64 encoded WASM bytecode +- **instantiatePermission** (object): Optional instantiation permission + - **permission** (string): Permission type + - **address** (string): Restricted address + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "wasmByteCode": "base64encodedwasmcode", + "instantiatePermission": { + "permission": "Everybody", + "address": "" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgUpdateAdminTemplate = ` +Extract the following details for updating contract admin: +- **sender** (string): Current admin address +- **newAdmin** (string): New admin address +- **contract** (string): Contract address + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "newAdmin": "inj2...", + "contract": "inj3..." +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgExecuteContractTemplate = ` +Extract the following details for executing contract: +- **sender** (string): Sender address +- **contract** (string): Contract address +- **msg** (string or object): Execute message +- **funds** (array): Optional funds to send + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "contract": "inj2...", + "msg": { + "execute": { + "action": "transfer", + "amount": "1000000000000000000", + "recipient": "inj3..." + } + }, + "funds": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgMigrateContractTemplate = ` +Extract the following details for migrating contract: +- **sender** (string): Admin address +- **contract** (string): Contract address +- **codeId** (number): New code ID +- **msg** (string or object): Migration message + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "contract": "inj2...", + "codeId": 2, + "msg": { + "migrate": { + "new_parameter": "value" + } + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgInstantiateContractTemplate = ` +Extract the following details for instantiating contract: +- **sender** (string): Sender address +- **admin** (string): Optional admin address +- **codeId** (number): Code ID to instantiate +- **label** (string): Contract label +- **msg** (object): Instantiation message +- **funds** (array): Optional funds to send + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "admin": "inj2...", + "codeId": 1, + "label": "Example Contract", + "msg": { + "name": "Example Token", + "symbol": "EXT", + "decimals": 18, + "initial_balances": [ + { + "address": "inj3...", + "amount": "1000000000000000000000000" + } + ] + }, + "funds": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgExecuteContractCompatTemplate = ` +Extract the following details for executing contract in compatibility mode: +- **sender** (string): Sender address +- **contract** (string): Contract address +- **msg** (object): Execute message in compatibility format +- **funds** (array): Optional funds to send + - **denom** (string): Token denomination + - **amount** (string): Token amount + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "contract": "inj2...", + "msg": { + "send": { + "to": "inj3...", + "amount": "1000000000000000000" + } + }, + "funds": [ + { + "denom": "inj", + "amount": "1000000000000000000" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const msgPrivilegedExecuteContractTemplate = ` +Extract the following details for privileged contract execution: +- **sender** (string): Privileged sender address +- **contract** (string): Contract address +- **msg** (object): Privileged execute message + +Request format: + +\`\`\`json +{ + "sender": "inj1...", + "contract": "inj2...", + "msg": { + "privileged_action": { + "parameter": "value" + } + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Additional Query Templates for Contract State + +export const getContractStateByKeyTemplate = ` +Extract the following details for fetching contract state by key: +- **contractAddress** (string): Contract address +- **key** (string): State key in base64 format + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "key": "base64encodedkey" +} +\`\`\` + +Response will contain state value for the given key in base64 format. + +Response format: + +\`\`\`json +{ + "data": "base64encodedvalue" +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractHistoryByOperationTemplate = ` +Extract the following details for fetching contract history by operation type: +- **contractAddress** (string): Contract address +- **operationType** (string): Operation type (Init/Migrate/Genesis) + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "operationType": "Init" +} +\`\`\` + +Response will contain filtered history entries: +- **entries** (array): List of history entries matching the operation type + - **operation** (string): Operation type + - **codeId** (number): Code ID + - **updated** (object): Update information + - **blockHeight** (number): Block height + - **txIndex** (number): Transaction index + - **msg** (string): Operation message + +Response format: + +\`\`\`json +{ + "entries": [ + { + "operation": "Init", + "codeId": 1, + "updated": { + "blockHeight": 1000000, + "txIndex": 0 + }, + "msg": "base64encodeddata" + } + ] +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +export const getContractCodeHistoryTemplate = ` +Extract the following details for fetching complete contract code history: +- **contractAddress** (string): Contract address +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain complete code history: +- **history** (array): List of all code changes + - **codeId** (number): Code ID + - **timeStamp** (string): Change timestamp + - **operation** (string): Operation type + - **msg** (string): Operation message + - **initiator** (string): Change initiator address +- **pagination** (object): Pagination information + +Response format: + +\`\`\`json +{ + "history": [ + { + "codeId": 1, + "timeStamp": "2024-01-01T00:00:00Z", + "operation": "Init", + "msg": "base64encodeddata", + "initiator": "inj1..." + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "10" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; + +// Templates for Contract Events and Logs + +export const getContractEventsTemplate = ` +Extract the following details for fetching contract events: +- **contractAddress** (string): Contract address +- **eventType** (string): Optional event type filter +- **pagination** (object): Optional pagination parameters + +Request format: + +\`\`\`json +{ + "contractAddress": "inj1...", + "eventType": "wasm", + "pagination": { + "key": "abc123...", + "offset": 0, + "limit": 100, + "countTotal": true + } +} +\`\`\` + +Response will contain contract events: +- **events** (array): List of contract events + - **type** (string): Event type + - **attributes** (array): Event attributes + - **key** (string): Attribute key + - **value** (string): Attribute value + - **blockHeight** (number): Block height + - **txHash** (string): Transaction hash +- **pagination** (object): Pagination information + +Response format: + +\`\`\`json +{ + "events": [ + { + "type": "wasm", + "attributes": [ + { + "key": "action", + "value": "transfer" + }, + { + "key": "amount", + "value": "1000000000000000000" + } + ], + "blockHeight": 1000000, + "txHash": "0x..." + } + ], + "pagination": { + "nextKey": "xyz789...", + "total": "100" + } +} +\`\`\` + +Here are the recent user messages for context: +{{recentMessages}} +`; diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/auction.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/auction.ts new file mode 100644 index 000000000000..ae8601a51f02 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/auction.ts @@ -0,0 +1,13 @@ +//Auction Module Params +export interface MsgBidRequestParams { + amount: string; + round: number; +} +export interface GetAuctionRoundParams { + round: number; +} + +export interface GetAuctionsParams { + startRound: number; + limit: number; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/auth.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/auth.ts new file mode 100644 index 000000000000..5f9c4acd8e46 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/auth.ts @@ -0,0 +1,60 @@ +import { + PaginationOption, + GrantWithDecodedAuthorization, + GrantAuthorizationWithDecodedAuthorization, + Pagination, + Msgs, +} from "@injectivelabs/sdk-ts"; +import { AddressParams } from "./base"; +// Auth Module Params +// Start of Get Auth Module Request Parameters +export interface AuthAccountParams extends AddressParams { + accountAddress: string; +} +export interface GetGrantsParams { + granter: string; + grantee: string; + pagination?: PaginationOption; +} + +export interface GetGranterGrantsParams { + granter: string; + pagination?: PaginationOption; +} + +export interface GetGranteeGrantsParams { + grantee: string; + pagination?: PaginationOption; +} +export interface MsgGrantParams { + messageType: string; + grantee: string; + granter: string; +} + +export interface MsgAuthzExecParams { + grantee: string; + msgs: Msgs | Msgs[]; +} +export interface MsgRevokeParams { + messageType: string; + grantee: string; + granter: string; +} +// End of Get Auth Module Request Parameters +// Start of Auth Response Parameters +export interface GrantsResponse { + pagination: Pagination; + grants: GrantWithDecodedAuthorization[]; +} + +export interface GranterGrantsResponse { + pagination: Pagination; + grants: GrantAuthorizationWithDecodedAuthorization[]; +} + +export interface GranteeGrantsResponse { + pagination: Pagination; + grants: GrantAuthorizationWithDecodedAuthorization[]; +} +// End of Auth Response Parameters diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/bank.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/bank.ts new file mode 100644 index 000000000000..8fb6b2c8a1f6 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/bank.ts @@ -0,0 +1,99 @@ +import { PaginationOption, Pagination, Coin } from "@injectivelabs/sdk-ts"; +import { CosmosBaseV1Beta1Coin } from "@injectivelabs/core-proto-ts"; +import { DenomParam } from "./base"; +// Bank Module Params +// Start of Get Bank Request Parameters +export interface GetBankBalanceParams { + denom: string; +} + +export interface GetBankBalancesParams { + pagination?: PaginationOption; +} + +export interface GetSupplyOfParams { + denom: string; +} + +export interface GetDenomMetadataParams { + denom: string; +} + +export interface GetDenomOwnersParams { + denom: string; +} + +export interface BankBalanceParams { + accountAddress: string; + denom: string; +} + +export interface MsgSendParams { + amount: + | { + denom: string; + amount: string; + } + | { + denom: string; + amount: string; + }[]; + srcInjectiveAddress: string; + dstInjectiveAddress: string; +} + +export interface MsgMultiSendParams { + inputs: { + address: string; + coins: CosmosBaseV1Beta1Coin.Coin[]; + }[]; + outputs: { + address: string; + coins: CosmosBaseV1Beta1Coin.Coin[]; + }[]; +} +// End of Get Bank Module Parameters +// Start of Bank Module Response Parameters +export interface BankModuleParamsResponse { + params: any; // Replace 'any' with actual params type from your SDK +} + +export interface BankBalanceResponse { + balance: Coin; +} + +export interface BankBalancesResponse { + balances: Coin[]; + pagination: Pagination; +} + +export interface TotalSupplyResponse { + supply: { denom: string; amount: string }[]; + pagination: Pagination; +} + +export interface SupplyOfResponse { + amount: Coin; +} + +export interface DenomsMetadataResponse { + metadatas: Metadata[]; + pagination: Pagination; +} + +export interface DenomMetadataResponse { + metadata: Metadata; +} + +export interface DenomOwnersResponse { + denomOwners: { + address: string; + balance: Coin | undefined; + }[]; + pagination: Pagination; +} + +export interface DenomMetadataParams extends DenomParam {} + +export interface DenomOwnerParams extends DenomParam {} +// End of Bank Module Response parameters diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/base.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/base.ts new file mode 100644 index 000000000000..2e7da0044af7 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/base.ts @@ -0,0 +1,17 @@ +import { PaginationOption } from "@injectivelabs/sdk-ts"; +export interface PaginationParams { + pagination?: PaginationOption; +} +export interface PaginationParams { + pagination?: PaginationOption; +} +export interface AddressParams { + address: string; +} +export interface TimeRangeParams { + startTime?: number; + endTime?: number; +} +export interface DenomParam { + denom: string; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/distribution.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/distribution.ts new file mode 100644 index 000000000000..60750f0ef805 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/distribution.ts @@ -0,0 +1,41 @@ +// Distribution Module Params +// Start of Get Distribution Module Parameters + +import { + DistributionModuleParams, + ValidatorRewards, + Coin, +} from "@injectivelabs/sdk-ts"; +export interface DelegatorValidatorParams { + delegatorAddress: string; + validatorAddress: string; +} +export interface MsgWithdrawDelegatorRewardParams { + delegatorAddress: string; + validatorAddress: string; +} +export interface MsgWithdrawValidatorCommissionParams { + validatorAddress: string; +} +export interface GetDelegatorRewardsForValidatorParams { + delegatorAddress: string; + validatorAddress: string; +} + +export interface GetDelegatorRewardsParams { + injectiveAddress: string; +} +// End of Get Distribution Module Request parameters +// Start of Distribution Module Response +export interface DistributionModuleParamsResponse { + params: DistributionModuleParams; +} + +export interface DelegatorRewardsForValidatorResponse { + rewards: Coin[]; +} + +export interface DelegatorRewardsResponse { + rewards: ValidatorRewards[]; +} +// End of Distribution Module Response parameters diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/exchange.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/exchange.ts new file mode 100644 index 000000000000..4d8a5f5307c9 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/exchange.ts @@ -0,0 +1,659 @@ +import { + PaginationOption, + TradeDirection, + TradeExecutionType, + TradeExecutionSide, + GrpcMarketStatus, + MarketType, + GridStrategyType, +} from "@injectivelabs/sdk-ts"; +import { PaginationParams, TimeRangeParams } from "./base"; +import { + InjectiveExchangeV1Beta1Exchange, + InjectiveOracleV1Beta1Oracle, +} from "@injectivelabs/core-proto-ts"; +import { OrderSide, OrderState } from "@injectivelabs/ts-types"; + +export interface MarketIdParam { + marketId: string; +} + +export interface SubaccountIdParam { + subaccountId: string; +} +// Exchange Module +// Start of Get Exchange Module Params +export interface GetModuleParamsParams {} + +export interface GetModuleStateParams {} + +export interface GetFeeDiscountScheduleParams {} + +export interface GetFeeDiscountAccountInfoParams { + injAddress: string; +} + +export interface GetTradingRewardsCampaignParams {} + +export interface GetTradeRewardPointsParams { + injectiveAddresses: string[]; +} + +export interface GetPendingTradeRewardPointsParams { + injectiveAddresses: string[]; +} + +export interface GetExchangePositionsParams {} + +export interface GetSubaccountTradeNonceParams { + subaccountId: string; +} + +export interface GetIsOptedOutOfRewardsParams { + account: string; +} + +export interface GetDerivativeMarketsParams { + quoteDenom?: string; + marketStatus?: string; + marketStatuses?: string[]; +} + +export interface GetDerivativeMarketParams { + marketId: string; +} + +export interface GetBinaryOptionsMarketsParams { + marketStatus?: string; + quoteDenom?: string; + pagination?: PaginationOption; +} + +export interface GetBinaryOptionsMarketParams { + marketId: string; +} + +export interface GetDerivativeOrdersParams { + marketId?: string; + marketIds?: string[]; + orderSide?: OrderSide; + isConditional?: boolean; + subaccountId?: string; + pagination?: PaginationOption; +} + +export interface GetDerivativeOrderHistoryParams { + subaccountId?: string; + marketId?: string; + marketIds?: string[]; + orderTypes?: OrderSide[]; + executionTypes?: TradeExecutionType[]; + direction?: TradeDirection; + isConditional?: boolean; + state?: OrderState; + pagination?: PaginationOption; +} + +export interface GetPositionsParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + direction?: TradeDirection; + pagination?: PaginationOption; +} + +export interface GetPositionsV2Params { + address?: string; + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + direction?: TradeDirection; + pagination?: PaginationOption; +} + +export interface GetDerivativeTradesParams { + endTime?: number; + tradeId?: string; + marketId?: string; + startTime?: number; + marketIds?: string[]; + subaccountId?: string; + accountAddress?: string; + direction?: TradeDirection; + pagination?: PaginationOption; + executionSide?: TradeExecutionSide; + executionTypes?: TradeExecutionType[]; +} + +export interface GetFundingPaymentsParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + pagination?: PaginationOption; +} + +export interface GetFundingRatesParams { + marketId?: string; + pagination?: PaginationOption; +} + +export interface GetDerivativeSubaccountOrdersListParams { + marketId?: string; + subaccountId?: string; + pagination?: PaginationOption; +} + +export interface GetDerivativeSubaccountTradesListParams { + marketId?: string; + subaccountId?: string; + direction?: TradeDirection; + executionType?: TradeExecutionType; + pagination?: PaginationOption; +} + +export interface GetDerivativeOrderbooksV2Params { + marketIds: string[]; +} + +export interface GetDerivativeOrderbookV2Params { + marketId: string; +} + +export interface GetRewardsParams { + address: string; + epoch: number; +} + +export interface GetSubaccountsListParams { + address: string; +} + +export interface GetSubaccountBalancesListParams { + subaccountId: string; +} + +export interface GetSubaccountHistoryParams { + subaccountId: string; + denom?: string; + transferTypes?: string[]; + pagination?: PaginationOption; +} + +export interface GetSubaccountOrderSummaryParams { + subaccountId: string; + marketId?: string; + orderDirection?: string; +} + +export interface GetOrderStatesParams { + spotOrderHashes?: string[]; + derivativeOrderHashes?: string[]; +} + +export interface GetAccountPortfolioParams { + address: string; +} + +export interface GetAccountPortfolioBalancesParams { + address: string; +} + +export interface GetSpotMarketsParams { + baseDenom?: string; + marketStatus?: string; + quoteDenom?: string; + marketStatuses?: string[]; +} + +export interface GetSpotMarketParams { + marketId: string; +} + +export interface GetSpotOrdersParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + orderSide?: OrderSide; + isConditional?: boolean; + pagination?: PaginationOption; +} + +export interface GetSpotOrderHistoryParams { + subaccountId?: string; + marketId?: string; + marketIds?: string[]; + orderTypes?: OrderSide[]; + executionTypes?: TradeExecutionType[]; + direction?: TradeDirection; + isConditional?: boolean; + state?: OrderState; + pagination?: PaginationOption; +} + +export interface GetSpotTradesParams { + endTime?: number; + tradeId?: string; + marketId?: string; + startTime?: number; + marketIds?: string[]; + subaccountId?: string; + accountAddress?: string; + direction?: TradeDirection; + pagination?: PaginationOption; + executionSide?: TradeExecutionSide; + executionTypes?: TradeExecutionType[]; +} + +export interface GetSpotSubaccountOrdersListParams { + subaccountId?: string; + marketId?: string; + pagination?: PaginationOption; +} + +export interface GetSpotSubaccountTradesListParams { + subaccountId?: string; + marketId?: string; + direction?: TradeDirection; + executionType?: TradeExecutionType; + pagination?: PaginationOption; +} + +export interface GetSpotOrderbooksV2Params { + marketIds: string[]; +} + +export interface GetSpotOrderbookV2Params { + marketId: string; +} + +export interface GetAtomicSwapHistoryParams { + address: string; + contractAddress: string; + pagination?: PaginationOption; +} + +export interface GetGridStrategiesParams { + accountAddress?: string; + subaccountId?: string; + state?: string; + marketId?: string; + limit?: number; + skip?: number; + marketType?: MarketType; + strategyType?: GridStrategyType[]; +} + +export interface GetHistoricalBalanceParams { + account: string; + resolution: string; +} + +export interface GetHistoricalRpnlParams { + account: string; + resolution: string; +} + +export interface GetHistoricalVolumesParams { + account: string; + resolution: string; +} + +export interface GetPnlLeaderboardParams { + startDate: string; + endDate: string; + limit?: number; + account?: string; +} + +export interface GetVolLeaderboardParams { + startDate: string; + endDate: string; + limit?: number; + account?: string; +} + +export interface GetPnlLeaderboardFixedResolutionParams { + resolution: string; + limit?: number; + account?: string; +} + +export interface GetVolLeaderboardFixedResolutionParams { + resolution: string; + limit?: number; + account?: string; +} + +export interface GetDenomHoldersParams { + denom: string; + token?: string; + limit?: number; +} +export interface MarketParams extends PaginationParams { + baseDenom?: string; + quoteDenom?: string; + marketStatus?: string; + marketStatuses?: string[]; +} + +export interface OrderParams extends PaginationParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + orderSide?: OrderSide; + isConditional?: boolean; +} + +export interface OrderHistoryParams extends PaginationParams { + subaccountId?: string; + marketId?: string; + marketIds?: string[]; + orderTypes?: OrderSide[]; + executionTypes?: TradeExecutionType[]; + direction?: TradeDirection; + isConditional?: boolean; + state?: OrderState; +} + +export interface PositionParams extends PaginationParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + direction?: TradeDirection; + address?: string; +} + +export interface TradeParams extends TimeRangeParams, PaginationParams { + tradeId?: string; + marketId?: string; + marketIds?: string[]; + subaccountId?: string; + accountAddress?: string; + direction?: TradeDirection; + executionSide?: TradeExecutionSide; + executionTypes?: TradeExecutionType[]; +} + +export interface FundingParams extends PaginationParams { + marketId?: string; + marketIds?: string[]; + subaccountId?: string; +} + +export interface SubaccountOrderParams extends PaginationParams { + marketId?: string; + subaccountId?: string; +} + +export interface SubaccountTradeParams extends SubaccountOrderParams { + direction?: TradeDirection; + executionType?: TradeExecutionType; +} + +export interface SubaccountHistoryParams extends SubaccountIdParam { + denom?: string; + transferTypes?: string[]; + pagination?: PaginationOption; +} + +export interface SubaccountOrderSummaryParams extends SubaccountIdParam { + marketId?: string; + orderDirection?: string; +} + +export interface OrderStateParams { + spotOrderHashes?: string[]; + derivativeOrderHashes?: string[]; +} + +export interface GetSpotOrderbookV2Params { + marketId: string; +} + +export interface MsgAdminUpdateBinaryOptionsMarketParams { + sender: string; + marketId: string; + settlementPrice: string; + expirationTimestamp: string; + settlementTimestamp: string; + status: GrpcMarketStatus; +} + +export interface MsgAuthorizeStakeGrantsParams { + grantee: string; + amount: string; +} + +export interface MsgBatchCancelBinaryOptionsOrdersParams { + orders: { + marketId: string; + subaccountId: string; + orderHash?: string; + orderMask?: InjectiveExchangeV1Beta1Exchange.OrderMask; + cid?: string; + }[]; +} + +export interface MsgBatchCancelDerivativeOrdersParams { + orders: { + marketId: string; + subaccountId: string; + orderHash?: string; + orderMask?: InjectiveExchangeV1Beta1Exchange.OrderMask; + cid?: string; + }[]; +} + +export interface MsgBatchCancelSpotOrdersParams { + orders: { + marketId: string; + subaccountId: string; + orderHash?: string; + orderMask?: InjectiveExchangeV1Beta1Exchange.OrderMask; + cid?: string; + }[]; +} + +export interface MsgBatchUpdateOrdersParams { + subaccountId: string; + spotMarketIdsToCancelAll?: string[]; + derivativeMarketIdsToCancelAll?: string[]; + binaryOptionsMarketIdsToCancelAll?: string[]; + spotOrdersToCancel?: { + marketId: string; + subaccountId: string; + orderHash?: string; + cid?: string; + }[]; +} + +export interface MsgCancelBinaryOptionsOrderParams { + marketId: string; + subaccountId: string; + orderHash?: string; + orderMask?: InjectiveExchangeV1Beta1Exchange.OrderMask; + cid?: string; +} + +export interface MsgCancelDerivativeOrderParams { + marketId: string; + subaccountId: string; + orderHash?: string; + orderMask?: InjectiveExchangeV1Beta1Exchange.OrderMask; + cid?: string; +} + +export interface MsgCancelSpotOrderParams { + marketId: string; + subaccountId: string; + orderHash?: string; + cid?: string; +} + +export interface MsgCreateBinaryOptionsLimitOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + margin: string; + quantity: string; + cid?: string; +} + +export interface MsgCreateBinaryOptionsMarketOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + margin: string; + quantity: string; + cid?: string; +} + +export interface MsgCreateDerivativeLimitOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + margin: string; + quantity: string; + cid?: string; +} + +export interface MsgCreateDerivativeMarketOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + margin: string; + quantity: string; + cid?: string; +} + +export interface MsgCreateSpotLimitOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + quantity: string; + cid?: string; +} + +export interface MsgCreateSpotMarketOrderParams { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + quantity: string; + cid?: string; +} + +export interface MsgDepositParams { + subaccountId: string; + amount: { + amount: string; + denom: string; + }; +} + +export interface MsgExternalTransferParams { + srcSubaccountId: string; + dstSubaccountId: string; + totalAmount: { + amount: string; + denom: string; + }; +} + +export interface MsgIncreasePositionMarginParams { + marketId: string; + srcSubaccountId: string; + dstSubaccountId: string; + amount: string; +} + +export interface MsgInstantBinaryOptionsMarketLaunchParams { + proposer: string; + market: { + ticker: string; + admin: string; + oracleSymbol: string; + oracleProvider: string; + oracleScaleFactor: number; + oracleType: InjectiveOracleV1Beta1Oracle.OracleType; + quoteDenom: string; + makerFeeRate: string; + takerFeeRate: string; + expirationTimestamp: number; + settlementTimestamp: number; + minPriceTickSize: string; + minQuantityTickSize: string; + minNotional: string; + }; +} + +export interface MsgInstantSpotMarketLaunchParams { + proposer: string; + market: { + sender: string; + ticker: string; + baseDenom: string; + quoteDenom: string; + minNotional: string; + minPriceTickSize: string; + minQuantityTickSize: string; + }; +} + +export interface MsgLiquidatePositionParams { + subaccountId: string; + injectiveAddress: string; + marketId: string; + /** optional order to provide for liquidation */ + order?: { + marketId: string; + subaccountId: string; + orderType: InjectiveExchangeV1Beta1Exchange.OrderType; + triggerPrice?: string; + feeRecipient: string; + price: string; + margin: string; + quantity: string; + cid?: string; + }; +} + +export interface MsgReclaimLockedFundsParams { + sender: string; + lockedAccountPubKey: string; + signature: Uint8Array; +} + +export interface MsgRewardsOptOutParams { + sender: string; +} + +export interface MsgSignDataParams { + sender: string; + data: string; +} + +export interface MsgWithdrawParams { + subaccountId: string; + amount: { + amount: string; + denom: string; + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/explorer.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/explorer.ts new file mode 100644 index 000000000000..2a11e2dba65e --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/explorer.ts @@ -0,0 +1,149 @@ +import { + Transaction, + ExplorerValidator, + ValidatorUptime, + PeggyDepositTx, + PeggyWithdrawalTx, + IBCTransferTx, + ExplorerStats, + ExchangePagination, +} from "@injectivelabs/sdk-ts"; +import { InjectiveExplorerRpc } from "@injectivelabs/indexer-proto-ts"; +import { TimeRangeParams } from "./base"; +/// Explorer Module Params +export interface GetTxByHashParams { + hash: string; +} +export interface GetExplorerValidatorParams { + address: string; +} +export interface GetAccountTxParams { + address: string; + limit?: number; + type?: string; + before?: number; + after?: number; + startTime?: number; + endTime?: number; +} + +export interface GetValidatorUptimeParams { + validatorAddress: string; +} + +export interface GetPeggyDepositTxsParams { + receiver?: string; + sender?: string; + limit?: number; + skip?: number; +} + +export interface GetPeggyWithdrawalTxsParams { + sender?: string; + receiver?: string; + limit?: number; + skip?: number; +} + +export interface GetBlocksParams { + before?: number; + after?: number; + limit?: number; + from?: number; + to?: number; +} + +export interface GetBlockParams { + id: string; +} + +export interface GetTxsParams { + before?: number; + after?: number; + limit?: number; + skip?: number; + type?: string; + startTime?: number; + endTime?: number; + chainModule?: string; +} + +export interface GetIBCTransferTxsParams { + sender?: string; + receiver?: string; + srcChannel?: string; + srcPort?: string; + destChannel?: string; + destPort?: string; + limit?: number; + skip?: number; +} + +// Response interfaces +export interface GetTxByHashResponse { + tx: Transaction; +} + +export interface GetAccountTxResponse { + txs: Transaction[]; + pagination: ExchangePagination; +} + +export interface GetExplorerValidatorResponse { + validator: ExplorerValidator; +} + +export interface GetValidatorUptimeResponse { + uptime: ValidatorUptime[]; +} + +export interface GetPeggyDepositTxsResponse { + txs: PeggyDepositTx[]; +} + +export interface GetPeggyWithdrawalTxsResponse { + txs: PeggyWithdrawalTx[]; +} + +export interface GetBlocksResponse + extends InjectiveExplorerRpc.GetBlocksResponse {} + +export interface GetBlockResponse + extends InjectiveExplorerRpc.GetBlockResponse {} + +export interface GetTxsResponse extends InjectiveExplorerRpc.GetTxsResponse {} + +export interface GetIBCTransferTxsResponse { + txs: IBCTransferTx[]; +} + +export interface GetExplorerStatsResponse { + stats: ExplorerStats; +} + +export interface AccountTxParams extends TimeRangeParams { + address: string; + limit?: number; + type?: string; + before?: number; + after?: number; +} + +export interface BlocksParams extends TimeRangeParams { + before?: number; + after?: number; + limit?: number; +} + +export interface BlockParams { + id: string; +} + +export interface TxsParams extends TimeRangeParams { + before?: number; + after?: number; + limit?: number; + skip?: number; + type?: string; + chainModule?: string; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/gov.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/gov.ts new file mode 100644 index 000000000000..2b2a074be632 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/gov.ts @@ -0,0 +1,196 @@ +import { + PaginationOption, + Pagination, + Msgs, + GovModuleStateParams, + Proposal, + ProposalDeposit, + Vote, + TallyResult, +} from "@injectivelabs/sdk-ts"; +import { PaginationParams } from "./base"; +import { + CosmosGovV1Gov, + InjectiveExchangeV1Beta1Exchange, + InjectiveOracleV1Beta1Oracle, +} from "@injectivelabs/core-proto-ts"; +// Governance Module Params +export interface GetProposalsParams { + status: CosmosGovV1Gov.ProposalStatus; + pagination?: PaginationOption; +} + +export interface GetProposalParams { + proposalId: number; +} + +export interface GetProposalDepositsParams { + proposalId: number; + pagination?: PaginationOption; +} + +export interface GetProposalVotesParams { + proposalId: number; + pagination?: PaginationOption; +} + +export interface GetProposalTallyParams { + proposalId: number; +} + +// Response interfaces +export interface GovernanceModuleParamsResponse { + params: GovModuleStateParams; +} + +export interface GetProposalsResponse { + proposals: Proposal[]; + pagination: Pagination; +} + +export interface GetProposalResponse { + proposal: Proposal; +} + +export interface GetProposalDepositsResponse { + deposits: ProposalDeposit[]; + pagination: Pagination; +} + +export interface GetProposalVotesResponse { + votes: Vote[]; + pagination: Pagination; +} + +export interface GetProposalTallyResponse { + tally: TallyResult; +} + +export interface ProposalParams extends PaginationParams { + status: CosmosGovV1Gov.ProposalStatus; +} + +export interface ProposalQueryParams { + proposalId: number; +} + +export interface MsgSubmitProposalExpiryFuturesMarketLaunchParams { + market: { + title: string; + description: string; + ticker: string; + quoteDenom: string; + oracleBase: string; + oracleQuote: string; + expiry: number; + oracleScaleFactor: number; + oracleType: InjectiveOracleV1Beta1Oracle.OracleType; + initialMarginRatio: string; + maintenanceMarginRatio: string; + makerFeeRate: string; + takerFeeRate: string; + minPriceTickSize: string; + minQuantityTickSize: string; + }; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgSubmitProposalSpotMarketLaunchParams { + market: { + title: string; + description: string; + ticker: string; + baseDenom: string; + quoteDenom: string; + minPriceTickSize: string; + minQuantityTickSize: string; + makerFeeRate: string; + takerFeeRate: string; + minNotional: string; + }; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgSubmitProposalPerpetualMarketLaunchParams { + market: { + title: string; + description: string; + ticker: string; + quoteDenom: string; + oracleBase: string; + oracleQuote: string; + oracleScaleFactor: number; + oracleType: InjectiveOracleV1Beta1Oracle.OracleType; + initialMarginRatio: string; + maintenanceMarginRatio: string; + makerFeeRate: string; + takerFeeRate: string; + minPriceTickSize: string; + minQuantityTickSize: string; + minNotional: string; + }; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgVoteParams { + proposalId: number; + metadata: string; + vote: CosmosGovV1Gov.VoteOption; +} + +export interface MsgSubmitTextProposalParams { + title: string; + description: string; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgSubmitProposalSpotMarketParamUpdateParams { + market: { + title: string; + description: string; + marketId: string; + makerFeeRate: string; + takerFeeRate: string; + relayerFeeShareRate: string; + minPriceTickSize: string; + minQuantityTickSize: string; + ticker: string; + status: InjectiveExchangeV1Beta1Exchange.MarketStatus; + }; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgSubmitGenericProposalParams { + title: string; + summary: string; + expedited?: boolean; + metadata?: string; + messages: Msgs[]; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgGovDepositParams { + proposalId: number; + amount: { + denom: string; + amount: string; + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/ibc.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/ibc.ts new file mode 100644 index 000000000000..582c5c35f570 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/ibc.ts @@ -0,0 +1,48 @@ +import { PaginationOption } from "@injectivelabs/sdk-ts"; +import { DenomTrace } from "@injectivelabs/core-proto-ts/cjs/ibc/applications/transfer/v1/transfer.js"; +import { PaginationParams } from "./base"; +//IBC params +export interface GetDenomTraceParams { + hash: string; +} + +export interface GetDenomsTraceParams { + pagination?: PaginationOption; +} + +// Response interfaces +export interface GetDenomTraceResponse { + denomTrace: DenomTrace; +} + +export interface GetDenomsTraceResponse { + denomsTrace: DenomTrace[]; +} + +export interface IBCTransferParams extends PaginationParams { + sender?: string; + receiver?: string; + srcChannel?: string; + srcPort?: string; + destChannel?: string; + destPort?: string; + limit?: number; + skip?: number; +} + +export interface MsgIBCTransferParams { + amount: { + denom: string; + amount: string; + }; + memo?: string; + sender: string; + port: string; + receiver: string; + channelId: string; + timeout?: number; + height?: { + revisionHeight: number; + revisionNumber: number; + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/index.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/index.ts new file mode 100644 index 000000000000..ceb1f7d2ae72 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/index.ts @@ -0,0 +1,44 @@ +export * from "./base"; +export * from "./auction"; +export * from "./auth"; +export * from "./bank"; +export * from "./distribution"; +export * from "./exchange"; +export * from "./explorer"; +export * from "./gov"; +export * from "./ibc"; +export * from "./insurance"; +export * from "./mint"; +export * from "./mito"; +export * from "./peggy"; +export * from "./permissions"; +export * from "./staking"; +export * from "./token-factory"; +export * from "./wasm"; + +// Generic Standard Response +export interface StandardResponse { + success: boolean; + result: T; +} + +// Helper functions with generic success type parameter +export function createSuccessResponse(data: T): StandardResponse { + return { + success: true, + result: data, + }; +} +// Helper functions with generic error type parameter +export function createErrorResponse( + code: string, + details?: unknown +): StandardResponse { + return { + success: false, + result: { + code, + details, + }, + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/insurance.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/insurance.ts new file mode 100644 index 000000000000..242067a87d45 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/insurance.ts @@ -0,0 +1,78 @@ +import { InsuranceFund, InsuranceModuleParams } from "@injectivelabs/sdk-ts"; +import { InjectiveOracleV1Beta1Oracle } from "@injectivelabs/core-proto-ts"; + +// Insurance Fund Module Params +export interface GetInsuranceFundParams { + marketId: string; +} + +export interface GetEstimatedRedemptionsParams { + marketId: string; + address: string; +} + +export interface GetPendingRedemptionsParams { + marketId: string; + address: string; +} + +// Response interfaces +export interface InsuranceModuleParamsResponse { + params: InsuranceModuleParams; +} + +export interface GetInsuranceFundsResponse { + funds: InsuranceFund[]; +} + +export interface GetInsuranceFundResponse { + fund: InsuranceFund; +} + +export interface RedemptionAmount { + amount: string; + denom: string; +} + +export interface GetEstimatedRedemptionsResponse { + redemption: RedemptionAmount; +} + +export interface GetPendingRedemptionsResponse { + redemptions: RedemptionAmount[]; +} +export interface InsuranceFundParams { + marketId: string; + address: string; +} + +export interface MsgCreateInsuranceFundParams { + fund: { + ticker: string; + quoteDenom: string; + oracleBase: string; + oracleQuote: string; + oracleType: InjectiveOracleV1Beta1Oracle.OracleType; + expiry?: number; + }; + deposit: { + amount: string; + denom: string; + }; +} + +export interface MsgRequestRedemptionParams { + marketId: string; + amount: { + denom: string; + amount: string; + }; +} + +export interface MsgUnderwriteParams { + marketId: string; + amount: { + denom: string; + amount: string; + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/mint.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/mint.ts new file mode 100644 index 000000000000..18e0bba08cf4 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/mint.ts @@ -0,0 +1,14 @@ +import { MinModuleParams } from "@injectivelabs/sdk-ts"; +// Mint module params +// Response interfaces +export interface MintModuleParamsResponse { + params: MinModuleParams; +} + +export interface GetInflationResponse { + inflation: string; +} + +export interface GetAnnualProvisionsResponse { + annualProvisions: string; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/mito.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/mito.ts new file mode 100644 index 000000000000..e9aa45f20721 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/mito.ts @@ -0,0 +1,542 @@ +import { + Coin, + MitoVault, + MitoPagination, + MitoPriceSnapshot, + MitoSubscription, + MitoHolders, + MitoPortfolio, + MitoLeaderboard, + MitoTransfer, + MitoLeaderboardEpoch, + MitoStakingPool, + MitoMission, + MitoMissionLeaderboard, + MitoIDO, + MitoIDOSubscriber, + MitoTokenInfo, + MitoIDOSubscription, + MitoIDOSubscriptionActivity, + MitoWhitelistAccount, + MitoClaimReference, +} from "@injectivelabs/sdk-ts"; +import { PaginationParams, TimeRangeParams, AddressParams } from "./base"; +// Mito Module Params +// Param interfaces + +export interface GetVaultParams { + contractAddress?: string; + slug?: string; +} + +export interface GetVaultsParams { + limit?: number; + codeId?: string; + pageIndex?: number; +} + +export interface GetLpTokenPriceChartParams { + to?: string; + from?: string; + vaultAddress: string; +} + +export interface GetTVLChartParams { + to?: string; + from?: string; + vaultAddress: string; +} + +export interface GetVaultsByHolderAddressParams { + skip?: number; + limit?: number; + holderAddress: string; + vaultAddress?: string; +} + +export interface GetLPHoldersParams { + skip?: number; + limit?: number; + vaultAddress: string; + stakingContractAddress: string; +} + +export interface GetHolderPortfolioParams { + holderAddress: string; + stakingContractAddress: string; +} + +export interface GetTransferHistoryParams { + vault?: string; + account?: string; + limit?: number; + toNumber?: number; + fromNumber?: number; +} + +export interface GetLeaderboardParams { + epochId?: number; +} + +export interface GetLeaderboardEpochsParams { + limit?: number; + toEpochId?: number; + fromEpochId?: number; +} + +export interface GetStakingPoolsParams { + staker?: string; + stakingContractAddress: string; +} + +export interface GetStakingHistoryParams { + staker?: string; + limit?: number; + toNumber?: number; + fromNumber?: number; +} + +export interface GetStakingRewardsByAccountParams { + staker: string; + stakingContractAddress: string; +} + +export interface GetMissionsParams { + accountAddress: string; +} + +export interface GetMissionLeaderboardParams { + userAddress?: string; +} + +export interface GetIDOParams { + contractAddress: string; + accountAddress?: string; +} + +export interface GetIDOsParams { + status?: string; + limit?: number; + toNumber?: number; + accountAddress?: string; + ownerAddress?: string; +} + +export interface GetIDOSubscribersParams { + skip?: number; + limit?: number; + sortBy?: string; + contractAddress: string; +} + +export interface GetIDOSubscriptionParams { + contractAddress: string; + accountAddress: string; +} + +export interface GetIDOActivitiesParams { + contractAddress?: string; + accountAddress?: string; + limit?: number; + toNumber?: string; +} + +export interface GetIDOWhitelistParams { + skip?: number; + limit?: number; + idoAddress: string; +} + +export interface GetClaimReferencesParams { + skip?: number; + limit?: number; + idoAddress: string; + accountAddress: string; +} + +// Response interfaces +export interface GetVaultResponse { + vault: MitoVault; +} + +export interface GetVaultsResponse { + vaults: MitoVault[]; + pagination?: MitoPagination; +} + +export interface GetLpTokenPriceChartResponse { + priceSnapshots: MitoPriceSnapshot[]; +} + +export interface GetTVLChartResponse { + priceSnapshots: MitoPriceSnapshot[]; +} + +export interface GetVaultsByHolderAddressResponse { + subscriptions: MitoSubscription[]; + pagination?: MitoPagination; +} + +export interface GetLPHoldersResponse { + holders: MitoHolders[]; + pagination?: MitoPagination; +} + +export interface GetHolderPortfolioResponse { + portfolio: MitoPortfolio; +} + +export interface GetTransferHistoryResponse { + transfers: MitoTransfer[]; + pagination?: MitoPagination; +} + +export interface GetLeaderboardResponse { + leaderboard: MitoLeaderboard; +} + +export interface GetLeaderboardEpochsResponse { + epochs: MitoLeaderboardEpoch[]; + pagination?: MitoPagination; +} + +export interface GetStakingPoolsResponse { + pools: MitoStakingPool[]; + pagination?: MitoPagination; +} + +export interface StakingActivity { + action: string; + txHash: string; + staker: string; + vaultAddress: string; + numberByAccount: number; + timestamp: number; + rewardedTokens: Coin[]; + stakeAmount: Coin | undefined; +} + +export interface GetStakingHistoryResponse { + activities: StakingActivity[]; + pagination?: MitoPagination; +} + +export interface StakingReward { + apr: number; + vaultName: string; + vaultAddress: string; + lockTimestamp: number; + claimableRewards: Coin[]; + stakedAmount: Coin | undefined; + lockedAmount: Coin | undefined; +} + +export interface GetStakingRewardsByAccountResponse { + rewards: StakingReward[]; + pagination?: MitoPagination; +} + +export interface GetMissionsResponse { + missions: MitoMission[]; +} + +export interface GetMissionLeaderboardResponse { + leaderboard: MitoMissionLeaderboard; +} + +export interface GetIDOResponse { + ido?: MitoIDO; +} + +export interface GetIDOsResponse { + idos: MitoIDO[]; + pagination?: MitoPagination; +} + +export interface GetIDOSubscribersResponse { + marketId: string; + quoteDenom: string; + subscribers: MitoIDOSubscriber[]; + pagination?: MitoPagination; + tokenInfo?: MitoTokenInfo; +} + +export interface GetIDOSubscriptionResponse { + subscription?: MitoIDOSubscription; +} + +export interface GetIDOActivitiesResponse { + activities: MitoIDOSubscriptionActivity[]; + pagination?: MitoPagination; +} + +export interface GetIDOWhitelistResponse { + idoAddress?: string; + accounts: MitoWhitelistAccount[]; + pagination?: MitoPagination; +} + +export interface GetClaimReferencesResponse { + claimReferences: MitoClaimReference[]; + pagination?: MitoPagination; +} + +export interface VaultParams { + contractAddress?: string; + slug?: string; +} + +export interface VaultsParams extends PaginationParams { + limit?: number; + codeId?: string; + pageIndex?: number; +} + +export interface ChartParams extends TimeRangeParams { + vaultAddress: string; +} + +export interface VaultHolderParams extends PaginationParams { + skip?: number; + limit?: number; + holderAddress: string; + vaultAddress?: string; +} + +export interface LPHoldersParams extends PaginationParams { + skip?: number; + limit?: number; + vaultAddress: string; + stakingContractAddress: string; +} + +export interface HolderPortfolioParams { + holderAddress: string; + stakingContractAddress: string; +} + +export interface TransferHistoryParams extends PaginationParams { + vault?: string; + account?: string; + limit?: number; + toNumber?: number; + fromNumber?: number; +} + +export interface LeaderboardEpochParams extends PaginationParams { + limit?: number; + toEpochId?: number; + fromEpochId?: number; +} + +export interface StakingPoolParams { + staker?: string; + stakingContractAddress: string; +} + +export interface StakingHistoryParams extends PaginationParams { + staker?: string; + limit?: number; + toNumber?: number; + fromNumber?: number; +} + +export interface StakingRewardsParams { + staker: string; + stakingContractAddress: string; +} + +export interface MissionParams extends AddressParams { + accountAddress: string; +} + +export interface IDOParams { + contractAddress: string; + accountAddress?: string; +} + +export interface IDOListParams extends PaginationParams { + status?: string; + limit?: number; + toNumber?: number; + accountAddress?: string; + ownerAddress?: string; +} + +export interface IDOSubscribersParams extends PaginationParams { + skip?: number; + limit?: number; + sortBy?: string; + contractAddress: string; +} + +export interface IDOSubscriptionParams { + contractAddress: string; + accountAddress: string; +} + +export interface IDOActivityParams extends PaginationParams { + contractAddress?: string; + accountAddress?: string; + limit?: number; + toNumber?: string; +} + +export interface IDOWhitelistParams extends PaginationParams { + skip?: number; + limit?: number; + idoAddress: string; +} + +export interface ClaimReferenceParams extends PaginationParams { + skip?: number; + limit?: number; + idoAddress: string; + accountAddress: string; +} + +export enum VaultContractType { + ManagedVault = "crates.io:managed-vault", + CPMM = "crates.io:vault-cpmm-spot", + ASMMSpot = "crates.io:vault-asmm-spot", + ASMMPerp = "crates.io:vault-asmm-perp", +} + +export enum DerivativeRedemptionType { + QuoteOnly = "QuoteOnly", + PositionAndQuote = "PositionAndQuote", +} + +export enum SpotRedemptionType { + BaseOnly = "BaseOnly", + QuoteOnly = "QuoteOnly", + BaseAndQuote = "BaseAndQuote", + FixedBaseAndQuote = "FixedBaseAndQuote", + VariableBaseAndQuote = "VariableBaseAndQuote", +} + +export enum VaultMarketType { + Spot = "Spot", + Derivative = "Derivative", +} + +export interface GetLaunchpadSubscribeParams { + amount: number; + quoteTokenDenom: string; + quoteTokenDecimals: number; + contractAddress: string; +} +export interface GetLaunchpadClaimParams { + contractAddress: string; +} + +export interface GetSubscribeVaultParams { + market: { + baseDenom: string; + baseDecimals: number; + quoteDecimals: number; + quoteDenom: string; + }; + + baseAmount: number; + quoteAmount: number; + subscriptionType: SpotRedemptionType; + vaultDetails: { + vaultSubaccountId: string; + vaultMasterAddress: string; + vaultType: VaultContractType; + }; + slippage?: { + max_penalty: string; + }; +} + +export interface GetInstantiateCPMMVaultParams { + MITO_MASTER_CONTRACT_ADDRESS: string; + CPMM_CONTRACT_CODE: number; + senderWalletAddress: string; + marketId: string; + feeBps: number; + baseDecimals: number; + quoteDecimals: number; + funds: { + denom: string; + amount: string; + }[]; + // Overrides default parameters + notionalValueCap?: string; + pricingStrategy?: { + SmoothingPricingWithRelativePriceRange: { + bid_range: string; + ask_range: string; + }; + }; + maxInvariantSensitivityBps?: string; + maxPriceSensitivityBps?: string; + orderType?: string; +} + +export interface GetVaultSubscribeParams { + vaultType: VaultContractType; + slippage?: { + max_penalty: string; + }; + + vaultSubaccountId: string; + baseAmount: number; + quoteAmount: number; + market: { + baseDenom: string; + baseDecimals: number; + quoteDenom: string; + quoteDecimals: number; + }; + subscriptionType: SpotRedemptionType; + masterAddress: string; +} + +export interface GetVaultRedeemParams { + vaultSubaccountId: string; + marketType: VaultMarketType; + slippage?: { + max_penalty: string; + }; + redemptionType: SpotRedemptionType | DerivativeRedemptionType; + redeemAmount: number; + vaultBaseDecimals: number; + masterAddress: string; + vaultLpDenom: string; +} + +export interface GetStakeVaultLPParams { + amount: number; + vaultLpDenom: string; + vaultTokenDecimals: number; + stakingContractAddress: string; +} + +export interface GetUnstakeVaultLPParams { + amount: number; + vaultLpDenom: string; + vaultTokenDecimals: number; + stakingContractAddress: string; +} + +export interface GetClaimVaultRewardsParams { + vaultLpDenom: string; + stakingContractAddress: string; +} + +export interface GetVaultsParams { + skip?: number; + limit?: number; +} + +export interface GetLPHoldersParams { + vaultAddress: string; + stakingContractAddress: string; +} + +export interface GetStakingPoolsParams { + stakingContractAddress: string; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/peggy.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/peggy.ts new file mode 100644 index 000000000000..182ecabfd8b2 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/peggy.ts @@ -0,0 +1,11 @@ +//Peggy +export interface MsgSendToEthParams { + amount: { + denom: string; + amount: string; + }; + bridgeFee?: { + denom: string; + amount: string; + }; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/permissions.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/permissions.ts new file mode 100644 index 000000000000..4b2e9fa105ac --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/permissions.ts @@ -0,0 +1,69 @@ +import { + Coin, + PermissionsModuleParams, + Namespace, +} from "@injectivelabs/sdk-ts"; +import { AddressParams } from "./base"; + +// Base parameter interfaces +// Permissions Module Params +// Param interfaces +export interface GetAddressesByRoleParams { + denom: string; + role: string; +} + +export interface GetAddressRolesParams { + address: string; + denom: string; +} + +export interface GetNamespaceByDenomParams { + denom: string; + includeRoles: boolean; +} + +export interface GetVouchersForAddressParams { + address: string; +} + +// Response interfaces +export interface GetAddressesByRoleResponse { + addresses: string[]; +} + +export interface GetAddressRolesResponse { + roles: string[]; +} + +export interface GetAllNamespacesResponse { + namespaces: Namespace[]; +} + +export interface GetPermissionsModuleParamsResponse { + params: PermissionsModuleParams; +} + +export interface GetNamespaceByDenomResponse { + namespace: Namespace; +} + +export interface GetVouchersForAddressResponse { + vouchers: Coin[]; +} +export interface RoleParams { + denom: string; + role: string; +} + +export interface AddressRoleParams { + address: string; + denom: string; +} + +export interface NamespaceParams { + denom: string; + includeRoles: boolean; +} + +export interface VoucherParams extends AddressParams {} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/staking.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/staking.ts new file mode 100644 index 000000000000..366a48144ee6 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/staking.ts @@ -0,0 +1,175 @@ +import { + PaginationOption, + Pagination, + StakingModuleParams, + Pool, + Validator, + Delegation, + UnBondingDelegation, + ReDelegation, +} from "@injectivelabs/sdk-ts"; +import { PaginationParams } from "./base"; +// Staking Module Params +// Param interfaces + +export interface GetValidatorsParams { + pagination?: PaginationOption; +} + +export interface GetValidatorParams { + address: string; +} + +export interface GetValidatorDelegationsParams { + validatorAddress: string; + pagination?: PaginationOption; +} + +export interface GetDelegationParams { + injectiveAddress: string; + validatorAddress: string; +} + +export interface GetDelegationsParams { + injectiveAddress: string; + pagination?: PaginationOption; +} + +export interface GetDelegatorsParams { + validatorAddress: string; + pagination?: PaginationOption; +} + +export interface GetUnbondingDelegationsParams { + injectiveAddress: string; + pagination?: PaginationOption; +} + +export interface GetReDelegationsParams { + injectiveAddress: string; + pagination?: PaginationOption; +} + +// Response interfaces +export interface GetStakingModuleParamsResponse { + params: StakingModuleParams; +} + +export interface GetPoolResponse { + pool: Pool; +} + +export interface GetValidatorsResponse { + validators: Validator[]; + pagination: Pagination; +} + +export interface GetValidatorResponse { + validator: Validator; +} + +export interface GetValidatorDelegationsResponse { + delegations: Delegation[]; + pagination: Pagination; +} + +export interface GetDelegationResponse { + delegation: Delegation; +} + +export interface GetDelegationsResponse { + delegations: Delegation[]; + pagination: Pagination; +} + +export interface GetUnbondingDelegationsResponse { + unbondingDelegations: UnBondingDelegation[]; + pagination: Pagination; +} + +export interface GetReDelegationsResponse { + redelegations: ReDelegation[]; + pagination: Pagination; +} +export interface MsgBeginRedelegateParams { + amount: { + denom: string; + amount: string; + }; + srcValidatorAddress: string; + dstValidatorAddress: string; +} + +export interface MsgDelegateParams { + amount: { + denom: string; + amount: string; + }; + validatorAddress: string; +} + +export interface MsgUndelegateParams { + amount: { + denom: string; + amount: string; + }; + validatorAddress: string; +} + +export interface MsgCreateValidatorParams { + description: { + moniker: string; + identity: string; + website: string; + securityContact?: string; + details: string; + }; + value: { + amount: string; + denom: string; + }; + pubKey: { + type: string; + value: string; + }; + delegatorAddress: string; + validatorAddress: string; + commission: { + maxChangeRate: string; + rate: string; + maxRate: string; + }; +} + +export interface MsgEditValidatorParams { + description: { + moniker: string; + identity: string; + website: string; + securityContact?: string; + details: string; + }; + validatorAddress: string; + commissionRate?: string; + minSelfDelegation?: string; +} + +export interface MsgCancelUnbondingDelegationParams { + amount: { + denom: string; + amount: string; + }; + validatorAddress: string; + delegatorAddress: string; + creationHeight: string; +} + +export interface ValidatorParams extends PaginationParams { + validatorAddress: string; +} + +export interface DelegationParams { + validatorAddress: string; +} + +export interface DelegationsParams extends PaginationParams {} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/token-factory.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/token-factory.ts new file mode 100644 index 000000000000..7c4e56e2c7c0 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/token-factory.ts @@ -0,0 +1,63 @@ +import { + AuthorityMetadata, + TokenFactoryModuleParams, + TokenFactoryModuleState, +} from "@injectivelabs/sdk-ts"; +import { CosmosBankV1Beta1Bank } from "@injectivelabs/core-proto-ts"; +// Token Factory Module Params// Param interfaces +export interface GetDenomsFromCreatorParams { + creator: string; +} + +export interface GetDenomAuthorityMetadataParams { + creator: string; + subDenom: string; +} + +// Response interfaces +export interface GetDenomsFromCreatorResponse { + denoms: string[]; +} + +export interface GetDenomAuthorityMetadataResponse { + metadata: AuthorityMetadata; +} + +export interface GetTokenFactoryModuleParamsResponse { + params: TokenFactoryModuleParams; +} + +export interface GetTokenFactoryModuleStateResponse { + state: TokenFactoryModuleState; +} +export interface TokenFactoryParams { + creator: string; + subDenom: string; +} + +export interface MsgBurnParams { + amount: { + amount: string; + denom: string; + }; +} +export interface MsgChangeAdminParams { + denom: string; + newAdmin: string; +} + +export interface MsgCreateDenomParams { + subdenom: string; + decimals?: number; + name?: string; + symbol?: string; +} +export interface MsgMintParams { + totalAmount: { + amount: string; + denom: string; + }; +} +export interface MsgSetDenomMetadataParams { + metadata: CosmosBankV1Beta1Bank.Metadata; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/src/types/wasm.ts b/packages/plugin-injective/injective-sdk-client-ts/src/types/wasm.ts new file mode 100644 index 000000000000..68fd78d4bc96 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/src/types/wasm.ts @@ -0,0 +1,184 @@ +import { + PaginationOption, + Pagination, + ExecArgs, + ExecPrivilegedArgs, + ContractAccountsBalanceWithPagination, + ContractStateWithPagination, + ContractInfo, + ContractCodeHistoryEntry, + CodeInfoResponse, +} from "@injectivelabs/sdk-ts"; +import { CosmwasmWasmV1Query } from "@injectivelabs/core-proto-ts"; +import { AccessConfig } from "@injectivelabs/core-proto-ts/cjs/cosmwasm/wasm/v1/types"; +import { PaginationParams } from "./base"; +// Wasm Module Params +// Param interfaces +export interface GetContractAccountsBalanceParams { + contractAddress: string; + pagination?: PaginationOption; +} + +export interface GetContractStateParams { + contractAddress: string; + pagination?: PaginationOption; +} + +export interface GetContractInfoParams { + contractAddress: string; +} + +export interface GetContractHistoryParams { + contractAddress: string; +} + +export interface GetSmartContractStateParams { + contractAddress: string; + query?: string | Record; +} + +export interface GetRawContractStateParams { + contractAddress: string; + query?: string; +} + +export interface GetContractCodesParams { + pagination?: PaginationOption; +} + +export interface GetContractCodeParams { + codeId: number; +} + +export interface GetContractCodeContractsParams { + codeId: number; + pagination?: PaginationOption; +} + +// Response interfaces +export interface GetContractAccountsBalanceResponse { + balance: ContractAccountsBalanceWithPagination; +} + +export interface GetContractStateResponse { + state: ContractStateWithPagination; +} + +export interface GetContractInfoResponse { + contractInfo?: ContractInfo; +} + +export interface GetContractHistoryResponse { + entriesList: ContractCodeHistoryEntry[]; + pagination: Pagination; +} + +export interface GetSmartContractStateResponse + extends CosmwasmWasmV1Query.QuerySmartContractStateResponse {} + +export interface GetRawContractStateResponse + extends CosmwasmWasmV1Query.QueryRawContractStateResponse {} + +export interface GetContractCodesResponse { + codeInfosList: CodeInfoResponse[]; + pagination: Pagination; +} + +export interface GetContractCodeResponse { + codeInfo: CodeInfoResponse; + data: Uint8Array; +} + +export interface GetContractCodeContractsResponse { + contractsList: string[]; + pagination: Pagination; +} + +export interface ContractBalanceParams extends PaginationParams { + contractAddress: string; +} + +export interface ContractStateParams extends PaginationParams { + contractAddress: string; +} + +export interface SmartContractParams { + contractAddress: string; + query?: string | Record; +} + +export interface RawContractParams { + contractAddress: string; + query?: string; +} + +export interface ContractCodeParams { + codeId: number; + pagination?: PaginationOption; +} + +export interface MsgStoreCodeParams { + wasmBytes: Uint8Array | string; + instantiatePermission?: AccessConfig; +} +export interface MsgUpdateAdminParams { + newAdmin: string; + contract: string; +} +export interface MsgExecuteContractParams { + funds?: + | { + denom: string; + amount: string; + } + | { + denom: string; + amount: string; + }[]; + sender: string; + contractAddress: string; + execArgs?: ExecArgs; + exec?: { + msg: object; + action: string; + }; + msg?: object; +} +export interface MsgMigrateContractParams { + contract: string; + codeId: number; + msg: object; +} +export interface MsgInstantiateContractParams { + admin: string; + codeId: number; + label: string; + msg: Object; + amount?: { + denom: string; + amount: string; + }; +} +export interface MsgExecuteContractCompatParams { + funds?: + | { + denom: string; + amount: string; + } + | { + denom: string; + amount: string; + }[]; + contractAddress: string; + execArgs?: ExecArgs; + exec?: { + msg: Record; + action: string; + }; + msg?: Record; +} +export interface MsgPrivilegedExecuteContractParams { + funds: string; + contractAddress: string; + data: ExecPrivilegedArgs; +} diff --git a/packages/plugin-injective/injective-sdk-client-ts/tsconfig.json b/packages/plugin-injective/injective-sdk-client-ts/tsconfig.json new file mode 100644 index 000000000000..0605046f5d76 --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "NodeNext", + "lib": [ + "ES2020" + ], + "moduleResolution": "NodeNext", + "strict": true, + "skipLibCheck": true, + "declaration": true, + "outDir": "./dist", + "esModuleInterop": true, + "resolveJsonModule": true, + "isolatedModules": true, + "forceConsistentCasingInFileNames": true + }, + "include": [ + "./**/*.ts", + "./**/*.d.ts" + ], + "exclude": [ + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/plugin-injective/injective-sdk-client-ts/tsup.config.ts b/packages/plugin-injective/injective-sdk-client-ts/tsup.config.ts new file mode 100644 index 000000000000..793480487bbe --- /dev/null +++ b/packages/plugin-injective/injective-sdk-client-ts/tsup.config.ts @@ -0,0 +1,48 @@ +import { defineConfig } from 'tsup'; +import { builtinModules } from 'module'; +import pkg from './package.json'; + +export default defineConfig({ + entry: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + sourcemap: true, + clean: true, + splitting: false, + minify: false, + platform: 'node', + target: 'node23', + + noExternal: [ + '@injectivelabs/networks', + '@injectivelabs/sdk-ts', + '@injectivelabs/token-metadata', + '@injectivelabs/ts-types', + '@injectivelabs/utils', + 'form-data', + 'combined-stream' + ], + + external: [ + ...builtinModules.filter(mod => mod !== 'util'), + ...Object.keys(pkg.dependencies || {}) + .filter(dep => !dep.startsWith('@injectivelabs/')) + ], + + esbuildOptions: (options) => { + options.mainFields = ['module', 'main']; + options.banner = { + js: ` + import { createRequire } from 'module'; + import { fileURLToPath } from 'url'; + import { dirname } from 'path'; + const require = createRequire(import.meta.url); + const __filename = fileURLToPath(import.meta.url); + const __dirname = dirname(__filename); + ` + }; + options.define = { + 'process.env.NODE_ENV': '"production"' + }; + } +}); \ No newline at end of file diff --git a/packages/plugin-injective/jest.config.js b/packages/plugin-injective/jest.config.js new file mode 100644 index 000000000000..a6b47f840351 --- /dev/null +++ b/packages/plugin-injective/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleNameMapper: { + '^@injective/(.*)$': '/injective-sdk-client-ts/src/$1' + }, + testMatch: ['**/tests/**/*.test.ts'], + setupFilesAfterEnv: ['./tests/setup.ts'] +}; diff --git a/packages/plugin-injective/package.json b/packages/plugin-injective/package.json new file mode 100644 index 000000000000..13ba85ddf8f9 --- /dev/null +++ b/packages/plugin-injective/package.json @@ -0,0 +1,51 @@ +{ + "name": "@elizaos/plugin-injective", + "version": "0.1.7", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "type": "module", + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "jest", + "test:watch": "jest --watch", + "format": "prettier --write \"src/**/*.ts\"", + "test:coverage": "jest --coverage" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "require": "./dist/index.cjs", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + "files": [ + "dist" + ], + "keywords": [], + "author": "hrishikesh@injectivelabs.org", + "license": "ISC", + "devDependencies": { + "@types/chai": "^5.0.1", + "@types/jest": "^29.5.14", + "@types/node": "^22.10.3", + "@types/sinon": "^17.0.3", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "chai": "^5.1.2", + "eslint": "9.16.0", + "jest": "^29.7.0", + "prettier": "3.4.1", + "sinon": "^19.0.2", + "ts-jest": "^29.2.5", + "typescript": "^5.7.2" + }, + "dependencies": { + "@elizaos/adapter-sqlite": "0.1.7-alpha.2", + "@elizaos/core": "workspace:*", + "injective-sdk-client-ts": "file:../../packages/plugin-injective/injective-sdk-client-ts" + } + } \ No newline at end of file diff --git a/packages/plugin-injective/src/action/auction.ts b/packages/plugin-injective/src/action/auction.ts new file mode 100644 index 000000000000..7d1c1e6f31c2 --- /dev/null +++ b/packages/plugin-injective/src/action/auction.ts @@ -0,0 +1,72 @@ +import { createGenericAction } from "./base"; +import * as AuctionTemplates from "@injective/template/auction"; +import * as AuctionExamples from "@injective/examples/auction"; +import * as AuctionSimilies from "@injective/similes/auction"; +export const GetAuctionModuleParamsAction = createGenericAction({ + name: "GET_AUCTION_MODULE_PARAMS", + description: "Fetches the auction module parameters", + template: AuctionTemplates.getAuctionModuleParamsTemplate, + examples: AuctionExamples.getAuctionModuleParamsExample, + similes: AuctionSimilies.getAuctionModuleParamsSimiles, + functionName: "getAuctionModuleParams", + validateContent: () => true, +}); + +export const GetAuctionModuleStateAction = createGenericAction({ + name: "GET_AUCTION_MODULE_STATE", + description: "Fetches the auction module state", + template: AuctionTemplates.getAuctionModuleStateTemplate, + examples: AuctionExamples.getAuctionModuleStateExample, + similes: AuctionSimilies.getAuctionModuleStateSimiles, + functionName: "getAuctionModuleState", + validateContent: () => true, +}); + +export const GetCurrentBasketAction = createGenericAction({ + name: "GET_CURRENT_BASKET", + description: "Fetches the current auction basket", + template: AuctionTemplates.getCurrentBasketTemplate, + examples: AuctionExamples.getCurrentBasketExample, + functionName: "getCurrentBasket", + similes: AuctionSimilies.getCurrentBasketSimiles, + validateContent: () => true, +}); + +export const GetAuctionRoundAction = createGenericAction({ + name: "GET_AUCTION_ROUND", + description: "Fetches details of a specific auction round", + template: AuctionTemplates.getAuctionRoundTemplate, + examples: AuctionExamples.getAuctionRoundExample, + similes: AuctionSimilies.getAuctionRoundSimiles, + functionName: "getAuctionRound", + validateContent: () => true, +}); + +export const GetAuctionsAction = createGenericAction({ + name: "GET_AUCTIONS", + description: "Fetches a list of auctions", + template: AuctionTemplates.getAuctionsTemplate, + examples: AuctionExamples.getAuctionsExample, + similes: AuctionSimilies.getAuctionsSimiles, + functionName: "getAuctions", + validateContent: () => true, +}); + +export const MsgBidAction = createGenericAction({ + name: "MSG_BID", + description: "Places a bid in an auction round", + template: AuctionTemplates.msgBidTemplate, + examples: AuctionExamples.msgBidExample, + similes: AuctionSimilies.MsgBidSimiles, + functionName: "msgBid", + validateContent: () => true, +}); + +export const AuctionActions = [ + GetAuctionModuleParamsAction, + GetAuctionModuleStateAction, + GetCurrentBasketAction, + GetAuctionRoundAction, + GetAuctionsAction, + MsgBidAction, +]; diff --git a/packages/plugin-injective/src/action/auth.ts b/packages/plugin-injective/src/action/auth.ts new file mode 100644 index 000000000000..ff82e083f31e --- /dev/null +++ b/packages/plugin-injective/src/action/auth.ts @@ -0,0 +1,107 @@ +import { createGenericAction } from "./base"; +import * as AuthTemplates from "@injective/template/auth"; +import * as AuthExamples from "@injective/examples/auth"; +import * as AuthSimilies from "@injective/similes/auth"; +// Auth Module Actions +export const GetAuthModuleParamsAction = createGenericAction({ + name: "GET_AUTH_MODULE_PARAMS", + description: "Fetches the authentication module parameters", + template: AuthTemplates.getAuthModuleParamsTemplate, + examples: AuthExamples.getAuthModuleParamsExample, + similes: AuthSimilies.getAuthModuleParamsSimiles, + functionName: "getAuthModuleParams", + validateContent: () => true, +}); + +export const GetAccountDetailsAction = createGenericAction({ + name: "GET_ACCOUNT_DETAILS", + description: "Fetches the details of the current account", + template: AuthTemplates.getAccountDetailsTemplate, + examples: AuthExamples.getAccountDetailsExample, + similes: AuthSimilies.getAccountDetailsSimiles, + functionName: "getAccountDetails", + validateContent: () => true, +}); + +export const GetAccountsAction = createGenericAction({ + name: "GET_ACCOUNTS", + description: "Fetches all accounts associated with the current address", + template: AuthTemplates.getAccountsTemplate, + examples: AuthExamples.getAccountsExample, + similes: AuthSimilies.getAccountsSimiles, + functionName: "getAccounts", + validateContent: () => true, +}); + +export const GetGrantsAction = createGenericAction({ + name: "GET_GRANTS", + description: "Fetches all grants based on provided parameters", + template: AuthTemplates.getGrantsTemplate, + examples: AuthExamples.getGrantsExample, + similes: AuthSimilies.getGrantsSimiles, + functionName: "getGrants", + validateContent: () => true, +}); + +export const GetGranterGrantsAction = createGenericAction({ + name: "GET_GRANTER_GRANTS", + description: "Fetches all grants granted by a specific granter", + template: AuthTemplates.getGranterGrantsTemplate, + examples: AuthExamples.getGranterGrantsExample, + similes: AuthSimilies.getGranterGrantsSimiles, + functionName: "getGranterGrants", + validateContent: () => true, +}); + +export const GetGranteeGrantsAction = createGenericAction({ + name: "GET_GRANTEE_GRANTS", + description: "Fetches all grants received by a specific grantee", + template: AuthTemplates.getGranteeGrantsTemplate, + examples: AuthExamples.getGranteeGrantsExample, + similes: AuthSimilies.getGranteeGrantsSimiles, + functionName: "getGranteeGrants", + validateContent: () => true, +}); + +export const MsgGrantAction = createGenericAction({ + name: "MSG_GRANT", + description: + "Grants authorization to a grantee to perform specific actions", + template: AuthTemplates.msgGrantTemplate, + examples: AuthExamples.msgGrantExample, + similes: AuthSimilies.msgGrantSimiles, + functionName: "msgGrant", + validateContent: () => true, +}); + +export const MsgExecAction = createGenericAction({ + name: "MSG_EXEC", + description: "Executes authorized messages on behalf of the grantee", + template: AuthTemplates.msgExecTemplate, + examples: AuthExamples.msgExecExample, + similes: AuthSimilies.msgExecSimiles, + functionName: "msgExec", + validateContent: () => true, +}); + +export const MsgRevokeAction = createGenericAction({ + name: "MSG_REVOKE", + description: "Revokes previously granted authorizations from a grantee", + template: AuthTemplates.msgRevokeTemplate, + examples: AuthExamples.msgRevokeExample, + similes: AuthSimilies.msgRevokeSimiles, + functionName: "msgRevoke", + validateContent: () => true, +}); + +export const AuthActions = [ + GetAuthModuleParamsAction, + GetAccountDetailsAction, + GetAccountsAction, + GetGrantsAction, + GetGranterGrantsAction, + GetGranteeGrantsAction, + MsgGrantAction, + MsgExecAction, + MsgRevokeAction, +]; diff --git a/packages/plugin-injective/src/action/bank.ts b/packages/plugin-injective/src/action/bank.ts new file mode 100644 index 000000000000..ace1a608c34d --- /dev/null +++ b/packages/plugin-injective/src/action/bank.ts @@ -0,0 +1,129 @@ +import { createGenericAction } from "./base"; +import * as BankTemplates from "@injective/template/bank"; +import * as BankExamples from "@injective/examples/bank"; +import * as BankSimilies from "@injective/similes/bank"; +// Query Actions +export const GetBankModuleParamsAction = createGenericAction({ + name: "GET_BANK_MODULE_PARAMS", + description: "Fetches the bank module parameters", + template: BankTemplates.getBankModuleParamsTemplate, + examples: BankExamples.getBankModuleParamsExample, + similes: BankSimilies.getBankModuleParamsSimiles, + functionName: "getBankModuleParams", + validateContent: () => true, +}); + +export const GetBankBalanceAction = createGenericAction({ + name: "GET_BANK_BALANCE", + description: "Fetches the balance of a specific account", + template: BankTemplates.getBankBalanceTemplate, + examples: BankExamples.getBankBalanceExample, + similes: BankSimilies.getBankBalanceSimiles, + functionName: "getBankBalance", + validateContent: () => true, +}); + +export const GetBankBalancesAction = createGenericAction({ + name: "GET_BANK_BALANCES", + description: "Fetches all balances for the current account", + template: BankTemplates.getBankBalancesTemplate, + examples: BankExamples.getBankBalancesExample, + similes: BankSimilies.getBankBalancesSimiles, + functionName: "getBankBalances", + validateContent: () => true, +}); + +export const GetTotalSupplyAction = createGenericAction({ + name: "GET_TOTAL_SUPPLY", + description: "Fetches the total supply of all denominations", + template: BankTemplates.getTotalSupplyTemplate, + examples: BankExamples.getTotalSupplyExample, + similes: BankSimilies.getTotalSupplySimiles, + functionName: "getTotalSupply", + validateContent: () => true, +}); + +export const GetAllTotalSupplyAction = createGenericAction({ + name: "GET_ALL_TOTAL_SUPPLY", + description: "Fetches the total supply for all denominations", + template: BankTemplates.getAllTotalSupplyTemplate, + examples: BankExamples.getAllTotalSupplyExample, + similes: BankSimilies.getAllTotalSupplySimiles, + functionName: "getAllTotalSupply", + validateContent: () => true, +}); + +export const GetSupplyOfAction = createGenericAction({ + name: "GET_SUPPLY_OF", + description: "Fetches the supply of a specific denomination", + template: BankTemplates.getSupplyOfTemplate, + examples: BankExamples.getSupplyOfExample, + similes: BankSimilies.getSupplyOfSimiles, + functionName: "getSupplyOf", + validateContent: () => true, +}); + +export const GetDenomsMetadataAction = createGenericAction({ + name: "GET_DENOMS_METADATA", + description: "Fetches metadata for all denominations", + template: BankTemplates.getDenomsMetadataTemplate, + examples: BankExamples.getDenomsMetadataExample, + similes: BankSimilies.getDenomMetadataSimiles, + functionName: "getDenomsMetadata", + validateContent: () => true, +}); + +export const GetDenomMetadataAction = createGenericAction({ + name: "GET_DENOM_METADATA", + description: "Fetches metadata for a specific denomination", + template: BankTemplates.getDenomMetadataTemplate, + examples: BankExamples.getDenomMetadataExample, + similes: BankSimilies.getDenomMetadataSimiles, + functionName: "getDenomMetadata", + validateContent: () => true, +}); + +export const GetDenomOwnersAction = createGenericAction({ + name: "GET_DENOM_OWNERS", + description: "Fetches the owners of a specific denomination", + template: BankTemplates.getDenomOwnersTemplate, + examples: BankExamples.getDenomOwnersExample, + similes: BankSimilies.getDenomOwnersSimiles, + functionName: "getDenomOwners", + validateContent: () => true, +}); + +// Transaction Actions +export const MsgSendAction = createGenericAction({ + name: "MSG_SEND", + description: "Sends tokens from one account to another", + template: BankTemplates.msgSendTemplate, + examples: BankExamples.msgSendExample, + similes: BankSimilies.msgSendSimiles, + functionName: "msgSend", + validateContent: () => true, +}); + +export const MsgMultiSendAction = createGenericAction({ + name: "MSG_MULTI_SEND", + description: "Sends tokens from multiple senders to multiple receivers", + template: BankTemplates.msgMultiSendTemplate, + examples: BankExamples.msgMultiSendExample, + similes: BankSimilies.msgMultiSendSimiles, + functionName: "msgMultiSend", + validateContent: () => true, +}); + +export const BankActions = [ + GetBankModuleParamsAction, + GetBankBalanceAction, + GetBankBalancesAction, + GetTotalSupplyAction, + GetAllTotalSupplyAction, + GetSupplyOfAction, + GetDenomsMetadataAction, + GetDenomMetadataAction, + GetDenomOwnersAction, + MsgSendAction, + MsgMultiSendAction, +]; diff --git a/packages/plugin-injective/src/action/base.ts b/packages/plugin-injective/src/action/base.ts new file mode 100644 index 000000000000..73933aeaafb8 --- /dev/null +++ b/packages/plugin-injective/src/action/base.ts @@ -0,0 +1,183 @@ +// createGenericAction.ts +import { ActionExample } from "@elizaos/core"; +import { + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + elizaLogger, + composeContext, + type Action, + generateObjectDeprecated, + generateText, +} from "@elizaos/core"; +import { InjectiveGrpcClient } from "@injective/modules"; + +/** + * Shape of the arguments to create our generic action. + * + * @property {string} name - The action name (e.g., "PLACE_BID", "CANCEL_BID"). + * @property {string} description - A brief summary of what the action does. + * @property {unknown} template - A template object (e.g., from @injective/template/auction) used for context composition. + * @property {any[]} examples - The example user/assistant interactions you want associated with this action. + * @property {string} functionName - The name of the method you want to call on `InjectiveGrpcClient` (e.g. `"msgBid"`). + * @property {(runtime: IAgentRuntime, content: any) => boolean} validateContent - Function to validate the AI-generated content. + */ +export interface CreateGenericActionArgs { + name: string; + similes: string[]; // (optional) synonyms or alternate names if you like + description: string; + template: string; + examples: any[]; + functionName: string; // e.g. "msgBid" + validateContent: (runtime: IAgentRuntime, content: any) => boolean; +} +/** + * A factory function that returns an ElizaOS Action. + */ +export function createGenericAction({ + name, + description, + template, + examples, + functionName, + similes, +}: CreateGenericActionArgs): Action { + return { + name, // e.g. "PLACE_BID" + description, // e.g. "Place a bid using the InjectiveGrpcClient" + examples: [examples as ActionExample[]], // I have manually casted the inputs here + similes, // (optional) synonyms or alternate names if you like + validate: async (_runtime, _message) => { + return true; + }, + + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + elizaLogger.debug(`create action: ${name}`); + // 1. Compose or update the state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + // 2. Compose a context from the given template + const context = composeContext({ + state, + template, + }); + + // 3. Use the AI model to generate content based on the context + const params = await generateObjectDeprecated({ + runtime, + context, + modelClass: ModelClass.LARGE, + }); + + // 5. Initialize the Injective client + try { + const rawNetwork = runtime.getSetting("INJECTIVE_NETWORK"); + const injectivePrivateKey = runtime.getSetting( + "INJECTIVE_PRIVATE_KEY" + ); + const ethPublicKey = runtime.getSetting("EVM_PUBLIC_KEY"); + const injPublicKey = runtime.getSetting("INJECTIVE_PUBLIC_KEY"); + const network = rawNetwork as + | "MainnetK8s" + | "MainnetLB" + | "Mainnet" + | "MainnetSentry" + | "MainnetOld" + | "Staging" + | "Internal" + | "TestnetK8s" + | "TestnetOld" + | "TestnetSentry" + | "Testnet" + | "Devnet1" + | "Devnet2" + | "Devnet" + | "Local"; + if ( + !injectivePrivateKey || + (!ethPublicKey && !injPublicKey) || + !network + ) { + throw new Error("Incorrect configuration"); + } + + const client = new InjectiveGrpcClient( + network, + injectivePrivateKey, + ethPublicKey, + injPublicKey + ); + + // 6. Dynamically call the specified functionName on the Injective client + const method = (client as any)[functionName]; + if (typeof method !== "function") { + throw new Error( + `Method "${functionName}" does not exist on InjectiveGrpcClient` + ); + } + //Function that the LLM extracted + console.log(`wil pass these params ${JSON.stringify(params)}}`); + + //Need to standardize this context params + const response = await method(params); + console.log( + `Recieved a response from InjectiveGrpcClient , response: ${JSON.stringify(response)}, ` + ); + // Lets convert the result of the response into something that can be read + if (response.success) { + console.log("Cleaning up the response"); + const additionalTemplate = `Extract the response from the following data, also make sure that you format the response into human readable format, make it the prettiest thing anyone can read basically a very nice comprehensive summary in a string format.`; + const responseResult = JSON.stringify(response.result); + const newContext = `${additionalTemplate}\n${responseResult}`; + const totalContext = `Previous chat context:${context} \n New information : ${newContext}`; + console.log( + `Got context, now will pass it on to llm ${totalContext}` + ); + const responseContent = await generateText({ + runtime, + context: totalContext, + modelClass: ModelClass.SMALL, + }); + + console.log("Response content:", responseContent); + if (callback) + callback({ + text: `Operation ${name} succeeded, ${responseContent}.`, + content: response.result, + }); + } else { + // 7. Trigger any callback with failure info + if (callback) { + callback({ + text: `Operation ${name} failed.\n${response.result}`, + content: response.result, + }); + } + } + + // Return true if code == 0 (success), else false + return response.result.code === 0; + } catch (error) { + if (callback) { + callback({ + text: `Error in ${name}: ${(error as Error).message}`, + content: { error: (error as Error).message }, + }); + } + return false; + } + }, + }; +} diff --git a/packages/plugin-injective/src/action/distribution.ts b/packages/plugin-injective/src/action/distribution.ts new file mode 100644 index 000000000000..590292f04786 --- /dev/null +++ b/packages/plugin-injective/src/action/distribution.ts @@ -0,0 +1,91 @@ +import { createGenericAction } from "./base"; +import * as DistributionTemplates from "@injective/template/distribution"; +import * as DistributionExamples from "@injective/examples/distribution"; +import * as DistributionSimilies from "@injective/similes/distribution"; + +export const GetDistributionModuleParamsAction = createGenericAction({ + name: "GET_DISTRIBUTION_MODULE_PARAMS", + description: "Fetches the distribution module parameters", + template: DistributionTemplates.getDistributionModuleParamsTemplate, + examples: DistributionExamples.getDistributionModuleParamsExample, + similes: DistributionSimilies.getDistributionModuleParamsSimiles, + functionName: "getDistributionModuleParams", + validateContent: () => true, +}); + +export const GetDelegatorRewardsForValidatorAction = createGenericAction({ + name: "GET_DELEGATOR_REWARDS_FOR_VALIDATOR", + description: "Fetches the delegator rewards for a specific validator", + template: DistributionTemplates.getDelegatorRewardsForValidatorTemplate, + examples: DistributionExamples.getDelegatorRewardsForValidatorExample, + similes: DistributionSimilies.getDelegatorRewardsForValidatorSimiles, + functionName: "getDelegatorRewardsForValidator", + validateContent: () => true, +}); + +export const GetDelegatorRewardsForValidatorNoThrowAction = createGenericAction( + { + name: "GET_DELEGATOR_REWARDS_FOR_VALIDATOR_NO_THROW", + description: + "Fetches the delegator rewards for a specific validator without throwing errors", + template: + DistributionTemplates.getDelegatorRewardsForValidatorNoThrowTemplate, + examples: + DistributionExamples.getDelegatorRewardsForValidatorNoThrowExample, + similes: + DistributionSimilies.getDelegatorRewardsForValidatorNoThrowSimiles, + functionName: "getDelegatorRewardsForValidatorNoThrow", + validateContent: () => true, + } +); + +export const GetDelegatorRewardsAction = createGenericAction({ + name: "GET_DELEGATOR_REWARDS", + description: "Fetches the rewards for a delegator", + template: DistributionTemplates.getDelegatorRewardsTemplate, + examples: DistributionExamples.getDelegatorRewardsExample, + similes: DistributionSimilies.getDelegatorRewardsSimiles, + functionName: "getDelegatorRewards", + validateContent: () => true, +}); + +export const GetDelegatorRewardsNoThrowAction = createGenericAction({ + name: "GET_DELEGATOR_REWARDS_NO_THROW", + description: "Fetches the rewards for a delegator without throwing errors", + template: DistributionTemplates.getDelegatorRewardsNoThrowTemplate, + examples: DistributionExamples.getDelegatorRewardsNoThrowExample, + similes: DistributionSimilies.getDelegatorRewardsNoThrowSimiles, + functionName: "getDelegatorRewardsNoThrow", + validateContent: () => true, +}); + +export const MsgWithdrawDelegatorRewardAction = createGenericAction({ + name: "MSG_WITHDRAW_DELEGATOR_REWARD", + description: "Withdraws delegator rewards from a specific validator", + template: DistributionTemplates.msgWithdrawDelegatorRewardTemplate, + examples: DistributionExamples.msgWithdrawDelegatorRewardExample, + similes: DistributionSimilies.msgWithdrawDelegatorRewardSimiles, + functionName: "msgWithdrawDelegatorReward", + validateContent: () => true, +}); + +export const MsgWithdrawValidatorCommissionAction = createGenericAction({ + name: "MSG_WITHDRAW_VALIDATOR_COMMISSION", + description: "Withdraws validator commission rewards", + template: DistributionTemplates.msgWithdrawValidatorCommissionTemplate, + examples: DistributionExamples.msgWithdrawValidatorCommissionExample, + similes: DistributionSimilies.msgWithdrawValidatorCommissionSimiles, + functionName: "msgWithdrawValidatorCommission", + validateContent: () => true, +}); + +// Export all actions as a group +export const DistributionActions = [ + GetDistributionModuleParamsAction, + GetDelegatorRewardsForValidatorAction, + GetDelegatorRewardsForValidatorNoThrowAction, + GetDelegatorRewardsAction, + GetDelegatorRewardsNoThrowAction, + MsgWithdrawDelegatorRewardAction, + MsgWithdrawValidatorCommissionAction, +]; diff --git a/packages/plugin-injective/src/action/exchange.ts b/packages/plugin-injective/src/action/exchange.ts new file mode 100644 index 000000000000..ba222a2e7a1f --- /dev/null +++ b/packages/plugin-injective/src/action/exchange.ts @@ -0,0 +1,847 @@ +import { createGenericAction } from "./base"; +import * as ExchangeTemplates from "@injective/template/exchange"; +import * as ExchangeExamples from "@injective/examples/exchange"; +import * as ExchangeSimiles from "@injective/similes/exchange"; +// Module Parameters and State Actions +export const GetModuleParamsAction = createGenericAction({ + name: "GET_MODULE_PARAMS", + description: "Fetches the exchange module parameters", + template: ExchangeTemplates.getModuleParamsTemplate, + examples: ExchangeExamples.getModuleParamsExample, + similes: ExchangeSimiles.getModuleParamsSimiles, + functionName: "getModuleParams", + validateContent: () => true, +}); +// Dont query exchange module state lmao +// export const GetModuleStateAction = createGenericAction({ +// name: "GET_MODULE_STATE", +// description: "Fetches the current state of the exchange module", +// template: ExchangeTemplates.getModuleStateTemplate, +// examples: ExchangeExamples.getModuleStateExample, +// functionName: "getModuleState", +// similes: ExchangeSimiles, +// validateContent: () => true, +// }); + +// Fee Discount Actions +export const GetFeeDiscountScheduleAction = createGenericAction({ + name: "GET_FEE_DISCOUNT_SCHEDULE", + description: "Fetches the fee discount schedule", + template: ExchangeTemplates.getFeeDiscountScheduleTemplate, + examples: ExchangeExamples.getFeeDiscountScheduleExample, + similes: ExchangeSimiles.getFeeDiscountScheduleSimiles, + functionName: "getFeeDiscountSchedule", + validateContent: () => true, +}); + +export const GetFeeDiscountAccountInfoAction = createGenericAction({ + name: "GET_FEE_DISCOUNT_ACCOUNT_INFO", + description: + "Fetches the fee discount information for a specific Injective address", + template: ExchangeTemplates.getFeeDiscountAccountInfoTemplate, + examples: ExchangeExamples.getFeeDiscountAccountInfoExample, + similes: ExchangeSimiles.getFeeDiscountAccountInfoSimiles, + functionName: "getFeeDiscountAccountInfo", + validateContent: () => true, +}); + +// Trading Rewards Actions +export const GetTradingRewardsCampaignAction = createGenericAction({ + name: "GET_TRADING_REWARDS_CAMPAIGN", + description: "Fetches the trading rewards campaign details", + template: ExchangeTemplates.getTradingRewardsCampaignTemplate, + examples: ExchangeExamples.getTradingRewardsCampaignExample, + similes: ExchangeSimiles.getTradingRewardsCampaignSimiles, + functionName: "getTradingRewardsCampaign", + validateContent: () => true, +}); + +export const GetTradeRewardPointsAction = createGenericAction({ + name: "GET_TRADE_REWARD_POINTS", + description: + "Fetches the trade reward points for specified Injective addresses", + template: ExchangeTemplates.getTradeRewardPointsTemplate, + examples: ExchangeExamples.getTradeRewardPointsExample, + similes: ExchangeSimiles.getTradeRewardPointsSimiles, + functionName: "getTradeRewardPoints", + validateContent: () => true, +}); + +export const GetPendingTradeRewardPointsAction = createGenericAction({ + name: "GET_PENDING_TRADE_REWARD_POINTS", + description: + "Fetches pending trade reward points for specified Injective addresses", + template: ExchangeTemplates.getPendingTradeRewardPointsTemplate, + examples: ExchangeExamples.getPendingTradeRewardPointsExample, + similes: ExchangeSimiles.getPendingTradeRewardPointsSimiles, + functionName: "getPendingTradeRewardPoints", + validateContent: () => true, +}); + +// Spot Market Actions +export const GetSpotMarketsAction = createGenericAction({ + name: "GET_SPOT_MARKETS", + description: "Fetches all spot markets", + template: ExchangeTemplates.getSpotMarketsTemplate, + examples: ExchangeExamples.getSpotMarketsExample, + similes: ExchangeSimiles.getSpotMarketSimiles, + functionName: "getSpotMarkets", + validateContent: () => true, +}); + +export const GetSpotMarketAction = createGenericAction({ + name: "GET_SPOT_MARKET", + description: "Fetches a specific spot market by its ID", + template: ExchangeTemplates.getSpotMarketTemplate, + examples: ExchangeExamples.getSpotMarketExample, + similes: ExchangeSimiles.getSpotMarketSimiles, + functionName: "getSpotMarket", + validateContent: () => true, +}); + +export const GetSpotOrdersAction = createGenericAction({ + name: "GET_SPOT_ORDERS", + description: "Fetches all spot orders", + template: ExchangeTemplates.getSpotOrdersTemplate, + examples: ExchangeExamples.getSpotOrdersExample, + similes: ExchangeSimiles.getSpotOrdersSimiles, + functionName: "getSpotOrders", + validateContent: () => true, +}); + +export const GetSpotOrderHistoryAction = createGenericAction({ + name: "GET_SPOT_ORDER_HISTORY", + description: "Fetches the history of spot orders", + template: ExchangeTemplates.getSpotOrderHistoryTemplate, + examples: ExchangeExamples.getSpotOrderHistoryExample, + similes: ExchangeSimiles.getSpotOrderHistorySimiles, + functionName: "getSpotOrderHistory", + validateContent: () => true, +}); + +export const GetSpotTradesAction = createGenericAction({ + name: "GET_SPOT_TRADES", + description: "Fetches all spot trades", + template: ExchangeTemplates.getSpotTradesTemplate, + examples: ExchangeExamples.getSpotTradesExample, + similes: ExchangeSimiles.getSpotTradesSimiles, + functionName: "getSpotTrades", + validateContent: () => true, +}); +//Orderbooks Action +export const GetDerivativeOrderbooksAction = createGenericAction({ + name: "GET_DERIVATIVE_ORDERBOOKS", + description: "Fetches all the derivative or perpetual orderbooks", + template: ExchangeTemplates.getOrderbooksV2Template, + examples: ExchangeExamples.getDerivativeOrderbooksV2Example, + similes: ExchangeSimiles.getDerivativeOrderbookSimiles, + functionName: "getDerivativeOrderbooksV2", + validateContent: () => true, +}); +export const GetDerivativeOrderbookAction = createGenericAction({ + name: "GET_DERIVATIVE_ORDERBOOK", + description: "Fetches a single derivative or perpetual orderbook", + template: ExchangeTemplates.getOrderbookTemplate, + examples: ExchangeExamples.getDerivativeOrderbookV2Example, + similes: ExchangeSimiles.getDerivativeOrderbookSimiles, + functionName: "getDerivativeOrderbookV2", + validateContent: () => true, +}); + +export const GetSpotOrderbooksAction = createGenericAction({ + name: "GET_SPOT_ORDERBOOKS", + description: "Fetches all the spot markets orderbooks", + template: ExchangeTemplates.getOrderbooksV2Template, + examples: ExchangeExamples.getSpotOrderbooksV2Example, + similes: ExchangeSimiles.getSpotOrderbooksSimiles, + functionName: "getSpotOrderbooksV2", + validateContent: () => true, +}); +export const GetSpotOrderbookAction = createGenericAction({ + name: "GET_SPOT_ORDERBOOK", + description: "Fetches a single spot market orderbook", + template: ExchangeTemplates.getOrderbookTemplate, + examples: ExchangeExamples.getSpotOrderbookV2Example, + similes: ExchangeSimiles.getSpotOrderbookSimiles, + functionName: "getSpotOrderbookV2", + validateContent: () => true, +}); + +// Derivative Market Actions +export const GetDerivativeMarketsAction = createGenericAction({ + name: "GET_DERIVATIVE_MARKETS", + description: "Fetches all derivative markets", + template: ExchangeTemplates.getDerivativeMarketsTemplate, + examples: ExchangeExamples.getDerivativeMarketsExample, + similes: ExchangeSimiles.getDerivativeMarketsSimiles, + functionName: "getDerivativeMarkets", + validateContent: () => true, +}); + +export const GetDerivativeMarketAction = createGenericAction({ + name: "GET_DERIVATIVE_MARKET", + description: "Fetches a specific derivative market by its ID", + template: ExchangeTemplates.getDerivativeMarketTemplate, + examples: ExchangeExamples.getDerivativeMarketExample, + similes: ExchangeSimiles.getDerivativeMarketSimiles, + functionName: "getDerivativeMarket", + validateContent: () => true, +}); + +export const GetDerivativeOrdersAction = createGenericAction({ + name: "GET_DERIVATIVE_ORDERS", + description: "Fetches all derivative orders", + template: ExchangeTemplates.getDerivativeOrdersTemplate, + examples: ExchangeExamples.getDerivativeOrdersExample, + similes: ExchangeSimiles.getDerivativeOrdersSimiles, + functionName: "getDerivativeOrders", + validateContent: () => true, +}); + +export const GetDerivativeOrderHistoryAction = createGenericAction({ + name: "GET_DERIVATIVE_ORDER_HISTORY", + description: "Fetches the history of derivative orders", + template: ExchangeTemplates.getDerivativeOrderHistoryTemplate, + examples: ExchangeExamples.getDerivativeOrderHistoryExample, + similes: ExchangeSimiles.getDerivativeOrderHistorySimiles, + functionName: "getDerivativeOrderHistory", + validateContent: () => true, +}); + +export const GetDerivativeTradesAction = createGenericAction({ + name: "GET_DERIVATIVE_TRADES", + description: "Fetches all derivative trades", + template: ExchangeTemplates.getDerivativeTradesTemplate, + examples: ExchangeExamples.getDerivativeTradesExample, + similes: ExchangeSimiles.getDerivativeTradesSimiles, + functionName: "getDerivativeTrades", + validateContent: () => true, +}); + +// Binary Options Actions +export const GetBinaryOptionsMarketsAction = createGenericAction({ + name: "GET_BINARY_OPTIONS_MARKETS", + description: "Fetches all binary options markets", + template: ExchangeTemplates.getBinaryOptionsMarketsTemplate, + examples: ExchangeExamples.getBinaryOptionsMarketsExample, + similes: ExchangeSimiles.getBinaryOptionsMarketsSimiles, + functionName: "getBinaryOptionsMarkets", + validateContent: () => true, +}); + +export const GetBinaryOptionsMarketAction = createGenericAction({ + name: "GET_BINARY_OPTIONS_MARKET", + description: "Fetches a specific binary options market by its ID", + template: ExchangeTemplates.getBinaryOptionsMarketTemplate, + examples: ExchangeExamples.getBinaryOptionsMarketExample, + similes: ExchangeSimiles.getBinaryOptionsMarketSimiles, + functionName: "getBinaryOptionsMarket", + validateContent: () => true, +}); + +// Exchange Positions Actions +export const GetExchangePositionsAction = createGenericAction({ + name: "GET_EXCHANGE_POSITIONS", + description: "Fetches all positions", + template: ExchangeTemplates.getExchangePositionsTemplate, + examples: ExchangeExamples.getExchangePositionsExample, + similes: ExchangeSimiles.getExchangePositionsSimiles, + functionName: "getExchangePositions", + validateContent: () => true, +}); + +export const GetPositionsV2Action = createGenericAction({ + name: "GET_POSITIONS_V2", + description: "Fetches all positions using version 2 of the API", + template: ExchangeTemplates.getPositionsV2Template, + examples: ExchangeExamples.getPositionsV2Example, + similes: ExchangeSimiles.getUserPositionsSimiles, + functionName: "getPositionsV2", + validateContent: () => true, +}); + +// Funding Rate Actions +export const GetFundingPaymentsAction = createGenericAction({ + name: "GET_FUNDING_PAYMENTS", + description: "Fetches all funding payments", + template: ExchangeTemplates.getFundingPaymentsTemplate, + examples: ExchangeExamples.getFundingPaymentsExample, + similes: ExchangeSimiles.getFundingPaymentsSimiles, + functionName: "getFundingPayments", + validateContent: () => true, +}); + +export const GetFundingRatesAction = createGenericAction({ + name: "GET_FUNDING_RATES", + description: "Fetches all funding rates", + template: ExchangeTemplates.getFundingRatesTemplate, + examples: ExchangeExamples.getFundingRatesExample, + similes: ExchangeSimiles.getFundingRatesSimiles, + functionName: "getFundingRates", + validateContent: () => true, +}); + +// Subaccount Actions +export const GetSubaccountTradeNonceAction = createGenericAction({ + name: "GET_SUBACCOUNT_TRADE_NONCE", + description: "Fetches the trade nonce for a specific subaccount", + template: ExchangeTemplates.getSubaccountTradeNonceTemplate, + examples: ExchangeExamples.getSubaccountTradeNonceExample, + similes: ExchangeSimiles.getSubaccountTradeNonceSimiles, + functionName: "getSubaccountTradeNonce", + validateContent: () => true, +}); + +export const GetSubaccountsListAction = createGenericAction({ + name: "GET_SUBACCOUNTS_LIST", + description: "Fetches the list of subaccounts for a specific address", + template: ExchangeTemplates.getSubaccountsListTemplate, + examples: ExchangeExamples.getSubaccountsListExample, + similes: ExchangeSimiles.getSubaccountsListSimiles, + functionName: "getSubaccountsList", + validateContent: () => true, +}); + +export const GetSubaccountBalancesListAction = createGenericAction({ + name: "GET_SUBACCOUNT_BALANCES_LIST", + description: "Fetches the balances list for a specific subaccount", + template: ExchangeTemplates.getSubaccountBalancesListTemplate, + examples: ExchangeExamples.getSubaccountBalancesListExample, + similes: ExchangeSimiles.getSubaccountBalancesListSimiles, + functionName: "getSubaccountBalancesList", + validateContent: () => true, +}); + +export const GetSubaccountHistoryAction = createGenericAction({ + name: "GET_SUBACCOUNT_HISTORY", + description: "Fetches the transfer history of a specific subaccount", + template: ExchangeTemplates.getSubaccountHistoryTemplate, + examples: ExchangeExamples.getSubaccountHistoryExample, + similes: ExchangeSimiles.getSubaccountHistorySimiles, + functionName: "getSubaccountHistory", + validateContent: () => true, +}); + +export const GetSubaccountOrderSummaryAction = createGenericAction({ + name: "GET_SUBACCOUNT_ORDER_SUMMARY", + description: "Fetches the order summary for a specific subaccount", + template: ExchangeTemplates.getSubaccountOrderSummaryTemplate, + examples: ExchangeExamples.getSubaccountOrderSummaryExample, + similes: ExchangeSimiles.getSubaccountOrderSummarySimiles, + functionName: "getSubaccountOrderSummary", + validateContent: () => true, +}); + +// Order Management Actions +export const GetOrderStatesAction = createGenericAction({ + name: "GET_ORDER_STATES", + description: "Fetches the states of orders", + template: ExchangeTemplates.getOrderStatesTemplate, + examples: ExchangeExamples.getOrderStatesExample, + similes: ExchangeSimiles.getOrderStatesSimiles, + functionName: "getOrderStates", + validateContent: () => true, +}); + +// Portfolio Actions +export const GetAccountPortfolioAction = createGenericAction({ + name: "GET_ACCOUNT_PORTFOLIO", + description: "Fetches the account portfolio for a specific address", + template: ExchangeTemplates.getAccountPortfolioTemplate, + examples: ExchangeExamples.getAccountPortfolioExample, + similes: ExchangeSimiles.getAccountPortfolioSimiles, + functionName: "getAccountPortfolio", + validateContent: () => true, +}); + +export const GetAccountPortfolioBalancesAction = createGenericAction({ + name: "GET_ACCOUNT_PORTFOLIO_BALANCES", + description: + "Fetches the balances of the account portfolio for a specific address", + template: ExchangeTemplates.getAccountPortfolioBalancesTemplate, + examples: ExchangeExamples.getAccountPortfolioBalancesExample, + similes: ExchangeSimiles.getAccountPortfolioBalancesSimiles, + functionName: "getAccountPortfolioBalances", + validateContent: () => true, +}); + +// Rewards and Opt-out Actions +export const GetIsOptedOutOfRewardsAction = createGenericAction({ + name: "GET_IS_OPTED_OUT_OF_REWARDS", + description: "Checks if an account is opted out of rewards", + template: ExchangeTemplates.getIsOptedOutOfRewardsTemplate, + examples: ExchangeExamples.getIsOptedOutOfRewardsExample, + similes: ExchangeSimiles.getIsOptedOutOfRewardsSimiles, + functionName: "getIsOptedOutOfRewards", + validateContent: () => true, +}); + +export const GetRewardsAction = createGenericAction({ + name: "GET_REWARDS", + description: "Fetches the rewards for specified Injective addresses", + template: ExchangeTemplates.getRewardsTemplate, + examples: ExchangeExamples.getRewardsExample, + similes: ExchangeSimiles.getRewardsSimiles, + functionName: "getRewards", + validateContent: () => true, +}); + +// Atomic Swap Actions +export const GetAtomicSwapHistoryAction = createGenericAction({ + name: "GET_ATOMIC_SWAP_HISTORY", + description: "Fetches the atomic swap history", + template: ExchangeTemplates.getAtomicSwapHistoryTemplate, + examples: ExchangeExamples.getAtomicSwapHistoryExample, + similes: ExchangeSimiles.getAtomicSwapHistorySimiles, + functionName: "getAtomicSwapHistory", + validateContent: () => true, +}); + +// Grid Strategy Actions +export const GetGridStrategiesAction = createGenericAction({ + name: "GET_GRID_STRATEGIES", + description: "Fetches all grid strategies", + template: ExchangeTemplates.getGridStrategiesTemplate, + examples: ExchangeExamples.getGridStrategiesExample, + similes: ExchangeSimiles.getGridStrategiesSimiles, + functionName: "getGridStrategies", + validateContent: () => true, +}); + +// Historical Data Actions +export const GetHistoricalBalanceAction = createGenericAction({ + name: "GET_HISTORICAL_BALANCE", + description: "Fetches the historical balance", + template: ExchangeTemplates.getHistoricalBalanceTemplate, + examples: ExchangeExamples.getHistoricalBalanceExample, + similes: ExchangeSimiles.getHistoricalBalanceSimiles, + functionName: "getHistoricalBalance", + validateContent: () => true, +}); + +export const GetHistoricalRpnlAction = createGenericAction({ + name: "GET_HISTORICAL_RPNL", + description: "Fetches the historical realized PnL (Rpnl)", + template: ExchangeTemplates.getHistoricalRpnlTemplate, + examples: ExchangeExamples.getHistoricalRpnlExample, + similes: ExchangeSimiles.getHistoricalRpnlSimiles, + functionName: "getHistoricalRpnl", + validateContent: () => true, +}); + +export const GetHistoricalVolumesAction = createGenericAction({ + name: "GET_HISTORICAL_VOLUMES", + description: "Fetches the historical trading volumes", + template: ExchangeTemplates.getHistoricalVolumesTemplate, + examples: ExchangeExamples.getHistoricalVolumesExample, + similes: ExchangeSimiles.getHistoricalVolumesSimiles, + functionName: "getHistoricalVolumes", + validateContent: () => true, +}); + +// Leaderboard Actions +export const GetPnlLeaderboardAction = createGenericAction({ + name: "GET_PNL_LEADERBOARD", + description: "Fetches the PnL leaderboard", + template: ExchangeTemplates.getPnlLeaderboardTemplate, + examples: ExchangeExamples.getPnlLeaderboardExample, + similes: ExchangeSimiles.getPnlLeaderboardSimiles, + functionName: "getPnlLeaderboard", + validateContent: () => true, +}); + +export const GetVolLeaderboardAction = createGenericAction({ + name: "GET_VOL_LEADERBOARD", + description: "Fetches the volume leaderboard", + template: ExchangeTemplates.getVolLeaderboardTemplate, + examples: ExchangeExamples.getVolLeaderboardExample, + similes: ExchangeSimiles.getVolLeaderboardSimiles, + functionName: "getVolLeaderboard", + validateContent: () => true, +}); + +export const GetPnlLeaderboardFixedResolutionAction = createGenericAction({ + name: "GET_PNL_LEADERBOARD_FIXED_RESOLUTION", + description: "Fetches the PnL leaderboard with fixed resolution", + template: ExchangeTemplates.getPnlLeaderboardFixedResolutionTemplate, + examples: ExchangeExamples.getPnlLeaderboardFixedResolutionExample, + similes: ExchangeSimiles.getPnlLeaderboardFixedResolutionSimiles, + functionName: "getPnlLeaderboardFixedResolution", + validateContent: () => true, +}); + +export const GetVolLeaderboardFixedResolutionAction = createGenericAction({ + name: "GET_VOL_LEADERBOARD_FIXED_RESOLUTION", + description: "Fetches the volume leaderboard with fixed resolution", + template: ExchangeTemplates.getVolLeaderboardFixedResolutionTemplate, + examples: ExchangeExamples.getVolLeaderboardFixedResolutionExample, + similes: ExchangeSimiles.getVolLeaderboardFixedResolutionSimiles, + functionName: "getVolLeaderboardFixedResolution", + validateContent: () => true, +}); + +// Denom Holders Action +export const GetDenomHoldersAction = createGenericAction({ + name: "GET_DENOM_HOLDERS", + description: "Fetches the holders of a specific denomination", + template: ExchangeTemplates.getDenomHoldersTemplate, + examples: ExchangeExamples.getDenomHoldersExample, + similes: ExchangeSimiles.getDenomHoldersSimiles, + functionName: "getDenomHolders", + validateContent: () => true, +}); + +// Message Actions for Order Management +export const MsgBatchCancelBinaryOptionsOrdersAction = createGenericAction({ + name: "MSG_BATCH_CANCEL_BINARY_OPTIONS_ORDERS", + description: "Broadcasts a message to batch cancel binary options orders", + template: ExchangeTemplates.msgBatchCancelBinaryOptionsOrdersTemplate, + examples: ExchangeExamples.msgBatchCancelBinaryOptionsOrdersExample, + similes: ExchangeSimiles.msgBatchCancelBinaryOptionsOrdersSimiles, + functionName: "msgBatchCancelBinaryOptionsOrders", + validateContent: () => true, +}); + +export const MsgBatchCancelDerivativeOrdersAction = createGenericAction({ + name: "MSG_BATCH_CANCEL_DERIVATIVE_ORDERS", + description: "Broadcasts a message to batch cancel derivative orders", + template: ExchangeTemplates.msgBatchCancelDerivativeOrdersTemplate, + examples: ExchangeExamples.msgBatchCancelDerivativeOrdersExample, + similes: ExchangeSimiles.msgBatchCancelDerivativeOrdersSimiles, + functionName: "msgBatchCancelDerivativeOrders", + validateContent: () => true, +}); + +export const MsgBatchCancelSpotOrdersAction = createGenericAction({ + name: "MSG_BATCH_CANCEL_SPOT_ORDERS", + description: "Broadcasts a message to batch cancel spot orders", + template: ExchangeTemplates.msgBatchCancelSpotOrdersTemplate, + examples: ExchangeExamples.msgBatchCancelSpotOrdersExample, + similes: ExchangeSimiles.msgBatchCancelSpotOrdersSimiles, + functionName: "msgBatchCancelSpotOrders", + validateContent: () => true, +}); + +export const MsgBatchUpdateOrdersAction = createGenericAction({ + name: "MSG_BATCH_UPDATE_ORDERS", + description: "Broadcasts a message to batch update orders", + template: ExchangeTemplates.msgBatchUpdateOrdersTemplate, + examples: ExchangeExamples.msgBatchUpdateOrdersExample, + similes: ExchangeSimiles.msgBatchUpdateOrdersSimiles, + functionName: "msgBatchUpdateOrders", + validateContent: () => true, +}); + +// Message Actions for Individual Orders +export const MsgCancelBinaryOptionsOrderAction = createGenericAction({ + name: "MSG_CANCEL_BINARY_OPTIONS_ORDER", + description: "Broadcasts a message to cancel a binary options order", + template: ExchangeTemplates.msgCancelBinaryOptionsOrderTemplate, + examples: ExchangeExamples.msgCancelBinaryOptionsOrderExample, + similes: ExchangeSimiles.msgCancelBinaryOptionsOrderSimiles, + functionName: "msgCancelBinaryOptionsOrder", + validateContent: () => true, +}); + +export const MsgCancelDerivativeOrderAction = createGenericAction({ + name: "MSG_CANCEL_DERIVATIVE_ORDER", + description: "Broadcasts a message to cancel a derivative order", + template: ExchangeTemplates.msgCancelDerivativeOrderTemplate, + examples: ExchangeExamples.msgCancelDerivativeOrderExample, + similes: ExchangeSimiles.msgCancelDerivativeOrderSimiles, + functionName: "msgCancelDerivativeOrder", + validateContent: () => true, +}); + +export const MsgCancelSpotOrderAction = createGenericAction({ + name: "MSG_CANCEL_SPOT_ORDER", + description: "Broadcasts a message to cancel a spot order", + template: ExchangeTemplates.msgCancelSpotOrderTemplate, + examples: ExchangeExamples.msgCancelSpotOrderExample, + similes: ExchangeSimiles.msgCancelSpotOrderSimiles, + functionName: "msgCancelSpotOrder", + validateContent: () => true, +}); + +// Message Actions for Creating Orders +export const MsgCreateBinaryOptionsLimitOrderAction = createGenericAction({ + name: "MSG_CREATE_BINARY_OPTIONS_LIMIT_ORDER", + description: "Broadcasts a message to create a binary options limit order", + template: ExchangeTemplates.msgCreateBinaryOptionsLimitOrderTemplate, + examples: ExchangeExamples.msgCreateBinaryOptionsLimitOrderExample, + similes: ExchangeSimiles.msgCreateBinaryOptionsLimitOrderSimiles, + functionName: "msgCreateBinaryOptionsLimitOrder", + validateContent: () => true, +}); + +export const MsgCreateBinaryOptionsMarketOrderAction = createGenericAction({ + name: "MSG_CREATE_BINARY_OPTIONS_MARKET_ORDER", + description: "Broadcasts a message to create a binary options market order", + template: ExchangeTemplates.msgCreateBinaryOptionsMarketOrderTemplate, + examples: ExchangeExamples.msgCreateBinaryOptionsMarketOrderExample, + similes: ExchangeSimiles.msgCreateBinaryOptionsMarketOrderSimiles, + functionName: "msgCreateBinaryOptionsMarketOrder", + validateContent: () => true, +}); + +export const MsgCreateDerivativeLimitOrderAction = createGenericAction({ + name: "MSG_CREATE_DERIVATIVE_LIMIT_ORDER", + description: "Broadcasts a message to create a derivative limit order", + template: ExchangeTemplates.msgCreateDerivativeLimitOrderTemplate, + examples: ExchangeExamples.msgCreateDerivativeLimitOrderExample, + similes: ExchangeSimiles.msgCreateDerivativeLimitOrderSimiles, + functionName: "msgCreateDerivativeLimitOrder", + validateContent: () => true, +}); + +export const MsgCreateDerivativeMarketOrderAction = createGenericAction({ + name: "MSG_CREATE_DERIVATIVE_MARKET_ORDER", + description: "Broadcasts a message to create a derivative market order", + template: ExchangeTemplates.msgCreateDerivativeMarketOrderTemplate, + examples: ExchangeExamples.msgCreateDerivativeMarketOrderExample, + similes: ExchangeSimiles.msgCreateDerivativeMarketOrderSimiles, + functionName: "msgCreateDerivativeMarketOrder", + validateContent: () => true, +}); + +export const MsgCreateSpotLimitOrderAction = createGenericAction({ + name: "MSG_CREATE_SPOT_LIMIT_ORDER", + description: "Broadcasts a message to create a spot limit order", + template: ExchangeTemplates.msgCreateSpotLimitOrderTemplate, + examples: ExchangeExamples.msgCreateSpotLimitOrderExample, + similes: ExchangeSimiles.msgCreateSpotLimitOrderSimiles, + functionName: "msgCreateSpotLimitOrder", + validateContent: () => true, +}); + +export const MsgCreateSpotMarketOrderAction = createGenericAction({ + name: "MSG_CREATE_SPOT_MARKET_ORDER", + description: "Broadcasts a message to create a spot market order", + template: ExchangeTemplates.msgCreateSpotMarketOrderTemplate, + examples: ExchangeExamples.msgCreateSpotMarketOrderExample, + similes: ExchangeSimiles.msgCreateSpotMarketOrderSimiles, + functionName: "msgCreateSpotMarketOrder", + validateContent: () => true, +}); + +// Message Actions for Deposits and Withdrawals +export const MsgDepositAction = createGenericAction({ + name: "MSG_DEPOSIT", + description: "Broadcasts a message to deposit funds", + template: ExchangeTemplates.msgDepositTemplate, + examples: ExchangeExamples.msgDepositExample, + similes: ExchangeSimiles.msgDepositSimiles, + functionName: "msgDeposit", + validateContent: () => true, +}); + +export const MsgWithdrawAction = createGenericAction({ + name: "MSG_WITHDRAW", + description: "Broadcasts a message to withdraw funds", + template: ExchangeTemplates.msgWithdrawTemplate, + examples: ExchangeExamples.msgWithdrawExample, + similes: ExchangeSimiles.msgWithdrawSimiles, + functionName: "msgWithdraw", + validateContent: () => true, +}); + +// Message Actions for Position Management +export const MsgIncreasePositionMarginAction = createGenericAction({ + name: "MSG_INCREASE_POSITION_MARGIN", + description: "Broadcasts a message to increase position margin", + template: ExchangeTemplates.msgIncreasePositionMarginTemplate, + examples: ExchangeExamples.msgIncreasePositionMarginExample, + similes: ExchangeSimiles.msgIncreasePositionMarginSimiles, + functionName: "msgIncreasePositionMargin", + validateContent: () => true, +}); + +// Message Actions for Market Administration +export const MsgInstantSpotMarketLaunchAction = createGenericAction({ + name: "MSG_INSTANT_SPOT_MARKET_LAUNCH", + description: "Broadcasts a message to instantly launch a spot market", + template: ExchangeTemplates.msgInstantSpotMarketLaunchTemplate, + examples: ExchangeExamples.msgInstantSpotMarketLaunchExample, + similes: ExchangeSimiles.msgInstantSpotMarketLaunchSimiles, + functionName: "msgInstantSpotMarketLaunch", + validateContent: () => true, +}); + +export const MsgLiquidatePositionAction = createGenericAction({ + name: "MSG_LIQUIDATE_POSITION", + description: "Broadcasts a message to liquidate a position", + template: ExchangeTemplates.msgLiquidatePositionTemplate, + examples: ExchangeExamples.msgLiquidatePositionExample, + similes: ExchangeSimiles.msgLiquidatePositionSimiles, + functionName: "msgLiquidatePosition", + validateContent: () => true, +}); + +export const MsgReclaimLockedFundsAction = createGenericAction({ + name: "MSG_RECLAIM_LOCKED_FUNDS", + description: "Broadcasts a message to reclaim locked funds", + template: ExchangeTemplates.msgReclaimLockedFundsTemplate, + examples: ExchangeExamples.msgReclaimLockedFundsExample, + similes: ExchangeSimiles.msgReclaimLockedFundsSimiles, + functionName: "msgReclaimLockedFunds", + validateContent: () => true, +}); + +export const MsgRewardsOptOutAction = createGenericAction({ + name: "MSG_REWARDS_OPT_OUT", + description: "Broadcasts a message to opt out of rewards", + template: ExchangeTemplates.msgRewardsOptOutTemplate, + examples: ExchangeExamples.msgRewardsOptOutExample, + similes: ExchangeSimiles.msgRewardsOptOutSimiles, + functionName: "msgRewardsOptOut", + validateContent: () => true, +}); + +export const MsgSignDataAction = createGenericAction({ + name: "MSG_SIGN_DATA", + description: "Broadcasts a message to sign data", + template: ExchangeTemplates.msgSignDataTemplate, + examples: ExchangeExamples.msgSignDataExample, + similes: ExchangeSimiles.msgSignDataSimiles, + functionName: "msgSignData", + validateContent: () => true, +}); + +export const MsgExternalTransferAction = createGenericAction({ + name: "MSG_EXTERNAL_TRANSFER", + description: "Broadcasts a message to perform an external transfer", + template: ExchangeTemplates.msgExternalTransferTemplate, + examples: ExchangeExamples.msgExternalTransferExample, + similes: ExchangeSimiles.msgExternalTransferSimiles, + functionName: "msgExternalTransfer", + validateContent: () => true, +}); + +export const MsgAdminUpdateBinaryOptionsMarketAction = createGenericAction({ + name: "MSG_ADMIN_UPDATE_BINARY_OPTIONS_MARKET", + description: + "Broadcasts a message to update a binary options market as an admin", + template: ExchangeTemplates.msgAdminUpdateBinaryOptionsMarketTemplate, + examples: ExchangeExamples.msgAdminUpdateBinaryOptionsMarketExample, + functionName: "msgAdminUpdateBinaryOptionsMarket", + similes: ExchangeSimiles.msgAdminUpdateBinaryOptionsMarketSimiles, + validateContent: () => true, +}); + +// Export all actions as a group +export const ExchangeActions = [ + // Module Parameters and State + GetModuleParamsAction, + + // Fee Discount + GetFeeDiscountScheduleAction, + GetFeeDiscountAccountInfoAction, + + // Trading Rewards + GetTradingRewardsCampaignAction, + GetTradeRewardPointsAction, + GetPendingTradeRewardPointsAction, + + // Orderbooks + GetDerivativeOrderbooksAction, + GetDerivativeOrderbookAction, + GetSpotOrderbooksAction, + GetSpotOrderbookAction, + + // Spot Market + GetSpotMarketsAction, + GetSpotMarketAction, + GetSpotOrdersAction, + GetSpotOrderHistoryAction, + GetSpotTradesAction, + + // Derivative Market + GetDerivativeMarketsAction, + GetDerivativeMarketAction, + GetDerivativeOrdersAction, + GetDerivativeOrderHistoryAction, + GetDerivativeTradesAction, + + // Binary Options + GetBinaryOptionsMarketsAction, + GetBinaryOptionsMarketAction, + + // Positions + GetExchangePositionsAction, + GetPositionsV2Action, + + // Funding + GetFundingPaymentsAction, + GetFundingRatesAction, + + // Subaccount + GetSubaccountTradeNonceAction, + GetSubaccountsListAction, + GetSubaccountBalancesListAction, + GetSubaccountHistoryAction, + GetSubaccountOrderSummaryAction, + + // Order Management + GetOrderStatesAction, + + // Portfolio + GetAccountPortfolioAction, + GetAccountPortfolioBalancesAction, + + // Rewards and Opt-out + GetIsOptedOutOfRewardsAction, + GetRewardsAction, + + // Atomic Swap + GetAtomicSwapHistoryAction, + + // Grid Strategy + GetGridStrategiesAction, + + // Historical Data + GetHistoricalBalanceAction, + GetHistoricalRpnlAction, + GetHistoricalVolumesAction, + + // Leaderboard + GetPnlLeaderboardAction, + GetVolLeaderboardAction, + GetPnlLeaderboardFixedResolutionAction, + GetVolLeaderboardFixedResolutionAction, + + // Denom Holders + GetDenomHoldersAction, + + // Message Actions - Order Management + MsgBatchCancelBinaryOptionsOrdersAction, + MsgBatchCancelDerivativeOrdersAction, + MsgBatchCancelSpotOrdersAction, + MsgBatchUpdateOrdersAction, + MsgCancelBinaryOptionsOrderAction, + MsgCancelDerivativeOrderAction, + MsgCancelSpotOrderAction, + + // Message Actions - Creating Orders + MsgCreateBinaryOptionsLimitOrderAction, + MsgCreateBinaryOptionsMarketOrderAction, + MsgCreateDerivativeLimitOrderAction, + MsgCreateDerivativeMarketOrderAction, + MsgCreateSpotLimitOrderAction, + MsgCreateSpotMarketOrderAction, + + // Message Actions - Deposits and Withdrawals + MsgDepositAction, + MsgWithdrawAction, + + // Message Actions - Position Management + MsgIncreasePositionMarginAction, + MsgInstantSpotMarketLaunchAction, + MsgLiquidatePositionAction, + + // Message Actions - Administration and Utils + MsgReclaimLockedFundsAction, + MsgRewardsOptOutAction, + MsgSignDataAction, + MsgExternalTransferAction, + MsgAdminUpdateBinaryOptionsMarketAction, +]; diff --git a/packages/plugin-injective/src/action/explorer.ts b/packages/plugin-injective/src/action/explorer.ts new file mode 100644 index 000000000000..5b7d5b029ecb --- /dev/null +++ b/packages/plugin-injective/src/action/explorer.ts @@ -0,0 +1,129 @@ +// src/actions/explorer/explorer-actions.ts +import { createGenericAction } from "./base"; +import * as ExplorerTemplates from "@injective/template/explorer"; +import * as ExplorerExamples from "@injective/examples/explorer"; +import * as ExplorerSimiles from "@injective/similes/explorer"; +export const GetTxByHashAction = createGenericAction({ + name: "GET_TX_BY_HASH", + description: "Fetches a transaction by its hash", + template: ExplorerTemplates.getTxByHashTemplate, + examples: ExplorerExamples.getTxByHashExample, + similes: ExplorerSimiles.getTxByHashSimiles, + functionName: "getTxByHash", + validateContent: () => true, +}); + +export const GetAccountTxAction = createGenericAction({ + name: "GET_ACCOUNT_TX", + description: "Fetches transactions for a specific account", + template: ExplorerTemplates.getAccountTxTemplate, + examples: ExplorerExamples.getAccountTxExample, + similes: ExplorerSimiles.getAccountTxSimiles, + functionName: "getAccountTx", + validateContent: () => true, +}); + +export const GetExplorerValidatorAction = createGenericAction({ + name: "GET_EXPLORER_VALIDATOR", + description: "Fetches details of a specific validator", + template: ExplorerTemplates.getValidatorTemplate, + examples: ExplorerExamples.getValidatorExample, + similes: ExplorerSimiles.getExplorerValidatorSimiles, + functionName: "getValidator", + validateContent: () => true, +}); + +export const GetValidatorUptimeAction = createGenericAction({ + name: "GET_VALIDATOR_UPTIME", + description: "Fetches the uptime of a specific validator", + template: ExplorerTemplates.getValidatorUptimeTemplate, + examples: ExplorerExamples.getValidatorUptimeExample, + similes: ExplorerSimiles.getExplorerValidatorUptimeSimiles, + functionName: "getValidatorUptime", + validateContent: () => true, +}); + +export const GetPeggyDepositTxsAction = createGenericAction({ + name: "GET_PEGGY_DEPOSIT_TXS", + description: "Fetches Peggy deposit transactions", + template: ExplorerTemplates.getPeggyDepositTxsTemplate, + examples: ExplorerExamples.getPeggyDepositTxsExample, + similes: ExplorerSimiles.getPeggyDepositTxsSimiles, + functionName: "getPeggyDepositTxs", + validateContent: () => true, +}); + +export const GetPeggyWithdrawalTxsAction = createGenericAction({ + name: "GET_PEGGY_WITHDRAWAL_TXS", + description: "Fetches Peggy withdrawal transactions", + template: ExplorerTemplates.getPeggyWithdrawalTxsTemplate, + examples: ExplorerExamples.getPeggyWithdrawalTxsExample, + similes: ExplorerSimiles.getPeggyWithdrawalTxsSimiles, + functionName: "getPeggyWithdrawalTxs", + validateContent: () => true, +}); + +export const GetBlocksAction = createGenericAction({ + name: "GET_BLOCKS", + description: "Fetches a list of blocks based on provided parameters", + template: ExplorerTemplates.getBlocksTemplate, + examples: ExplorerExamples.getBlocksExample, + similes: ExplorerSimiles.getBlocksSimiles, + functionName: "getBlocks", + validateContent: () => true, +}); + +export const GetBlockAction = createGenericAction({ + name: "GET_BLOCK", + description: "Fetches details of a specific block by its ID", + template: ExplorerTemplates.getBlockTemplate, + examples: ExplorerExamples.getBlockExample, + similes: ExplorerSimiles.getBlockSimiles, + functionName: "getBlock", + validateContent: () => true, +}); + +export const GetTxsAction = createGenericAction({ + name: "GET_TXS", + description: "Fetches a list of transactions based on provided parameters", + template: ExplorerTemplates.getTxsTemplate, + examples: ExplorerExamples.getTxsExample, + similes: ExplorerSimiles.getTxsSimiles, + functionName: "getTxs", + validateContent: () => true, +}); + +export const GetIBCTransferTxsAction = createGenericAction({ + name: "GET_IBC_TRANSFER_TXS", + description: "Fetches IBC transfer transactions", + template: ExplorerTemplates.getIBCTransferTxsTemplate, + examples: ExplorerExamples.getIBCTransferTxsExample, + similes: ExplorerSimiles.getIBCTransferTxsSimiles, + functionName: "getIBCTransferTxs", + validateContent: () => true, +}); + +export const GetExplorerStatsAction = createGenericAction({ + name: "GET_EXPLORER_STATS", + description: "Fetches explorer statistics", + template: ExplorerTemplates.getExplorerStatsTemplate, + examples: ExplorerExamples.getExplorerStatsExample, + similes: ExplorerSimiles.getExplorerStatsSimiles, + functionName: "getExplorerStats", + validateContent: () => true, +}); + +// Export all actions as a group +export const ExplorerActions = [ + GetTxByHashAction, + GetAccountTxAction, + GetExplorerValidatorAction, + GetValidatorUptimeAction, + GetPeggyDepositTxsAction, + GetPeggyWithdrawalTxsAction, + GetBlocksAction, + GetBlockAction, + GetTxsAction, + GetIBCTransferTxsAction, + GetExplorerStatsAction, +]; diff --git a/packages/plugin-injective/src/action/gov.ts b/packages/plugin-injective/src/action/gov.ts new file mode 100644 index 000000000000..5698c5d2d29b --- /dev/null +++ b/packages/plugin-injective/src/action/gov.ts @@ -0,0 +1,169 @@ +// src/actions/governance/governance-actions.ts +import { createGenericAction } from "./base"; +import * as GovTemplates from "@injective/template/gov"; +import * as GovExamples from "@injective/examples/gov"; +import * as GovSimiles from "@injective/similes/gov"; +export const GetGovernanceModuleParamsAction = createGenericAction({ + name: "GET_GOVERNANCE_MODULE_PARAMS", + description: "Fetches the governance module parameters", + template: GovTemplates.getGovernanceModuleParamsTemplate, + examples: GovExamples.getGovernanceModuleParamsExample, + functionName: "getGovernanceModuleParams", + similes: GovSimiles.getGovernanceModuleParamsSimiles, + validateContent: () => true, +}); + +export const GetProposalsAction = createGenericAction({ + name: "GET_PROPOSALS", + description: "Fetches a list of proposals based on provided parameters", + template: GovTemplates.getProposalsTemplate, + examples: GovExamples.getProposalsExample, + functionName: "getProposals", + similes: GovSimiles.getProposalsSimiles, + validateContent: () => true, +}); + +export const GetProposalAction = createGenericAction({ + name: "GET_PROPOSAL", + description: "Fetches details of a specific proposal by its ID", + template: GovTemplates.getProposalTemplate, + examples: GovExamples.getProposalExample, + similes: GovSimiles.getProposalsSimiles, + functionName: "getProposal", + validateContent: () => true, +}); + +export const GetProposalDepositsAction = createGenericAction({ + name: "GET_PROPOSAL_DEPOSITS", + description: "Fetches deposits for a specific proposal", + template: GovTemplates.getProposalDepositsTemplate, + examples: GovExamples.getProposalDepositsExample, + similes: GovSimiles.getProposalDepositsSimiles, + functionName: "getProposalDeposits", + validateContent: () => true, +}); + +export const GetProposalVotesAction = createGenericAction({ + name: "GET_PROPOSAL_VOTES", + description: "Fetches votes for a specific proposal", + template: GovTemplates.getProposalVotesTemplate, + examples: GovExamples.getProposalVotesExample, + similes: GovSimiles.getProposalVotesSimiles, + functionName: "getProposalVotes", + validateContent: () => true, +}); + +export const GetProposalTallyAction = createGenericAction({ + name: "GET_PROPOSAL_TALLY", + description: "Fetches the tally results of a specific proposal", + template: GovTemplates.getProposalTallyTemplate, + examples: GovExamples.getProposalTallyExample, + similes: GovSimiles.getProposalTallySimiles, + functionName: "getProposalTally", + validateContent: () => true, +}); + +// Message Actions +export const MsgSubmitProposalExpiryFuturesMarketLaunchAction = + createGenericAction({ + name: "MSG_SUBMIT_PROPOSAL_EXPIRY_FUTURES_MARKET_LAUNCH", + description: "Submits a proposal to launch an expiry futures market", + template: + GovTemplates.msgSubmitProposalExpiryFuturesMarketLaunchTemplate, + examples: GovExamples.msgSubmitProposalExpiryFuturesMarketLaunchExample, + similes: GovSimiles.msgSubmitProposalExpiryFuturesMarketLaunchSimiles, + functionName: "msgSubmitProposalExpiryFuturesMarketLaunch", + validateContent: () => true, + }); + +export const MsgSubmitProposalSpotMarketLaunchAction = createGenericAction({ + name: "MSG_SUBMIT_PROPOSAL_SPOT_MARKET_LAUNCH", + description: "Submits a proposal to launch a spot market", + template: GovTemplates.msgSubmitProposalSpotMarketLaunchTemplate, + examples: GovExamples.msgSubmitProposalSpotMarketLaunchExample, + similes: GovSimiles.msgSubmitProposalSpotMarketLaunchSimiles, + functionName: "msgSubmitProposalSpotMarketLaunch", + validateContent: () => true, +}); + +export const MsgSubmitProposalPerpetualMarketLaunchAction = createGenericAction( + { + name: "MSG_SUBMIT_PROPOSAL_PERPETUAL_MARKET_LAUNCH", + description: "Submits a proposal to launch a perpetual market", + template: GovTemplates.msgSubmitProposalPerpetualMarketLaunchTemplate, + examples: GovExamples.msgSubmitProposalPerpetualMarketLaunchExample, + similes: GovSimiles.msgSubmitProposalPerpetualMarketLaunchSimiles, + functionName: "msgSubmitProposalPerpetualMarketLaunch", + validateContent: () => true, + } +); + +export const MsgVoteAction = createGenericAction({ + name: "MSG_VOTE", + description: "Casts a vote on a specific proposal", + template: GovTemplates.msgVoteTemplate, + examples: GovExamples.msgVoteExample, + similes: GovSimiles.msgVoteSimiles, + functionName: "msgVote", + validateContent: () => true, +}); + +export const MsgSubmitTextProposalAction = createGenericAction({ + name: "MSG_SUBMIT_TEXT_PROPOSAL", + description: "Submits a text-based proposal", + template: GovTemplates.msgSubmitTextProposalTemplate, + examples: GovExamples.msgSubmitTextProposalExample, + similes: GovSimiles.msgSubmitTextProposalSimiles, + functionName: "msgSubmitTextProposal", + validateContent: () => true, +}); + +export const MsgSubmitProposalSpotMarketParamUpdateAction = createGenericAction( + { + name: "MSG_SUBMIT_PROPOSAL_SPOT_MARKET_PARAM_UPDATE", + description: "Submits a proposal to update spot market parameters", + template: GovTemplates.msgSubmitProposalSpotMarketParamUpdateTemplate, + examples: GovExamples.msgSubmitProposalSpotMarketParamUpdateExample, + similes: GovSimiles.msgSubmitProposalSpotMarketParamUpdateSimiles, + functionName: "msgSubmitProposalSpotMarketParamUpdate", + validateContent: () => true, + } +); + +export const MsgSubmitGenericProposalAction = createGenericAction({ + name: "MSG_SUBMIT_GENERIC_PROPOSAL", + description: "Submits a generic proposal", + template: GovTemplates.msgSubmitGenericProposalTemplate, + examples: GovExamples.msgSubmitGenericProposalExample, + similes: GovSimiles.msgSubmitGenericProposalSimiles, + functionName: "msgSubmitGenericProposal", + validateContent: () => true, +}); + +export const MsgGovDepositAction = createGenericAction({ + name: "MSG_GOV_DEPOSIT", + description: "Deposits tokens to a specific proposal", + similes: GovSimiles.msgGovDepositSimiles, + template: GovTemplates.msgGovDepositTemplate, + examples: GovExamples.msgGovDepositExample, + functionName: "msgGovDeposit", + validateContent: () => true, +}); + +// Export all actions as a group +export const GovActions = [ + GetGovernanceModuleParamsAction, + GetProposalsAction, + GetProposalAction, + GetProposalDepositsAction, + GetProposalVotesAction, + GetProposalTallyAction, + MsgSubmitProposalExpiryFuturesMarketLaunchAction, + MsgSubmitProposalSpotMarketLaunchAction, + MsgSubmitProposalPerpetualMarketLaunchAction, + MsgVoteAction, + MsgSubmitTextProposalAction, + MsgSubmitProposalSpotMarketParamUpdateAction, + MsgSubmitGenericProposalAction, + MsgGovDepositAction, +]; diff --git a/packages/plugin-injective/src/action/ibc.ts b/packages/plugin-injective/src/action/ibc.ts new file mode 100644 index 000000000000..09c9eff7645d --- /dev/null +++ b/packages/plugin-injective/src/action/ibc.ts @@ -0,0 +1,41 @@ +import { createGenericAction } from "./base"; +import * as IBCTemplates from "@injective/template/ibc"; +import * as IBCExamples from "@injective/examples/ibc"; +import * as IBCSimiles from "@injective/similes/ibc"; +export const GetDenomTraceAction = createGenericAction({ + name: "GET_DENOM_TRACE", + description: "Fetches the denomination trace for a specific hash", + template: IBCTemplates.getDenomTraceTemplate, + examples: IBCExamples.getDenomTraceExample, + similes: IBCSimiles.getDenomTraceSimiles, + functionName: "getDenomTrace", + validateContent: () => true, +}); + +export const GetDenomsTraceAction = createGenericAction({ + name: "GET_DENOMS_TRACE", + description: + "Fetches a list of denomination traces with optional pagination", + template: IBCTemplates.getDenomsTraceTemplate, + examples: IBCExamples.getDenomsTraceExample, + similes: IBCSimiles.getDenomsTraceSimiles, + functionName: "getDenomsTrace", + validateContent: () => true, +}); + +export const MsgIBCTransferAction = createGenericAction({ + name: "MSG_IBC_TRANSFER", + description: "Broadcasts an IBC transfer message", + template: IBCTemplates.msgIBCTransferTemplate, + examples: IBCExamples.msgIBCTransferExample, + similes: IBCSimiles.msgIBCTransferSimiles, + functionName: "msgIBCTransfer", + validateContent: () => true, +}); + +// Export all actions as a group +export const IbcActions = [ + GetDenomTraceAction, + GetDenomsTraceAction, + MsgIBCTransferAction, +]; diff --git a/packages/plugin-injective/src/action/index.ts b/packages/plugin-injective/src/action/index.ts new file mode 100644 index 000000000000..210527f612fc --- /dev/null +++ b/packages/plugin-injective/src/action/index.ts @@ -0,0 +1,54 @@ +import { AuctionActions } from "./auction"; +import { AuthActions } from "./auth"; +import { BankActions } from "./bank"; +import { DistributionActions } from "./distribution"; +import { ExchangeActions } from "./exchange"; +import { ExplorerActions } from "./explorer"; +import { GovActions } from "./gov"; +import { IbcActions } from "./ibc"; +import { InsuranceActions } from "./insurance"; +import { MintActions } from "./mint"; +import { MitoActions } from "./mito"; +import { PeggyActions } from "./peggy"; +import { PermissionsActions } from "./permissions"; +import { StakingActions } from "./staking"; +import { TokenFactoryActions } from "./token-factory"; +import { WasmActions } from "./wasm"; +// Exporting all actions +export * from "./auction"; +export * from "./auth"; +export * from "./bank"; +export * from "./distribution"; +export * from "./exchange"; +export * from "./explorer"; +export * from "./gov"; +export * from "./ibc"; +export * from "./insurance"; +export * from "./mint"; +export * from "./mito"; +export * from "./peggy"; +export * from "./permissions"; +export * from "./staking"; +export * from "./token-factory"; +export * from "./wasm"; + +export const InjectiveActions = [ + ...ExchangeActions, + ...AuctionActions, + ...AuthActions, + ...BankActions, + ...DistributionActions, + ...ExplorerActions, + ...GovActions, + ...IbcActions, + ...InsuranceActions, + ...MintActions, + ...MitoActions, + ...PeggyActions, + ...PermissionsActions, + ...StakingActions, + ...TokenFactoryActions, + ...WasmActions, +]; + +export default InjectiveActions; diff --git a/packages/plugin-injective/src/action/insurance.ts b/packages/plugin-injective/src/action/insurance.ts new file mode 100644 index 000000000000..c1298910c809 --- /dev/null +++ b/packages/plugin-injective/src/action/insurance.ts @@ -0,0 +1,99 @@ +import { createGenericAction } from "./base"; +import * as InsuranceTemplates from "@injective/template/insurance"; +import * as InsuranceExamples from "@injective/examples/insurance"; +import * as InsuranceSimiles from "@injective/similes/insurance"; +// Query Actions +export const GetInsuranceModuleParamsAction = createGenericAction({ + name: "GET_INSURANCE_MODULE_PARAMS", + description: "Fetches the insurance module parameters", + template: InsuranceTemplates.getInsuranceModuleParamsTemplate, + examples: InsuranceExamples.getInsuranceModuleParamsExample, + similes: InsuranceSimiles.getInsuranceModuleParamsSimiles, + functionName: "getInsuranceModuleParams", + validateContent: () => true, +}); + +export const GetInsuranceFundsAction = createGenericAction({ + name: "GET_INSURANCE_FUNDS", + description: "Fetches a list of all insurance funds", + template: InsuranceTemplates.getInsuranceFundsTemplate, + examples: InsuranceExamples.getInsuranceFundsExample, + similes: InsuranceSimiles.getInsuranceFundsSimiles, + functionName: "getInsuranceFunds", + validateContent: () => true, +}); + +export const GetInsuranceFundAction = createGenericAction({ + name: "GET_INSURANCE_FUND", + description: + "Fetches details of a specific insurance fund by its market ID", + template: InsuranceTemplates.getInsuranceFundTemplate, + examples: InsuranceExamples.getInsuranceFundExample, + similes: InsuranceSimiles.getInsuranceFundSimiles, + functionName: "getInsuranceFund", + validateContent: () => true, +}); + +export const GetEstimatedRedemptionsAction = createGenericAction({ + name: "GET_ESTIMATED_REDEMPTIONS", + description: "Fetches estimated redemptions based on provided parameters", + template: InsuranceTemplates.getEstimatedRedemptionsTemplate, + examples: InsuranceExamples.getEstimatedRedemptionsExample, + similes: InsuranceSimiles.getEstimatedRedemptionsSimiles, + functionName: "getEstimatedRedemptions", + validateContent: () => true, +}); + +export const GetPendingRedemptionsAction = createGenericAction({ + name: "GET_PENDING_REDEMPTIONS", + description: "Fetches pending redemptions based on provided parameters", + template: InsuranceTemplates.getPendingRedemptionsTemplate, + examples: InsuranceExamples.getPendingRedemptionsExample, + similes: InsuranceSimiles.getPendingRedemptionsSimiles, + functionName: "getPendingRedemptions", + validateContent: () => true, +}); + +// Message Actions +export const MsgCreateInsuranceFundAction = createGenericAction({ + name: "MSG_CREATE_INSURANCE_FUND", + description: "Broadcasts a message to create a new insurance fund", + template: InsuranceTemplates.msgCreateInsuranceFundTemplate, + examples: InsuranceExamples.msgCreateInsuranceFundExample, + similes: InsuranceSimiles.msgCreateInsuranceFundSimiles, + functionName: "msgCreateInsuranceFund", + validateContent: () => true, +}); + +export const MsgRequestRedemptionAction = createGenericAction({ + name: "MSG_REQUEST_REDEMPTION", + description: + "Broadcasts a message to request a redemption from an insurance fund", + template: InsuranceTemplates.msgRequestRedemptionTemplate, + examples: InsuranceExamples.msgRequestRedemptionExample, + similes: InsuranceSimiles.msgRequestRedemptionSimiles, + functionName: "msgRequestRedemption", + validateContent: () => true, +}); + +export const MsgUnderwriteAction = createGenericAction({ + name: "MSG_UNDERWRITE", + description: "Broadcasts a message to underwrite an insurance fund", + template: InsuranceTemplates.msgUnderwriteTemplate, + examples: InsuranceExamples.msgUnderwriteExample, + similes: InsuranceSimiles.msgUnderwriteSimiles, + functionName: "msgUnderwrite", + validateContent: () => true, +}); + +// Export all actions as a group +export const InsuranceActions = [ + GetInsuranceModuleParamsAction, + GetInsuranceFundsAction, + GetInsuranceFundAction, + GetEstimatedRedemptionsAction, + GetPendingRedemptionsAction, + MsgCreateInsuranceFundAction, + MsgRequestRedemptionAction, + MsgUnderwriteAction, +]; diff --git a/packages/plugin-injective/src/action/mint.ts b/packages/plugin-injective/src/action/mint.ts new file mode 100644 index 000000000000..a66fb7d64ce0 --- /dev/null +++ b/packages/plugin-injective/src/action/mint.ts @@ -0,0 +1,40 @@ +import { createGenericAction } from "./base"; +import * as MintTemplates from "@injective/template/mint"; +import * as MintExamples from "@injective/examples/mint"; +import * as MintSimiles from "@injective/similes/mint"; +export const GetMintModuleParamsAction = createGenericAction({ + name: "GET_MINT_MODULE_PARAMS", + description: "Fetches the parameters of the Mint module", + template: MintTemplates.getMintModuleParamsTemplate, + examples: MintExamples.getMintModuleParamsExample, + similes: MintSimiles.getMintModuleParamsSimiles, + functionName: "getMintModuleParams", + validateContent: () => true, +}); + +export const GetInflationAction = createGenericAction({ + name: "GET_INFLATION", + description: "Retrieves the current inflation rate", + template: MintTemplates.getInflationTemplate, + examples: MintExamples.getInflationExample, + similes: MintSimiles.getInflationSimiles, + functionName: "getInflation", + validateContent: () => true, +}); + +export const GetAnnualProvisionsAction = createGenericAction({ + name: "GET_ANNUAL_PROVISIONS", + description: "Obtains the annual provisions", + template: MintTemplates.getAnnualProvisionsTemplate, + examples: MintExamples.getAnnualProvisionsExample, + similes: MintSimiles.getAnnualProvisionsSimiles, + functionName: "getAnnualProvisions", + validateContent: () => true, +}); + +// Export all actions as a group +export const MintActions = [ + GetMintModuleParamsAction, + GetInflationAction, + GetAnnualProvisionsAction, +]; diff --git a/packages/plugin-injective/src/action/mito.ts b/packages/plugin-injective/src/action/mito.ts new file mode 100644 index 000000000000..8895499611b0 --- /dev/null +++ b/packages/plugin-injective/src/action/mito.ts @@ -0,0 +1,347 @@ +import { createGenericAction } from "./base"; +import * as MitoTemplates from "@injective/template/mito"; +import * as MitoExamples from "@injective/examples/mito"; +import * as MitoSimiles from "@injective/similes/mito"; +// Vault Related Actions +export const GetVaultAction = createGenericAction({ + name: "GET_VAULT", + description: "Fetches the details of a specific vault", + template: MitoTemplates.getVaultTemplate, + examples: MitoExamples.getVaultExample, + similes: MitoSimiles.getVaultSimiles, + functionName: "getVault", + validateContent: () => true, +}); + +export const GetVaultsAction = createGenericAction({ + name: "GET_VAULTS", + description: "Fetches a list of all vaults with optional filtering", + template: MitoTemplates.getVaultsTemplate, + examples: MitoExamples.getVaultsExample, + similes: MitoSimiles.getVaultSimiles, + functionName: "getVaults", + validateContent: () => true, +}); + +export const GetVaultsByHolderAddressAction = createGenericAction({ + name: "GET_VAULTS_BY_HOLDER_ADDRESS", + description: "Fetches vaults associated with a specific holder address", + template: MitoTemplates.getVaultsByHolderAddressTemplate, + examples: MitoExamples.getVaultsByHolderAddressExample, + similes: MitoSimiles.getVaultsByHolderAddressSimiles, + functionName: "getVaultsByHolderAddress", + validateContent: () => true, +}); + +// LP Token Related Actions +export const GetLpTokenPriceChartAction = createGenericAction({ + name: "GET_LP_TOKEN_PRICE_CHART", + description: "Retrieves the price chart data for LP tokens", + template: MitoTemplates.getLpTokenPriceChartTemplate, + examples: MitoExamples.getLpTokenPriceChartExample, + similes: MitoSimiles.getLpTokenPriceChartSimiles, + functionName: "getLpTokenPriceChart", + validateContent: () => true, +}); + +export const GetLPHoldersAction = createGenericAction({ + name: "GET_LP_HOLDERS", + description: "Retrieves a list of LP token holders", + template: MitoTemplates.getLPHoldersTemplate, + examples: MitoExamples.getLPHoldersExample, + similes: MitoSimiles.getLPHoldersSimiles, + functionName: "getLPHolders", + validateContent: () => true, +}); + +// TVL and Portfolio Actions +export const GetTVLChartAction = createGenericAction({ + name: "GET_TVL_CHART", + description: "Retrieves the Total Value Locked (TVL) chart data", + template: MitoTemplates.getTVLChartTemplate, + examples: MitoExamples.getTVLChartExample, + similes: MitoSimiles.getTVLChartSimiles, + functionName: "getTVLChart", + validateContent: () => true, +}); + +export const GetHolderPortfolioAction = createGenericAction({ + name: "GET_HOLDER_PORTFOLIO", + description: "Retrieves the portfolio details of a specific holder", + template: MitoTemplates.getHolderPortfolioTemplate, + examples: MitoExamples.getHolderPortfolioExample, + similes: MitoSimiles.getHolderPortfolioSimiles, + functionName: "getHolderPortfolio", + validateContent: () => true, +}); + +// Leaderboard Related Actions +export const GetLeaderboardAction = createGenericAction({ + name: "GET_LEADERBOARD", + description: "Retrieves the leaderboard for a specific epoch", + template: MitoTemplates.getLeaderboardTemplate, + examples: MitoExamples.getLeaderboardExample, + similes: MitoSimiles.getLeaderboardSimiles, + functionName: "getLeaderboard", + validateContent: () => true, +}); + +export const GetLeaderboardEpochsAction = createGenericAction({ + name: "GET_LEADERBOARD_EPOCHS", + description: "Retrieves the epochs associated with leaderboards", + template: MitoTemplates.getLeaderboardEpochsTemplate, + examples: MitoExamples.getLeaderboardEpochsExample, + similes: MitoSimiles.getLeaderboardEpochsSimiles, + functionName: "getLeaderboardEpochs", + validateContent: () => true, +}); + +// Transfer and History Actions +export const GetTransferHistoryAction = createGenericAction({ + name: "GET_TRANSFER_HISTORY", + description: "Fetches the transfer history based on provided parameters", + template: MitoTemplates.getTransferHistoryTemplate, + examples: MitoExamples.getTransferHistoryExample, + similes: MitoSimiles.getTransferHistorySimiles, + functionName: "getTransferHistory", + validateContent: () => true, +}); + +// Staking Related Actions +export const GetStakingPoolsAction = createGenericAction({ + name: "GET_STAKING_POOLS", + description: "Retrieves information about staking pools", + template: MitoTemplates.getStakingPoolsTemplate, + examples: MitoExamples.getStakingPoolsExample, + similes: MitoSimiles.getStakingPoolsSimiles, + functionName: "getStakingPools", + validateContent: () => true, +}); + +export const GetStakingHistoryAction = createGenericAction({ + name: "GET_STAKING_HISTORY", + description: "Retrieves the staking history based on provided parameters", + template: MitoTemplates.getStakingHistoryTemplate, + examples: MitoExamples.getStakingHistoryExample, + similes: MitoSimiles.getStakingHistorySimiles, + functionName: "getStakingHistory", + validateContent: () => true, +}); + +export const GetStakingRewardsByAccountAction = createGenericAction({ + name: "GET_STAKING_REWARDS_BY_ACCOUNT", + description: "Retrieves staking rewards for a specific account", + template: MitoTemplates.getStakingRewardsByAccountTemplate, + examples: MitoExamples.getStakingRewardsByAccountExample, + similes: MitoSimiles.getStakingRewardsByAccountSimiles, + functionName: "getStakingRewardsByAccount", + validateContent: () => true, +}); + +// Mission Related Actions +export const GetMissionsAction = createGenericAction({ + name: "GET_MISSIONS", + description: "Fetches a list of missions based on provided parameters", + template: MitoTemplates.getMissionsTemplate, + examples: MitoExamples.getMissionsExample, + similes: MitoSimiles.getMissionsSimiles, + functionName: "getMissions", + validateContent: () => true, +}); + +export const GetMissionLeaderboardAction = createGenericAction({ + name: "GET_MISSION_LEADERBOARD", + description: + "Retrieves the leaderboard for missions based on the user address", + template: MitoTemplates.getMissionLeaderboardTemplate, + examples: MitoExamples.getMissionLeaderboardExample, + similes: MitoSimiles.getMissionLeaderboardSimiles, + functionName: "getMissionLeaderboard", + validateContent: () => true, +}); + +// IDO Related Actions +export const GetIDOAction = createGenericAction({ + name: "GET_IDO", + description: "Fetches details of a specific Initial DEX Offering (IDO)", + template: MitoTemplates.getIDOTemplate, + examples: MitoExamples.getIDOExample, + similes: MitoSimiles.getIDOSimiles, + functionName: "getIDO", + validateContent: () => true, +}); + +export const GetIDOsAction = createGenericAction({ + name: "GET_IDOS", + description: "Retrieves a list of all IDOs with optional filtering", + template: MitoTemplates.getIDOsTemplate, + examples: MitoExamples.getIDOsExample, + similes: MitoSimiles.getIDOsSimiles, + functionName: "getIDOs", + validateContent: () => true, +}); + +export const GetIDOSubscribersAction = createGenericAction({ + name: "GET_IDO_SUBSCRIBERS", + description: "Fetches subscribers for a specific IDO", + template: MitoTemplates.getIDOSubscribersTemplate, + examples: MitoExamples.getIDOSubscribersExample, + similes: MitoSimiles.getIDOSubscribersSimiles, + functionName: "getIDOSubscribers", + validateContent: () => true, +}); + +export const GetIDOSubscriptionAction = createGenericAction({ + name: "GET_IDO_SUBSCRIPTION", + description: "Retrieves the subscription details for a specific IDO", + template: MitoTemplates.getIDOSubscriptionTemplate, + examples: MitoExamples.getIDOSubscriptionExample, + similes: MitoSimiles.getIDOSubscriptionSimiles, + functionName: "getIDOSubscription", + validateContent: () => true, +}); + +export const GetIDOActivitiesAction = createGenericAction({ + name: "GET_IDO_ACTIVITIES", + description: "Retrieves activities related to a specific IDO", + template: MitoTemplates.getIDOActivitiesTemplate, + examples: MitoExamples.getIDOActivitiesExample, + similes: MitoSimiles.getIDOActivitiesSimiles, + functionName: "getIDOActivities", + validateContent: () => true, +}); + +export const GetIDOWhitelistAction = createGenericAction({ + name: "GET_IDO_WHITELIST", + description: "Fetches the whitelist for a specific IDO", + template: MitoTemplates.getIDOWhitelistTemplate, + examples: MitoExamples.getIDOWhitelistExample, + similes: MitoSimiles.getIDOWhitelistSimiles, + functionName: "getIDOWhitelist", + validateContent: () => true, +}); + +export const GetClaimReferencesAction = createGenericAction({ + name: "GET_CLAIM_REFERENCES", + description: "Retrieves claim references based on provided parameters", + template: MitoTemplates.getClaimReferencesTemplate, + examples: MitoExamples.getClaimReferencesExample, + similes: MitoSimiles.getClaimReferencesSimiles, + functionName: "getClaimReferences", + validateContent: () => true, +}); + +export const GetLaunchpadSubscribeAction = createGenericAction({ + name: "GET_LAUNCHPAD_SUBSCRIBE", + description: "Subscribes to a launchpad offering", + template: MitoTemplates.getLaunchpadSubscribeTemplate, + examples: MitoExamples.getLaunchpadSubscribeExample, + similes: MitoSimiles.getLaunchpadSubscribeSimiles, + functionName: "getLaunchpadSubscribe", + validateContent: () => true, +}); + +export const GetLaunchpadClaimAction = createGenericAction({ + name: "GET_LAUNCHPAD_CLAIM", + description: "Claims tokens from a launchpad offering", + template: MitoTemplates.getLaunchpadClaimTemplate, + examples: MitoExamples.getLaunchpadClaimExample, + similes: MitoSimiles.getLaunchpadClaimSimiles, + functionName: "getLaunchpadClaim", + validateContent: () => true, +}); + +// Vault Related Actions +export const GetSubscribeVaultAction = createGenericAction({ + name: "GET_SUBSCRIBE_VAULT", + description: "Subscribes to a specific vault", + template: MitoTemplates.getSubscribeVaultTemplate, + examples: MitoExamples.getSubscribeVaultExample, + similes: MitoSimiles.getSubscribeVaultSimiles, + functionName: "getSubscribeVault", + validateContent: () => true, +}); + +export const GetInstantiateCPMMVaultAction = createGenericAction({ + name: "GET_INSTANTIATE_CPMM_VAULT", + description: "Creates a new CPMM vault instance", + template: MitoTemplates.getInstantiateCPMMVaultTemplate, + examples: MitoExamples.getInstantiateCPMMVaultExample, + similes: MitoSimiles.getInstantiateCPMMVaultSimiles, + functionName: "getInstantiateCPMMVault", + validateContent: () => true, +}); + +export const GetRedeemFromVaultAction = createGenericAction({ + name: "GET_REDEEM_FROM_VAULT", + description: "Redeems tokens from a specific vault", + template: MitoTemplates.getRedeemFromVaultTemplate, + examples: MitoExamples.getRedeemFromVaultExample, + similes: MitoSimiles.getRedeemFromVaultSimiles, + functionName: "getRedeemFromVault", + validateContent: () => true, +}); + +export const GetStakeVaultLPAction = createGenericAction({ + name: "GET_STAKE_VAULT_LP", + description: "Stakes LP tokens in a vault", + template: MitoTemplates.getStakeVaultLPTemplate, + examples: MitoExamples.getStakeVaultLPExample, + similes: MitoSimiles.getStakeVaultLPSimiles, + functionName: "getStakeVaultLP", + validateContent: () => true, +}); + +export const GetUnstakeVaultLPAction = createGenericAction({ + name: "GET_UNSTAKE_VAULT_LP", + description: "Unstakes LP tokens from a vault", + template: MitoTemplates.getUnstakeVaultLPTemplate, + examples: MitoExamples.getUnstakeVaultLPExample, + similes: MitoSimiles.getUnstakeVaultLPSimiles, + functionName: "getUnstakeVaultLP", + validateContent: () => true, +}); + +export const GetClaimVaultRewardsAction = createGenericAction({ + name: "GET_CLAIM_VAULT_REWARDS", + description: "Claims rewards from a vault", + template: MitoTemplates.getClaimVaultRewardsTemplate, + examples: MitoExamples.getClaimVaultRewardsExample, + similes: MitoSimiles.getClaimVaultRewardsSimiles, + functionName: "getClaimVaultRewards", + validateContent: () => true, +}); + +// Export all actions as a group +export const MitoActions = [ + GetVaultAction, + GetVaultsAction, + GetVaultsByHolderAddressAction, + GetLpTokenPriceChartAction, + GetLPHoldersAction, + GetTVLChartAction, + GetHolderPortfolioAction, + GetLeaderboardAction, + GetLeaderboardEpochsAction, + GetTransferHistoryAction, + GetStakingPoolsAction, + GetStakingHistoryAction, + GetStakingRewardsByAccountAction, + GetMissionsAction, + GetMissionLeaderboardAction, + GetIDOAction, + GetIDOsAction, + GetIDOSubscribersAction, + GetIDOSubscriptionAction, + GetIDOActivitiesAction, + GetIDOWhitelistAction, + GetClaimReferencesAction, + GetLaunchpadSubscribeAction, + GetLaunchpadClaimAction, + GetSubscribeVaultAction, + GetInstantiateCPMMVaultAction, + GetRedeemFromVaultAction, + GetStakeVaultLPAction, + GetUnstakeVaultLPAction, + GetClaimVaultRewardsAction, +]; diff --git a/packages/plugin-injective/src/action/peggy.ts b/packages/plugin-injective/src/action/peggy.ts new file mode 100644 index 000000000000..96ea69e04199 --- /dev/null +++ b/packages/plugin-injective/src/action/peggy.ts @@ -0,0 +1,29 @@ +import { createGenericAction } from "./base"; +import * as PeggyTemplates from "@injective/template/peggy"; +import * as PeggyExamples from "@injective/examples/peggy"; +import * as PeggySimiles from "@injective/similes/peggy"; +// Query Actions +export const GetPeggyModuleParamsAction = createGenericAction({ + name: "GET_PEGGY_MODULE_PARAMS", + description: "Fetches the parameters of the Peggy module", + template: PeggyTemplates.getPeggyModuleParamsTemplate, + examples: PeggyExamples.getPeggyModuleParamsExample, + functionName: "getPeggyModuleParams", + similes: PeggySimiles.getPeggyModuleParamsSimiles, + validateContent: () => true, +}); + +// Message Actions +export const MsgSendToEthAction = createGenericAction({ + name: "MSG_SEND_TO_ETH", + description: + "Broadcasts a message to send tokens to an Ethereum address via IBC transfer", + template: PeggyTemplates.msgSendToEthTemplate, + examples: PeggyExamples.msgSendToEthExample, + functionName: "msgSendToEth", + similes: PeggySimiles.msgSendToEthSimiles, + validateContent: () => true, +}); + +// Export all actions as a group +export const PeggyActions = [GetPeggyModuleParamsAction, MsgSendToEthAction]; diff --git a/packages/plugin-injective/src/action/permissions.ts b/packages/plugin-injective/src/action/permissions.ts new file mode 100644 index 000000000000..e87c8a8ed75f --- /dev/null +++ b/packages/plugin-injective/src/action/permissions.ts @@ -0,0 +1,74 @@ +import { createGenericAction } from "./base"; +import * as PermissionsTemplates from "@injective/template/permissions"; +import * as PermissionsExamples from "@injective/examples/permissions"; +import * as PermissionsSimiles from "@injective/similes/permissions"; +export const GetAddressesByRoleAction = createGenericAction({ + name: "GET_ADDRESSES_BY_ROLE", + description: "Fetches addresses associated with a specific role", + template: PermissionsTemplates.getAddressesByRoleTemplate, + examples: PermissionsExamples.getAddressesByRoleExample, + similes: PermissionsSimiles.getAddressesByRoleSimiles, + functionName: "getAddressesByRole", + validateContent: () => true, +}); + +export const GetAddressRolesAction = createGenericAction({ + name: "GET_ADDRESS_ROLES", + description: "Retrieves roles associated with a specific address", + template: PermissionsTemplates.getAddressRolesTemplate, + examples: PermissionsExamples.getAddressRolesExample, + similes: PermissionsSimiles.getAddressRolesSimiles, + functionName: "getAddressRoles", + validateContent: () => true, +}); + +export const GetAllNamespacesAction = createGenericAction({ + name: "GET_ALL_NAMESPACES", + description: "Retrieves all namespaces within the permissions module", + template: PermissionsTemplates.getAllNamespacesTemplate, + examples: PermissionsExamples.getAllNamespacesExample, + similes: PermissionsSimiles.getAllNamespacesSimiles, + functionName: "getAllNamespaces", + validateContent: () => true, +}); + +export const GetPermissionsModuleParamsAction = createGenericAction({ + name: "GET_PERMISSIONS_MODULE_PARAMS", + description: "Fetches the parameters of the Permissions module", + template: PermissionsTemplates.getPermissionsModuleParamsTemplate, + examples: PermissionsExamples.getPermissionsModuleParamsExample, + similes: PermissionsSimiles.getPermissionsModuleParamsSimiles, + functionName: "getPermissionsModuleParams", + validateContent: () => true, +}); + +export const GetNamespaceByDenomAction = createGenericAction({ + name: "GET_NAMESPACE_BY_DENOM", + description: + "Retrieves the namespace associated with a specific denomination", + template: PermissionsTemplates.getNamespaceByDenomTemplate, + examples: PermissionsExamples.getNamespaceByDenomExample, + similes: PermissionsSimiles.getNamespaceByDenomSimiles, + functionName: "getNamespaceByDenom", + validateContent: () => true, +}); + +export const GetVouchersForAddressAction = createGenericAction({ + name: "GET_VOUCHERS_FOR_ADDRESS", + description: "Retrieves vouchers associated with a specific address", + template: PermissionsTemplates.getVouchersForAddressTemplate, + examples: PermissionsExamples.getVouchersForAddressExample, + similes: PermissionsSimiles.getVouchersForAddressSimiles, + functionName: "getVouchersForAddress", + validateContent: () => true, +}); + +// Export all actions as a group +export const PermissionsActions = [ + GetAddressesByRoleAction, + GetAddressRolesAction, + GetAllNamespacesAction, + GetPermissionsModuleParamsAction, + GetNamespaceByDenomAction, + GetVouchersForAddressAction, +]; diff --git a/packages/plugin-injective/src/action/staking.ts b/packages/plugin-injective/src/action/staking.ts new file mode 100644 index 000000000000..45288e26fa47 --- /dev/null +++ b/packages/plugin-injective/src/action/staking.ts @@ -0,0 +1,280 @@ +import { createGenericAction } from "./base"; +import * as StakingTemplates from "@injective/template/staking"; +import * as StakingExamples from "@injective/examples/staking"; +import * as StakingSimiles from "@injective/similes/staking"; +// Module and Pool Query Actions +export const GetStakingModuleParamsAction = createGenericAction({ + name: "GET_STAKING_MODULE_PARAMS", + description: "Fetches the staking module parameters", + template: StakingTemplates.getStakingModuleParamsTemplate, + examples: StakingExamples.getStakingModuleParamsExample, + similes: StakingSimiles.getStakingModuleParamsSimiles, + functionName: "getStakingModuleParams", + validateContent: () => true, +}); + +export const GetPoolAction = createGenericAction({ + name: "GET_POOL", + description: "Fetches the staking pool information", + template: StakingTemplates.getPoolTemplate, + examples: StakingExamples.getPoolExample, + similes: StakingSimiles.getPoolSimiles, + functionName: "getPool", + validateContent: () => true, +}); + +// Validator Query Actions +export const GetValidatorsAction = createGenericAction({ + name: "GET_VALIDATORS", + description: "Fetches a list of validators with optional pagination", + template: StakingTemplates.getValidatorsTemplate, + examples: StakingExamples.getValidatorsExample, + similes: StakingSimiles.getValidatorSimiles, + functionName: "getValidators", + validateContent: () => true, +}); + +export const GetValidatorAction = createGenericAction({ + name: "GET_VALIDATOR", + description: "Fetches a specific validator by address", + template: StakingTemplates.getValidatorTemplate, + examples: StakingExamples.getValidatorExample, + similes: StakingSimiles.getValidatorSimiles, + functionName: "getValidator", + validateContent: () => true, +}); + +// Delegation Query Actions +export const GetValidatorDelegationsAction = createGenericAction({ + name: "GET_VALIDATOR_DELEGATIONS", + description: "Fetches delegations for a specific validator", + template: StakingTemplates.getValidatorDelegationsTemplate, + examples: StakingExamples.getValidatorDelegationsExample, + similes: StakingSimiles.getValidatorDelegationsSimiles, + functionName: "getValidatorDelegations", + validateContent: () => true, +}); + +export const GetValidatorDelegationsNoThrowAction = createGenericAction({ + name: "GET_VALIDATOR_DELEGATIONS_NO_THROW", + description: + "Fetches delegations for a specific validator without throwing an error", + template: StakingTemplates.getValidatorDelegationsNoThrowTemplate, + examples: StakingExamples.getValidatorDelegationsNoThrowExample, + similes: StakingSimiles.getValidatorDelegationsNoThrowSimiles, + functionName: "getValidatorDelegationsNoThrow", + validateContent: () => true, +}); + +export const GetValidatorUnbondingDelegationsAction = createGenericAction({ + name: "GET_VALIDATOR_UNBONDING_DELEGATIONS", + description: "Fetches unbonding delegations for a specific validator", + template: StakingTemplates.getValidatorUnbondingDelegationsTemplate, + examples: StakingExamples.getValidatorUnbondingDelegationsExample, + similes: StakingSimiles.getValidatorUnbondingDelegationsSimiles, + functionName: "getValidatorUnbondingDelegations", + validateContent: () => true, +}); + +export const GetValidatorUnbondingDelegationsNoThrowAction = + createGenericAction({ + name: "GET_VALIDATOR_UNBONDING_DELEGATIONS_NO_THROW", + description: + "Fetches unbonding delegations for a specific validator without throwing an error", + template: + StakingTemplates.getValidatorUnbondingDelegationsNoThrowTemplate, + examples: + StakingExamples.getValidatorUnbondingDelegationsNoThrowExample, + similes: StakingSimiles.getValidatorDelegationsNoThrowSimiles, + functionName: "getValidatorUnbondingDelegationsNoThrow", + validateContent: () => true, + }); + +export const GetDelegationAction = createGenericAction({ + name: "GET_DELEGATION", + description: "Fetches a specific delegation", + template: StakingTemplates.getDelegationTemplate, + examples: StakingExamples.getDelegationExample, + similes: StakingSimiles.getDelegationSimiles, + functionName: "getDelegation", + validateContent: () => true, +}); + +export const GetDelegationsAction = createGenericAction({ + name: "GET_DELEGATIONS", + description: "Fetches all delegations for a delegator", + template: StakingTemplates.getDelegationsTemplate, + examples: StakingExamples.getDelegationsExample, + similes: StakingSimiles.getDelegationsSimiles, + functionName: "getDelegations", + validateContent: () => true, +}); + +export const GetDelegationsNoThrowAction = createGenericAction({ + name: "GET_DELEGATIONS_NO_THROW", + description: + "Fetches all delegations for a delegator without throwing an error", + template: StakingTemplates.getDelegationsNoThrowTemplate, + examples: StakingExamples.getDelegationsNoThrowExample, + similes: StakingSimiles.getDelegationsNoThrowSimiles, + functionName: "getDelegationsNoThrow", + validateContent: () => true, +}); + +export const GetDelegatorsAction = createGenericAction({ + name: "GET_DELEGATORS", + description: "Fetches all delegators for a validator", + template: StakingTemplates.getDelegatorsTemplate, + examples: StakingExamples.getDelegatorsExample, + similes: StakingSimiles.getDelegatorsSimiles, + functionName: "getDelegators", + validateContent: () => true, +}); + +export const GetDelegatorsNoThrowAction = createGenericAction({ + name: "GET_DELEGATORS_NO_THROW", + description: + "Fetches all delegators for a validator without throwing an error", + template: StakingTemplates.getDelegatorsNoThrowTemplate, + examples: StakingExamples.getDelegatorsNoThrowExample, + similes: StakingSimiles.getDelegatorsNoThrowSimiles, + functionName: "getDelegatorsNoThrow", + validateContent: () => true, +}); + +export const GetUnbondingDelegationsAction = createGenericAction({ + name: "GET_UNBONDING_DELEGATIONS", + description: "Fetches all unbonding delegations for a delegator", + template: StakingTemplates.getUnbondingDelegationsTemplate, + examples: StakingExamples.getUnbondingDelegationsExample, + similes: StakingSimiles.getUnbondingDelegationsSimiles, + functionName: "getUnbondingDelegations", + validateContent: () => true, +}); + +export const GetUnbondingDelegationsNoThrowAction = createGenericAction({ + name: "GET_UNBONDING_DELEGATIONS_NO_THROW", + description: + "Fetches all unbonding delegations for a delegator without throwing an error", + template: StakingTemplates.getUnbondingDelegationsNoThrowTemplate, + examples: StakingExamples.getUnbondingDelegationsNoThrowExample, + similes: StakingSimiles.getUnbondingDelegationsNoThrowSimiles, + functionName: "getUnbondingDelegationsNoThrow", + validateContent: () => true, +}); + +export const GetReDelegationsAction = createGenericAction({ + name: "GET_REDELEGATIONS", + description: "Fetches all redelegations for a delegator", + template: StakingTemplates.getReDelegationsTemplate, + examples: StakingExamples.getReDelegationsExample, + similes: StakingSimiles.getReDelegationsSimiles, + functionName: "getReDelegations", + validateContent: () => true, +}); + +export const GetReDelegationsNoThrowAction = createGenericAction({ + name: "GET_REDELEGATIONS_NO_THROW", + description: + "Fetches all redelegations for a delegator without throwing an error", + template: StakingTemplates.getReDelegationsNoThrowTemplate, + examples: StakingExamples.getReDelegationsNoThrowExample, + similes: StakingSimiles.getReDelegationsNoThrowSimiles, + functionName: "getReDelegationsNoThrow", + validateContent: () => true, +}); + +// Message Actions +export const MsgBeginRedelegateAction = createGenericAction({ + name: "MSG_BEGIN_REDELEGATE", + description: "Broadcasts a message to begin redelegating tokens", + template: StakingTemplates.msgBeginRedelegateTemplate, + examples: StakingExamples.msgBeginRedelegateExample, + similes: StakingSimiles.msgBeginRedelegateSimiles, + functionName: "msgBeginRedelegate", + validateContent: () => true, +}); + +export const MsgDelegateAction = createGenericAction({ + name: "MSG_DELEGATE", + description: "Broadcasts a message to delegate tokens to a validator", + template: StakingTemplates.msgDelegateTemplate, + examples: StakingExamples.msgDelegateExample, + similes: StakingSimiles.msgDelegateSimiles, + functionName: "msgDelegate", + validateContent: () => true, +}); + +export const MsgUndelegateAction = createGenericAction({ + name: "MSG_UNDELEGATE", + description: "Broadcasts a message to undelegate tokens from a validator", + template: StakingTemplates.msgUndelegateTemplate, + examples: StakingExamples.msgUndelegateExample, + similes: StakingSimiles.msgUndelegateSimiles, + functionName: "msgUndelegate", + validateContent: () => true, +}); + +export const MsgCreateValidatorAction = createGenericAction({ + name: "MSG_CREATE_VALIDATOR", + description: "Broadcasts a message to create a new validator", + template: StakingTemplates.msgCreateValidatorTemplate, + examples: StakingExamples.msgCreateValidatorExample, + similes: StakingSimiles.msgCreateValidatorSimiles, + functionName: "msgCreateValidator", + validateContent: () => true, +}); + +export const MsgEditValidatorAction = createGenericAction({ + name: "MSG_EDIT_VALIDATOR", + description: "Broadcasts a message to edit an existing validator", + template: StakingTemplates.msgEditValidatorTemplate, + examples: StakingExamples.msgEditValidatorExample, + similes: StakingSimiles.msgEditValidatorSimiles, + functionName: "msgEditValidator", + validateContent: () => true, +}); + +export const MsgCancelUnbondingDelegationAction = createGenericAction({ + name: "MSG_CANCEL_UNBONDING_DELEGATION", + description: "Broadcasts a message to cancel an unbonding delegation", + template: StakingTemplates.msgCancelUnbondingDelegationTemplate, + examples: StakingExamples.msgCancelUnbondingDelegationExample, + similes: StakingSimiles.msgCancelUnbondingDelegationSimiles, + functionName: "msgCancelUnbondingDelegation", + validateContent: () => true, +}); + +// Export all actions as a group +export const StakingActions = [ + // Module and Pool Actions + GetStakingModuleParamsAction, + GetPoolAction, + + // Validator Actions + GetValidatorsAction, + GetValidatorAction, + + // Delegation Query Actions + GetValidatorDelegationsAction, + GetValidatorDelegationsNoThrowAction, + GetValidatorUnbondingDelegationsAction, + GetValidatorUnbondingDelegationsNoThrowAction, + GetDelegationAction, + GetDelegationsAction, + GetDelegationsNoThrowAction, + GetDelegatorsAction, + GetDelegatorsNoThrowAction, + GetUnbondingDelegationsAction, + GetUnbondingDelegationsNoThrowAction, + GetReDelegationsAction, + GetReDelegationsNoThrowAction, + + // Message Actions + MsgBeginRedelegateAction, + MsgDelegateAction, + MsgUndelegateAction, + MsgCreateValidatorAction, + MsgEditValidatorAction, + MsgCancelUnbondingDelegationAction, +]; diff --git a/packages/plugin-injective/src/action/token-factory.ts b/packages/plugin-injective/src/action/token-factory.ts new file mode 100644 index 000000000000..c92a31a6f062 --- /dev/null +++ b/packages/plugin-injective/src/action/token-factory.ts @@ -0,0 +1,111 @@ +import { createGenericAction } from "./base"; +import * as TokenFactoryTemplates from "@injective/template/token-factory"; +import * as TokenFactoryExamples from "@injective/examples/token-factory"; +import * as TokenFactorySimiles from "@injective/similes/token-factory"; +// Query Actions +export const GetDenomsFromCreatorAction = createGenericAction({ + name: "GET_DENOMS_FROM_CREATOR", + description: "Fetches all denominations created by a specific creator", + template: TokenFactoryTemplates.getDenomsFromCreatorTemplate, + examples: TokenFactoryExamples.getDenomsFromCreatorExample, + similes: TokenFactorySimiles.getDenomsFromCreatorSimiles, + functionName: "getDenomsFromCreator", + validateContent: () => true, +}); + +export const GetDenomAuthorityMetadataAction = createGenericAction({ + name: "GET_DENOM_AUTHORITY_METADATA", + description: "Fetches the authority metadata for a specific denomination", + template: TokenFactoryTemplates.getDenomAuthorityMetadataTemplate, + examples: TokenFactoryExamples.getDenomAuthorityMetadataExample, + similes: TokenFactorySimiles.getDenomAuthorityMetadataSimiles, + functionName: "getDenomAuthorityMetadata", + validateContent: () => true, +}); + +export const GetTokenFactoryModuleParamsAction = createGenericAction({ + name: "GET_TOKEN_FACTORY_MODULE_PARAMS", + description: "Fetches the parameters of the Token Factory module", + template: TokenFactoryTemplates.getTokenFactoryModuleParamsTemplate, + examples: TokenFactoryExamples.getTokenFactoryModuleParamsExample, + similes: TokenFactorySimiles.getTokenFactoryModuleParamsSimiles, + functionName: "getTokenFactoryModuleParams", + validateContent: () => true, +}); + +export const GetTokenFactoryModuleStateAction = createGenericAction({ + name: "GET_TOKEN_FACTORY_MODULE_STATE", + description: "Fetches the current state of the Token Factory module", + template: TokenFactoryTemplates.getTokenFactoryModuleStateTemplate, + examples: TokenFactoryExamples.getTokenFactoryModuleStateExample, + similes: TokenFactorySimiles.getTokenFactoryModuleStateSimiles, + functionName: "getTokenFactoryModuleState", + validateContent: () => true, +}); + +// Message Actions +export const MsgBurnAction = createGenericAction({ + name: "MSG_BURN", + description: "Broadcasts a message to burn tokens", + template: TokenFactoryTemplates.msgBurnTemplate, + examples: TokenFactoryExamples.msgBurnExample, + similes: TokenFactorySimiles.msgBurnSimiles, + functionName: "msgBurn", + validateContent: () => true, +}); + +export const MsgChangeAdminAction = createGenericAction({ + name: "MSG_CHANGE_ADMIN", + description: "Broadcasts a message to change the admin of a denomination", + template: TokenFactoryTemplates.msgChangeAdminTemplate, + examples: TokenFactoryExamples.msgChangeAdminExample, + similes: TokenFactorySimiles.msgChangeAdminSimiles, + functionName: "msgChangeAdmin", + validateContent: () => true, +}); + +export const MsgCreateDenomAction = createGenericAction({ + name: "MSG_CREATE_DENOM", + description: "Broadcasts a message to create a new denomination", + template: TokenFactoryTemplates.msgCreateDenomTemplate, + examples: TokenFactoryExamples.msgCreateDenomExample, + similes: TokenFactorySimiles.msgCreateDenomSimiles, + functionName: "msgCreateDenom", + validateContent: () => true, +}); + +export const MsgMintAction = createGenericAction({ + name: "MSG_MINT", + description: "Broadcasts a message to mint new tokens", + template: TokenFactoryTemplates.msgMintTemplate, + examples: TokenFactoryExamples.msgMintExample, + similes: TokenFactorySimiles.msgMintSimiles, + functionName: "msgMint", + validateContent: () => true, +}); + +export const MsgSetDenomMetadataAction = createGenericAction({ + name: "MSG_SET_DENOM_METADATA", + description: "Broadcasts a message to set metadata for a denomination", + template: TokenFactoryTemplates.msgSetDenomMetadataTemplate, + examples: TokenFactoryExamples.msgSetDenomMetadataExample, + similes: TokenFactorySimiles.msgSetDenomMetadataSimiles, + functionName: "msgSetDenomMetadata", + validateContent: () => true, +}); + +// Export all actions as a group +export const TokenFactoryActions = [ + // Query Actions + GetDenomsFromCreatorAction, + GetDenomAuthorityMetadataAction, + GetTokenFactoryModuleParamsAction, + GetTokenFactoryModuleStateAction, + + // Message Actions + MsgBurnAction, + MsgChangeAdminAction, + MsgCreateDenomAction, + MsgMintAction, + MsgSetDenomMetadataAction, +]; diff --git a/packages/plugin-injective/src/action/wasm.ts b/packages/plugin-injective/src/action/wasm.ts new file mode 100644 index 000000000000..06908519d43a --- /dev/null +++ b/packages/plugin-injective/src/action/wasm.ts @@ -0,0 +1,219 @@ +import { createGenericAction } from "./base"; +import * as WasmTemplates from "@injective/template/wasm"; +import * as WasmExamples from "@injective/examples/wasm"; +import * as WasmSimiles from "@injective/similes/wasm"; +// Contract Query Actions +export const GetContractAccountsBalanceAction = createGenericAction({ + name: "GET_CONTRACT_ACCOUNTS_BALANCE", + description: "Fetches the balance of contract accounts", + template: WasmTemplates.getContractAccountsBalanceTemplate, + examples: WasmExamples.getContractAccountsBalanceExample, + similes: WasmSimiles.getContractAccountsBalanceSimiles, + functionName: "getContractAccountsBalance", + validateContent: () => true, +}); + +export const GetContractStateAction = createGenericAction({ + name: "GET_CONTRACT_STATE", + description: "Fetches the state of a specific contract", + template: WasmTemplates.getContractStateTemplate, + examples: WasmExamples.getContractStateExample, + similes: WasmSimiles.getContractStateSimiles, + functionName: "getContractState", + validateContent: () => true, +}); + +export const GetContractInfoAction = createGenericAction({ + name: "GET_CONTRACT_INFO", + description: "Fetches information about a specific contract", + template: WasmTemplates.getContractInfoTemplate, + examples: WasmExamples.getContractInfoExample, + similes: WasmSimiles.getContractInfoSimiles, + functionName: "getContractInfo", + validateContent: () => true, +}); + +export const GetContractHistoryAction = createGenericAction({ + name: "GET_CONTRACT_HISTORY", + description: "Fetches the history of a specific contract", + template: WasmTemplates.getContractHistoryTemplate, + examples: WasmExamples.getContractHistoryExample, + similes: WasmSimiles.getContractHistorySimiles, + functionName: "getContractHistory", + validateContent: () => true, +}); + +export const GetSmartContractStateAction = createGenericAction({ + name: "GET_SMART_CONTRACT_STATE", + description: "Fetches the smart contract state based on a query", + template: WasmTemplates.getSmartContractStateTemplate, + examples: WasmExamples.getSmartContractStateExample, + similes: WasmSimiles.getSmartContractStateSimiles, + functionName: "getSmartContractState", + validateContent: () => true, +}); + +export const GetRawContractStateAction = createGenericAction({ + name: "GET_RAW_CONTRACT_STATE", + description: + "Fetches the raw state of a specific contract based on a query", + template: WasmTemplates.getRawContractStateTemplate, + examples: WasmExamples.getRawContractStateExample, + similes: WasmSimiles.getRawContractStateSimiles, + functionName: "getRawContractState", + validateContent: () => true, +}); + +// Code Query Actions +export const GetContractCodesAction = createGenericAction({ + name: "GET_CONTRACT_CODES", + description: "Fetches all contract codes with optional pagination", + template: WasmTemplates.getContractCodesTemplate, + examples: WasmExamples.getContractCodesExample, + similes: WasmSimiles.getContractCodesSimiles, + functionName: "getContractCodes", + validateContent: () => true, +}); + +export const GetContractCodeAction = createGenericAction({ + name: "GET_CONTRACT_CODE", + description: "Fetches a specific contract code by its ID", + template: WasmTemplates.getContractCodeTemplate, + examples: WasmExamples.getContractCodeExample, + similes: WasmSimiles.getContractCodeSimiles, + functionName: "getContractCode", + validateContent: () => true, +}); + +export const GetContractCodeContractsAction = createGenericAction({ + name: "GET_CONTRACT_CODE_CONTRACTS", + description: "Fetches contracts associated with a specific contract code", + template: WasmTemplates.getContractCodeContractsTemplate, + examples: WasmExamples.getContractCodeContractsExample, + similes: WasmSimiles.getContractCodeContractsSimiles, + functionName: "getContractCodeContracts", + validateContent: () => true, +}); + +// Message Actions +export const MsgStoreCodeAction = createGenericAction({ + name: "MSG_STORE_CODE", + description: "Broadcasts a message to store new contract code", + template: WasmTemplates.msgStoreCodeTemplate, + examples: WasmExamples.msgStoreCodeExample, + similes: WasmSimiles.msgStoreCodeSimiles, + functionName: "msgStoreCode", + validateContent: () => true, +}); + +export const MsgUpdateAdminAction = createGenericAction({ + name: "MSG_UPDATE_ADMIN", + description: "Broadcasts a message to update the admin of a contract", + template: WasmTemplates.msgUpdateAdminTemplate, + examples: WasmExamples.msgUpdateAdminExample, + similes: WasmSimiles.msgUpdateAdminSimiles, + functionName: "msgUpdateAdmin", + validateContent: () => true, +}); + +export const MsgExecuteContractAction = createGenericAction({ + name: "MSG_EXECUTE_CONTRACT", + description: "Broadcasts a message to execute a contract", + template: WasmTemplates.msgExecuteContractTemplate, + examples: WasmExamples.msgExecuteContractExample, + similes: WasmSimiles.msgExecuteContractSimiles, + functionName: "msgExecuteContract", + validateContent: () => true, +}); + +export const MsgMigrateContractAction = createGenericAction({ + name: "MSG_MIGRATE_CONTRACT", + description: + "Broadcasts a message to migrate a contract to a new code version", + template: WasmTemplates.msgMigrateContractTemplate, + examples: WasmExamples.msgMigrateContractExample, + similes: WasmSimiles.msgMigrateContractSimiles, + functionName: "msgMigrateContract", + validateContent: () => true, +}); + +export const MsgInstantiateContractAction = createGenericAction({ + name: "MSG_INSTANTIATE_CONTRACT", + description: "Broadcasts a message to instantiate a new contract", + template: WasmTemplates.msgInstantiateContractTemplate, + examples: WasmExamples.msgInstantiateContractExample, + similes: WasmSimiles.msgInstantiateContractSimiles, + functionName: "msgInstantiateContract", + validateContent: () => true, +}); + +export const MsgExecuteContractCompatAction = createGenericAction({ + name: "MSG_EXECUTE_CONTRACT_COMPAT", + description: + "Broadcasts a message to execute a contract using compatibility mode", + template: WasmTemplates.msgExecuteContractCompatTemplate, + examples: WasmExamples.msgExecuteContractCompatExample, + similes: WasmSimiles.msgExecuteContractCompatSimiles, + functionName: "msgExecuteContractCompat", + validateContent: () => true, +}); + +export const MsgPrivilegedExecuteContractAction = createGenericAction({ + name: "MSG_PRIVILEGED_EXECUTE_CONTRACT", + description: "Broadcasts a privileged message to execute a contract", + template: WasmTemplates.msgPrivilegedExecuteContractTemplate, + examples: WasmExamples.msgPrivilegedExecuteContractExample, + similes: WasmSimiles.msgPrivilegedExecuteContractSimiles, + functionName: "msgPrivilegedExecuteContract", + validateContent: () => true, +}); + +// WasmX Query Actions +export const GetWasmxModuleParamsAction = createGenericAction({ + name: "GET_WASMX_MODULE_PARAMS", + description: "Fetches the parameters of the WasmX module", + template: WasmTemplates.getWasmxModuleParamsTemplate, + examples: WasmExamples.getWasmxModuleParamsExample, + similes: WasmSimiles.getWasmxModuleParamsSimiles, + functionName: "getWasmxModuleParams", + validateContent: () => true, +}); + +export const GetWasmxModuleStateAction = createGenericAction({ + name: "GET_WASMX_MODULE_STATE", + description: "Fetches the current state of the WasmX module", + template: WasmTemplates.getWasmxModuleStateTemplate, + examples: WasmExamples.getWasmxModuleStateExample, + similes: WasmSimiles.getWasmxModuleStateSimiles, + functionName: "getWasmxModuleState", + validateContent: () => true, +}); + +// Export all actions as a group +export const WasmActions = [ + // Contract Query Actions + GetContractAccountsBalanceAction, + GetContractStateAction, + GetContractInfoAction, + GetContractHistoryAction, + GetSmartContractStateAction, + GetRawContractStateAction, + + // Code Query Actions + GetContractCodesAction, + GetContractCodeAction, + GetContractCodeContractsAction, + + // Message Actions + MsgStoreCodeAction, + MsgUpdateAdminAction, + MsgExecuteContractAction, + MsgMigrateContractAction, + MsgInstantiateContractAction, + MsgExecuteContractCompatAction, + MsgPrivilegedExecuteContractAction, + + // WasmX Query Actions + GetWasmxModuleParamsAction, + GetWasmxModuleStateAction, +]; diff --git a/packages/plugin-injective/src/index.ts b/packages/plugin-injective/src/index.ts new file mode 100644 index 000000000000..c0d5e1e49ddb --- /dev/null +++ b/packages/plugin-injective/src/index.ts @@ -0,0 +1,11 @@ +import InjectiveActions from "./action"; +import { Plugin } from "@elizaos/core"; +export const injectivePlugin: Plugin = { + name: "injective", + description: "A plugin for interacting with the Injective blockchain", + actions: InjectiveActions, + evaluators: [], + providers: [], //TODO: Integrate with injective-trader to run MM and Taking Strats +}; + +export default injectivePlugin; diff --git a/packages/plugin-injective/tsconfig.json b/packages/plugin-injective/tsconfig.json new file mode 100644 index 000000000000..5d3513283048 --- /dev/null +++ b/packages/plugin-injective/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "src", + "injective-sdk-client-ts" + ], + "baseUrl": ".", + "paths": { + "@injective/*": [ + "injective-sdk-client-ts/src/*" + ] + }, + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts", + "injective-sdk-client-ts/**/*.ts", + ] +} \ No newline at end of file diff --git a/packages/plugin-injective/tsup.config.ts b/packages/plugin-injective/tsup.config.ts new file mode 100644 index 000000000000..787731916594 --- /dev/null +++ b/packages/plugin-injective/tsup.config.ts @@ -0,0 +1,50 @@ +import { defineConfig } from 'tsup'; +import { builtinModules } from 'module'; +import pkg from './package.json'; + +export default defineConfig({ + entry: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + sourcemap: true, + clean: true, + splitting: false, + minify: false, + platform: 'node', + target: 'node23', + + // Bundle problematic packages + noExternal: [ + 'form-data', + 'combined-stream', + 'delayed-stream', + 'mime-types', + 'mime-db', + 'asynckit', + 'util' + ], + + external: [ + ...builtinModules.filter(mod => mod !== 'util'), + ...Object.keys(pkg.dependencies || {}) + .filter(dep => !['form-data', 'combined-stream', 'delayed-stream', + 'mime-types', 'mime-db', 'asynckit'].includes(dep)) + ], + + esbuildOptions: (options) => { + options.mainFields = ['module', 'main']; + options.banner = { + js: ` + import { createRequire } from 'module'; + import { fileURLToPath } from 'url'; + import { dirname } from 'path'; + const require = createRequire(import.meta.url); + const __filename = fileURLToPath(import.meta.url); + const __dirname = dirname(__filename); + ` + }; + options.define = { + 'process.env.NODE_ENV': '"production"' + }; + } +}); \ No newline at end of file diff --git a/packages/plugin-intiface/package.json b/packages/plugin-intiface/package.json index 289f2fcf13e8..74b3a27707b4 100644 --- a/packages/plugin-intiface/package.json +++ b/packages/plugin-intiface/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-intiface", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-iq6900/.npmignore b/packages/plugin-iq6900/.npmignore new file mode 100644 index 000000000000..078562eceabb --- /dev/null +++ b/packages/plugin-iq6900/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-iq6900/README.md b/packages/plugin-iq6900/README.md new file mode 100644 index 000000000000..32b5718a1327 --- /dev/null +++ b/packages/plugin-iq6900/README.md @@ -0,0 +1,28 @@ +# Code In Plugin For Eliza + +## Description +Through IQ6900's new inscription standard "Code-In", powerful inscription functionality is provided to Eliza. +Engrave Eliza on the blockchain forever. +All your Character JSON files are input onto the blockchain without compression. +Everyone can read your agent from blocks forever. + +## inscription +- **Code-in your eliza**: Go to the site and engrave your character file on-chain. https://elizacodein.com/ + +## Onchain git +- **Commit your update**: +Update your files anytime. +On our site, your files are managed in a format similar to GitHub, +and our plugin automatically loads your latest agent file. + +## Let's get started +- **Edit your .env**: write down IQ_WALLET_ADDRESS to your wallet address that you used on website. +To be sure, right after inscription, wait about 5 minutes and just type pmpn start. You are now all set. + + +You have engraved an eternal record. +Imagine, someone could develop your agent 200 years from now. + +Many things will be updated. + +Learn more: https://iq6900.gitbook.io/iq6900/eliza-code-in \ No newline at end of file diff --git a/packages/plugin-iq6900/eslint.config.mjs b/packages/plugin-iq6900/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-iq6900/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-iq6900/package.json b/packages/plugin-iq6900/package.json new file mode 100644 index 000000000000..e2f4550c3ac9 --- /dev/null +++ b/packages/plugin-iq6900/package.json @@ -0,0 +1,20 @@ +{ + "name": "@elizaos/plugin-iq6900", + "version": "0.1.5-alpha.5", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@solana/web3.js": "1.95.8" + }, + "devDependencies": { + "tsup": "8.3.5", + "@types/node": "^20.0.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } +} diff --git a/packages/plugin-iq6900/src/functions/bringIQData.ts b/packages/plugin-iq6900/src/functions/bringIQData.ts new file mode 100644 index 000000000000..28000d0e1b80 --- /dev/null +++ b/packages/plugin-iq6900/src/functions/bringIQData.ts @@ -0,0 +1,186 @@ +import { elizaLogger } from "@elizaos/core"; + +import { Connection, PublicKey } from "@solana/web3.js"; +const network = process.env.IQSOlRPC||"https://api.mainnet-beta.solana.com"; +const stringAddress = process.env.IQ_WALLET_ADDRESS; + +const connection = new Connection(network, "confirmed"); + +const iqHost = "https://solanacontractapi.uc.r.appspot.com"; + +async function fetchDBPDA(): Promise { + try { + if(stringAddress){ + elizaLogger.info("Connecting to Solana...(IQ6900)"); + elizaLogger.info("Your Address:" + stringAddress); + const response = await fetch(`${iqHost}/getDBPDA/${stringAddress}`); + const data = await response.json(); + if (response.ok) { + return data.DBPDA as string; + } else { + throw new Error(data.error || "Failed to fetch PDA"); + } + }else{ + return "null"; + } + } catch (error) { + console.error("Error fetching PDA:", error); + return "null"; + } +} + +async function convertTextToEmoji(text: string) { + return text.replace(/\/u([0-9A-Fa-f]{4,6})/g, (match, code) => { + return String.fromCodePoint(parseInt(code, 16)); + }); +} + +async function fetchTransactionInfo(txId: string) { + try { + const response = await fetch(`${iqHost}/get_transaction_info/${txId}`); + if (response.ok) { + const data = await response.json(); + return data.argData; + } + } catch (error) { + elizaLogger.error("Error fetching transaction info:", error); + } + return null; +} + +async function getTransactionData(transactionData: { + method: string; + code: string; + decode_break: number; + before_tx: string; +}): Promise<{ data: any; before_tx: string }> { + if ("code" in transactionData) { + return { + data: { + code: transactionData.code, + method: transactionData.method, + decode_break: transactionData.decode_break, + }, + before_tx: transactionData.before_tx, + }; + } else { + return { + data: "fail", + before_tx: "fail", + }; + } +} + +async function extractCommitMessage(dataTxid: string): Promise { + const txInfo = await fetchTransactionInfo(dataTxid); + if (!txInfo) return "null"; + + const type_field = txInfo.type_field || "null"; + + if (type_field === "json") { + const offset = txInfo.offset; + return offset.split("commit: ")[1]; + } else { + return "null"; + } +} + +async function bringCode(dataTxid: string) { + const txInfo = await fetchTransactionInfo(dataTxid); + if (!txInfo) + return { + json_data: "false", + commit_message: "false", + }; + + const tail_tx = txInfo.tail_tx || "null"; + const offset = txInfo.offset || "null"; + let chunks = []; + let before_tx = tail_tx; + if (before_tx == "null") + return { + json_data: "false", + commit_message: "false", + }; + + while (before_tx !== "Genesis") { + if (before_tx) { + elizaLogger.info("Chunks: " + before_tx); + const chunk = await fetchTransactionInfo(before_tx); + if (!chunk) { + elizaLogger.error("No chunk found."); + return { + json_data: "false", + commit_message: "false", + }; + } + + const chunkData = await getTransactionData(chunk); + if (chunkData.data == "null") { + console.error("chunk data undefined"); + return { + json_data: "false", + commit_message: "false", + }; + } else { + chunks.push(chunkData.data.code); + before_tx = chunkData.before_tx; + } + } else { + console.error("before data undefined"); + return { + json_data: "false", + commit_message: "false", + }; + } + } + + const textList = chunks.reverse(); + const textData = textList.join(""); + + return { + json_data: await convertTextToEmoji(textData), + commit_message: offset, + }; +} + +async function fetchSignaturesForAddress( + dbAddress: PublicKey +): Promise { + try { + elizaLogger.info("Find Your Signature...(IQ6900)"); + const signatures = await connection.getSignaturesForAddress(dbAddress, { + limit: 20, + }); + return signatures.map((sig) => sig.signature); + } catch (error) { + console.error("Error fetching signatures:", error); + return []; + } +} + +async function findRecentJsonSignature(): Promise { + + const dbAddress = await fetchDBPDA(); + const signatures = await fetchSignaturesForAddress( + new PublicKey(dbAddress) + ); + + for (const signature of signatures) { + const commit = await extractCommitMessage(signature); + if (commit !== "null") return signature; + } + return "null"; +} + +export async function bringAgentWithWalletAddress() { + + const recent = await findRecentJsonSignature(); + if (recent === "null") { + elizaLogger.error("Cannot found onchain data in this wallet."); + return "null"; + } + const result = await bringCode(recent); + const json_string = result.json_data; + return await json_string; +} diff --git a/packages/plugin-iq6900/src/index.ts b/packages/plugin-iq6900/src/index.ts new file mode 100644 index 000000000000..4d3828781432 --- /dev/null +++ b/packages/plugin-iq6900/src/index.ts @@ -0,0 +1,18 @@ +import { Plugin } from "@elizaos/core"; +export { onchainJson } from "./types/iq.ts"; + +export const elizaCodeinPlugin: Plugin = { + name: "eliza-codein", + description: "Plugin that interacts with the on-chain inscription method 'Code-In'", + actions: [ + ], + providers: [ + /* custom providers */ + ], + evaluators: [ + /* custom evaluators */ + ], + services: [], + clients: [], + +}; diff --git a/packages/plugin-iq6900/src/types/iq.ts b/packages/plugin-iq6900/src/types/iq.ts new file mode 100644 index 000000000000..12ccfb619e5f --- /dev/null +++ b/packages/plugin-iq6900/src/types/iq.ts @@ -0,0 +1,8 @@ +import { bringAgentWithWalletAddress } from "../functions/bringIQData.ts"; + +const onchainJson = await (async () => { + return await bringAgentWithWalletAddress(); +})(); + + +export { onchainJson }; \ No newline at end of file diff --git a/packages/plugin-iq6900/tsconfig.json b/packages/plugin-iq6900/tsconfig.json new file mode 100644 index 000000000000..005fbac9d363 --- /dev/null +++ b/packages/plugin-iq6900/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/plugin-iq6900/tsup.config.ts b/packages/plugin-iq6900/tsup.config.ts new file mode 100644 index 000000000000..987b640823e0 --- /dev/null +++ b/packages/plugin-iq6900/tsup.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", + "fs", + "path", + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "@phala/dstack-sdk", + "safe-buffer", + "base-x", + "bs58", + "borsh", + "@solana/buffer-layout", + "stream", + "buffer", + "undici", + ], +}); diff --git a/packages/plugin-irys/package.json b/packages/plugin-irys/package.json index e256667b30f9..e2f52cebc51e 100644 --- a/packages/plugin-irys/package.json +++ b/packages/plugin-irys/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-irys", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-lensNetwork/package.json b/packages/plugin-lensNetwork/package.json index 1ec0184edd62..c87a19b164ca 100644 --- a/packages/plugin-lensNetwork/package.json +++ b/packages/plugin-lensNetwork/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-lensNetwork", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-letzai/package.json b/packages/plugin-letzai/package.json index 926507002d5e..791c51382c19 100644 --- a/packages/plugin-letzai/package.json +++ b/packages/plugin-letzai/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-letzai", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "author": "LetzAI", "description": "Enables Image Generation through LetzAI API", "main": "dist/index.js", diff --git a/packages/plugin-massa/package.json b/packages/plugin-massa/package.json index e314f5cc97bf..1bd9fd072344 100644 --- a/packages/plugin-massa/package.json +++ b/packages/plugin-massa/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-massa", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-movement/package.json b/packages/plugin-movement/package.json index fd3d5017ae5e..7416e674492f 100644 --- a/packages/plugin-movement/package.json +++ b/packages/plugin-movement/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-movement", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-multiversx/package.json b/packages/plugin-multiversx/package.json index 56572bfb7b19..3a4d002e629f 100644 --- a/packages/plugin-multiversx/package.json +++ b/packages/plugin-multiversx/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-multiversx", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-near/package.json b/packages/plugin-near/package.json index 7498abef7060..43f5dea9766e 100644 --- a/packages/plugin-near/package.json +++ b/packages/plugin-near/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-near", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-nft-collections/.eslintrc.json b/packages/plugin-nft-collections/.eslintrc.json new file mode 100644 index 000000000000..eb6b1760de8d --- /dev/null +++ b/packages/plugin-nft-collections/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": "../../.eslintrc.json", + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "root": true +} \ No newline at end of file diff --git a/packages/plugin-nft-collections/.prettierrc b/packages/plugin-nft-collections/.prettierrc new file mode 100644 index 000000000000..3c4f9def446a --- /dev/null +++ b/packages/plugin-nft-collections/.prettierrc @@ -0,0 +1,7 @@ +{ + "tabWidth": 4, + "semi": true, + "singleQuote": false, + "trailingComma": "es5", + "printWidth": 80 +} diff --git a/packages/plugin-nft-collections/README.md b/packages/plugin-nft-collections/README.md new file mode 100644 index 000000000000..7a7303f91e1c --- /dev/null +++ b/packages/plugin-nft-collections/README.md @@ -0,0 +1,1584 @@ +# NFT Collections Plugin + +A powerful plugin for interacting with NFT collections, providing comprehensive market data, social analytics, and trading capabilities through various APIs including Reservoir, CoinGecko, and more. While designed to work with any EVM NFT collection, the plugin includes special support for 420+ curated collections featured on ikigailabs.xyz. + +## Recent Improvements + +### Performance Optimizations + +- Implemented batch processing with configurable batch sizes for collection data +- Added parallel request handling with queue management +- Optimized caching with tiered expiration times for different data types +- Added LRU (Least Recently Used) cache with configurable size limits +- Implemented request prioritization for curated collections + +### Enhanced Error Handling + +- Added comprehensive error types and validation +- Implemented retry logic with exponential backoff +- Added detailed error tracking and reporting +- Improved error recovery mechanisms +- Added structured error logging + +### Rate Limiting & Security + +- Added advanced rate limiting with configurable thresholds +- Implemented queue-based request management +- Added per-service rate limiting +- Improved API key management and validation +- Added request validation and sanitization + +### Performance Monitoring + +- Added detailed performance metrics tracking +- Implemented alert system for performance issues +- Added periodic performance reporting +- Added latency, error rate, and throughput monitoring +- Implemented customizable alert thresholds + +### Data Validation + +- Added comprehensive schema validation using Zod +- Implemented strict type checking +- Added data sanitization utilities +- Added Ethereum address validation +- Added price and token ID validation + +## Features + +### Core Features (Reservoir Tools API) + +- Real-time NFT collection data and market stats +- Floor prices, volume, and market cap tracking +- Collection activity monitoring +- Token-level data and attributes +- Collection statistics and rankings + +### Market Intelligence + +- 420+ verified NFT collections featured on ikigailabs.xyz +- Enhanced metadata and social information +- Prioritized data fetching and caching +- Pre-verified contract addresses +- Featured collections highlighting +- Quick lookup and validation functions + +### Market Data + +- Real-time floor prices and volume tracking +- Market cap and holder statistics +- Price history and trends +- Multi-marketplace activity tracking +- Wash trading detection +- Liquidity analysis +- Price prediction +- Whale activity monitoring +- Market trend analysis + +### Social Analytics + +- Twitter engagement metrics +- Discord community stats +- Telegram group analytics +- Sentiment analysis +- Community growth tracking + +## Quick Start + +### Installation + +```bash +pnpm add @elizaos/plugin-nft-collections +``` + +## Configuration + +### Required Configuration + +```env +# Required +RESERVOIR_API_KEY=your-reservoir-api-key +``` + +### Optional Configuration + +```typescript +import { NFTCollectionsPlugin } from "@elizaos/plugin-nft-collections"; + +const plugin = new NFTCollectionsPlugin({ + caching: { + enabled: true, + ttl: 3600000, // 1 hour + maxSize: 1000, + }, + security: { + rateLimit: { + enabled: true, + maxRequests: 100, + windowMs: 60000, + }, + }, + maxConcurrent: 5, // Maximum concurrent requests + maxRetries: 3, // Maximum retry attempts + batchSize: 20, // Batch size for collection requests +}); + +// Register with your agent +agent.registerPlugin(plugin); +``` + +### Required Environment Variables + +```env +RESERVOIR_API_KEY=your-reservoir-api-key +``` + +### Optional API Keys + +```env +# Market Intelligence +NANSEN_API_KEY=your-nansen-api-key +DUNE_API_KEY=your-dune-api-key +ALCHEMY_API_KEY=your-alchemy-api-key +CHAINBASE_API_KEY=your-chainbase-api-key +NFTSCAN_API_KEY=your-nftscan-api-key + +# Social Analytics +TWITTER_API_KEY=your-twitter-api-key +DISCORD_API_KEY=your-discord-api-key +TELEGRAM_API_KEY=your-telegram-api-key +``` + +## Usage Examples + +### Collection Data + +```typescript +// Get top collections with optimized batch processing +const collections = await nftService.getTopCollections(); + +// Get market intelligence with caching +const intelligence = + await marketIntelligenceService.getMarketIntelligence("0x1234"); + +// Get social metrics with rate limiting +const metrics = await socialAnalyticsService.getSocialMetrics("0x1234"); +``` + +### Error Handling + +```typescript +try { + const collections = await nftService.getTopCollections(); +} catch (error) { + if (error.code === ErrorCode.RATE_LIMIT_EXCEEDED) { + // Handle rate limiting + } else if (error.code === ErrorCode.API_ERROR) { + // Handle API errors + } +} +``` + +### NFT Ownership + +```typescript +// Listen for performance alerts +performanceMonitor.on("alert", (alert) => { + console.log(`Performance alert: ${alert.type} for ${alert.operation}`); +}); + +// Get performance summary +const summary = performanceMonitor.getPerformanceSummary(); +``` + +## Performance Benchmarks + +### Response Times (p95) + +``` +Operation Cold Cached Batch (100) +Collection Data 300ms 50ms 2.5s +Floor Price 150ms 25ms 1.2s +Token Metadata 250ms 40ms 2.0s +Market Stats 400ms 75ms 3.0s +Social Metrics 350ms 60ms 2.8s +``` + +### Building + +```bash +pnpm build +``` + +### Resource Usage + +``` +Resource Idle Light Heavy +CPU 0.5% 15% 40% +Memory 150MB 300MB 600MB +Requests/s 10 100 1000 +``` + +## Best Practices + +1. **API Keys** + + - Secure storage of API keys + - Regular key rotation + - Use fallback keys for high availability + +2. **Error Handling** + + - Implement retry strategies + - Handle rate limits gracefully + - Log errors with context + +3. **Performance** + + - Use batch operations when possible + - Implement appropriate caching + - Monitor resource usage + +4. **Data Validation** + - Validate all input data + - Sanitize API responses + - Check Ethereum addresses + +## Architecture + +### System Components + +```mermaid +graph TD + A[Client] --> B[Plugin Interface] + B --> C[Cache Layer] + C --> D[API Manager] + D --> E[Reservoir API] + D --> F[Market APIs] + D --> G[Social APIs] + H[Monitor] --> I[Metrics] + H --> J[Alerts] +``` + +## Contributing + +1. Fork the repository +2. Create your feature branch +3. Commit your changes +4. Push to the branch +5. Create a Pull Request + +## License + +MIT + +## Support + +### Error Handling Flow + +```mermaid +graph TD + A[API Call] --> B{Error?} + B -->|Yes| C[Retry Strategy] + C -->|Success| D[Return Data] + C -->|Fail| E[Fallback API] + E -->|Success| D + E -->|Fail| F[Error Response] + B -->|No| D +``` + +### Optimization Strategies + +```mermaid +graph TD + A[Incoming Request] --> B{Optimizable?} + B -->|Yes| C[Batch Processing] + B -->|No| D[Direct Processing] + C --> E[Parallel Execution] + C --> F[Queue Management] + E --> G[Result Aggregation] + F --> G + D --> G +``` + +## Integrations + +### GraphQL Support + +```env +# GraphQL Configuration +GRAPHQL_ENDPOINT=your-graphql-endpoint +GRAPHQL_API_KEY=your-graphql-key +``` + +```typescript +// Query collections using GraphQL +const collections = await plugin.graphql.query( + ` + query GetCollections($first: Int!) { + collections(first: $first) { + id + name + floorPrice + volume24h + } + } +`, + { first: 10 } +); + +// Subscribe to collection updates +const subscription = plugin.graphql.subscribe( + ` + subscription OnFloorPriceChange($collectionId: ID!) { + floorPriceChanged(collectionId: $collectionId) { + newPrice + oldPrice + timestamp + } + } +`, + { collectionId: "0x1234" } +); +``` + +### WebSocket Real-time Updates + +```env +# WebSocket Configuration +WS_ENDPOINT=your-websocket-endpoint +WS_API_KEY=your-websocket-key +``` + +```typescript +// Subscribe to real-time collection updates +plugin.ws.subscribe("collection:0x1234", (update) => { + console.log("New floor price:", update.floorPrice); +}); + +// Subscribe to multiple events +plugin.ws.subscribeMany( + ["sales:0x1234", "listings:0x1234", "transfers:0x1234"], + (event) => { + console.log("Event type:", event.type); + console.log("Event data:", event.data); + } +); + +// Custom event filters +plugin.ws.subscribe( + "sales:*", + { + priceAbove: "10 ETH", + marketplace: ["opensea", "blur"], + }, + (sale) => { + console.log("Whale sale detected:", sale); + } +); +``` + +### IPFS Integration + +```env +# IPFS Configuration +IPFS_GATEWAY=your-ipfs-gateway +IPFS_API_KEY=your-ipfs-key +IPFS_FALLBACK_GATEWAYS=["https://ipfs.io", "https://cloudflare-ipfs.com"] +``` + +```typescript +// Fetch metadata from IPFS +const metadata = await plugin.ipfs.getMetadata("ipfs://Qm..."); + +// Upload metadata to IPFS +const cid = await plugin.ipfs.uploadMetadata({ + name: "Cool NFT", + description: "Very cool NFT", + image: "ipfs://Qm...", +}); + +// Pin content across multiple providers +await plugin.ipfs.pin(cid, { + providers: ["pinata", "web3.storage"], + replicas: 3, +}); + +// Smart gateway selection +const image = await plugin.ipfs.getImage(cid, { + preferredGateway: "cloudflare", + size: "thumbnail", + format: "webp", +}); +``` + +### Integration Best Practices + +1. **GraphQL** + + - Use fragments for reusable queries + - Implement proper error boundaries + - Cache complex queries + - Use persisted queries for production + +2. **WebSocket** + + - Implement reconnection logic + - Handle backpressure + - Use heartbeats + - Batch small updates + - Implement message queue for offline scenarios + +3. **IPFS** + - Use multiple gateway fallbacks + - Implement proper timeout handling + - Cache frequently accessed content + - Use appropriate gateway for content type + - Monitor gateway health + +### Integration Architecture + +```mermaid +graph TD + A[Plugin Core] --> B[GraphQL Client] + A --> C[WebSocket Manager] + A --> D[IPFS Gateway] + + B --> E[Query Builder] + B --> F[Subscription Manager] + + C --> G[Event Stream] + C --> H[Connection Pool] + + D --> I[Gateway Router] + D --> J[Content Cache] + + E --> K[API Endpoint] + F --> K + G --> L[WS Endpoint] + H --> L + I --> M[IPFS Network] +``` + +## Extended Features + +### Webhooks + +```env +# Webhook Configuration +WEBHOOK_SECRET=your-webhook-secret +WEBHOOK_RETRY_COUNT=3 +WEBHOOK_TIMEOUT=5000 +``` + +```typescript +// Register webhook endpoints +const webhook = plugin.webhooks.create({ + url: "https://api.yourdomain.com/webhooks/nft", + events: ["floor_change", "volume_spike", "whale_transfer"], + secret: process.env.WEBHOOK_SECRET, + metadata: { + name: "Price Monitor", + description: "Monitor floor price changes", + }, +}); + +// Configure event filters +webhook.addFilter({ + event: "floor_change", + conditions: { + percentageChange: ">5%", + timeWindow: "1h", + minVolume: "10 ETH", + }, +}); + +webhook.addFilter({ + event: "whale_transfer", + conditions: { + value: ">100 ETH", + fromAddress: ["!0x0000000000000000000000000000000000000000"], + toAddress: ["!0x0000000000000000000000000000000000000000"], + }, +}); + +// Handle webhook delivery status +webhook.on("delivered", (event) => { + console.log("Webhook delivered:", event.id); +}); + +webhook.on("failed", (event, error) => { + console.error("Webhook failed:", error); +}); +``` + +### ML-Powered Price Predictions + +```typescript +// Get price prediction for a collection +const prediction = await plugin.ml.predictPrice("0x1234", { + timeframe: "24h", + confidence: 0.8, + includeFactors: true, +}); + +// Response type +interface PricePrediction { + timeframe: "1h" | "24h" | "7d"; + currentPrice: number; + predictedPrice: number; + confidence: number; + factors: { + reason: string; + impact: number; + confidence: number; + }[]; + marketConditions: { + trend: "bullish" | "bearish" | "neutral"; + volatility: "high" | "medium" | "low"; + liquidity: "high" | "medium" | "low"; + }; +} + +// Batch predictions for multiple collections +const predictions = await plugin.ml.batchPredictPrice([ + { address: "0x1234", timeframe: "1h" }, + { address: "0x5678", timeframe: "24h" }, +]); + +// Get historical prediction accuracy +const accuracy = await plugin.ml.getPredictionAccuracy("0x1234", { + timeframe: "7d", + startDate: "2024-01-01", + endDate: "2024-01-07", +}); + +// Train custom prediction model +const model = await plugin.ml.trainCustomModel({ + collections: ["0x1234", "0x5678"], + features: ["volume", "social_sentiment", "whale_activity"], + timeframe: "24h", + trainingPeriod: "30d", +}); +``` + +### Advanced Analytics + +```typescript +// Rarity analysis with ML +const rarityScore = await plugin.ml.analyzeRarity("0x1234", "tokenId", { + method: "trait_rarity" | "statistical" | "neural", + includeExplanation: true, +}); + +// Wash trading detection +const tradeAnalysis = await plugin.ml.analyzeTrades("0x1234", { + timeframe: "24h", + minConfidence: 0.8, + includeEvidence: true, +}); + +// Market manipulation detection +const manipulationScore = await plugin.ml.detectManipulation("0x1234", { + indicators: ["wash_trading", "price_manipulation", "fake_volume"], + sensitivity: "high" | "medium" | "low", +}); +``` + +### Custom Alerts + +```typescript +// Set up custom alerts +const alert = plugin.alerts.create({ + name: "Whale Alert", + conditions: { + event: "transfer", + filters: { + value: ">50 ETH", + collectionAddress: "0x1234", + }, + }, + actions: [ + { + type: "webhook", + url: "https://api.yourdomain.com/alerts", + }, + { + type: "email", + to: "trader@domain.com", + }, + ], +}); + +// Alert with ML insights +const smartAlert = plugin.alerts.createWithML({ + name: "Smart Price Alert", + conditions: { + event: "price_prediction", + filters: { + confidence: ">0.8", + priceChange: ">10%", + timeframe: "24h", + }, + }, + mlConfig: { + model: "price_prediction", + features: ["market_sentiment", "whale_activity"], + }, +}); +``` + +### Feature Configuration + +```typescript +interface ExtendedFeatureConfig { + webhooks: { + maxRetries: number; + timeout: number; + batchSize: number; + rateLimits: { + perSecond: number; + perMinute: number; + }; + }; + ml: { + models: { + price: string; + rarity: string; + manipulation: string; + }; + updateFrequency: number; + minConfidence: number; + maxBatchSize: number; + }; + alerts: { + maxPerUser: number; + cooldown: number; + maxActions: number; + }; +} +``` + +### Extended Features Architecture + +```mermaid +graph TD + A[Plugin Core] --> B[Webhook Manager] + A --> C[ML Engine] + A --> D[Alert System] + + B --> E[Event Filter] + B --> F[Delivery Manager] + + C --> G[Price Predictor] + C --> H[Rarity Analyzer] + C --> I[Manipulation Detector] + + D --> J[Condition Evaluator] + D --> K[Action Executor] + + E --> L[Event Stream] + F --> M[Retry Queue] + + G --> N[Model Registry] + H --> N + I --> N + + J --> O[Alert Queue] + K --> P[Notification Service] +``` + +## Testing & Validation + +### Mock Data Generation + +```typescript +// Generate mock collections and transactions +const mockData = await plugin.testing.generateMockData({ + collections: 10, + transactions: 1000, + timeRange: [new Date("2024-01-01"), new Date("2024-01-07")], + options: { + priceRange: [0.1, 100], + traits: ["background", "body", "eyes", "mouth"], + rarityDistribution: "normal", + marketplaces: ["opensea", "blur", "x2y2"], + }, +}); + +// Generate realistic market activity +const marketActivity = await plugin.testing.generateMarketActivity({ + collection: "0x1234", + activityType: ["sales", "listings", "offers"], + volumeProfile: "whale_accumulation", + priceVolatility: "high", + duration: "7d", +}); + +// Generate social signals +const socialData = await plugin.testing.generateSocialData({ + sentiment: "bullish", + engagement: "viral", + platforms: ["twitter", "discord"], + influencerActivity: true, +}); +``` + +### Contract Validation + +```typescript +// Validate collection contract +const validation = await plugin.validation.validateContract("0x1234", { + checkERC: ["721", "1155"], + securityCheck: true, + options: { + checkOwnership: true, + checkRoyalties: true, + checkMetadata: true, + checkPermissions: true, + }, +}); + +// Response type +interface ValidationResult { + isValid: boolean; + standards: { + erc721: boolean; + erc1155: boolean; + erc2981: boolean; // Royalties + }; + security: { + maliciousCode: boolean; + knownExploits: boolean; + upgradeability: { + isUpgradeable: boolean; + adminAddress: string; + timelock: number; + }; + permissions: { + owner: string; + minter: string[]; + pauser: string[]; + }; + }; + metadata: { + isValid: boolean; + baseURI: string; + frozen: boolean; + }; +} + +// Batch validate multiple contracts +const batchValidation = await plugin.validation.batchValidateContracts( + ["0x1234", "0x5678"], + { + checkERC: ["721"], + securityCheck: true, + } +); +``` + +### Testing Utilities + +```typescript +// Time travel for testing +await plugin.testing.timeTravel({ + collection: "0x1234", + destination: new Date("2024-06-01"), + preserveState: true, +}); + +// Market simulation +await plugin.testing.simulateMarket({ + scenario: "bear_market", + duration: "30d", + collections: ["0x1234"], + variables: { + priceDecline: 0.5, + volumeReduction: 0.7, + sellerPanic: true, + }, +}); + +// Load testing +const loadTest = await plugin.testing.runLoadTest({ + concurrent: 100, + duration: "5m", + operations: ["getFloor", "getMetadata", "getTrades"], + targetRPS: 50, +}); +``` + +### Test Fixtures + +```typescript +// Collection fixture +const fixture = plugin.testing.createFixture({ + type: "collection", + traits: { + background: ["red", "blue", "green"], + body: ["type1", "type2"], + accessory: ["hat", "glasses"], + }, + supply: 1000, + distribution: "random", +}); + +// Market fixture +const marketFixture = plugin.testing.createMarketFixture({ + floorPrice: 1.5, + listings: 50, + topBid: 2.0, + volume24h: 100, + holders: 500, +}); + +// Event fixture +const eventFixture = plugin.testing.createEventFixture({ + type: "sale", + price: 5.0, + marketplace: "opensea", + timestamp: new Date(), +}); +``` + +### Testing Configuration + +```typescript +interface TestConfig { + mock: { + seed?: string; + deterministic: boolean; + networkLatency: number; + errorRate: number; + }; + validation: { + timeout: number; + retries: number; + concurrency: number; + }; + fixtures: { + cleanup: boolean; + persistence: "memory" | "disk"; + sharing: boolean; + }; +} +``` + +### Test Helpers + +```typescript +// Snapshot testing +const snapshot = await plugin.testing.createSnapshot("0x1234"); +await plugin.testing.compareSnapshots(snapshot, latestSnapshot); + +// Event assertions +await plugin.testing.assertEvent({ + type: "sale", + collection: "0x1234", + matcher: { + price: ">1 ETH", + buyer: "0x5678", + }, +}); + +// Market assertions +await plugin.testing.assertMarketState({ + collection: "0x1234", + conditions: { + floorPrice: ">1 ETH", + listings: ">10", + volume24h: ">100 ETH", + }, +}); +``` + +### Testing Architecture + +```mermaid +graph TD + A[Test Runner] --> B[Mock Generator] + A --> C[Validation Engine] + A --> D[Test Utilities] + + B --> E[Collection Mocks] + B --> F[Transaction Mocks] + B --> G[Market Mocks] + + C --> H[Contract Validator] + C --> I[Security Scanner] + C --> J[Standards Checker] + + D --> K[Time Machine] + D --> L[Market Simulator] + D --> M[Load Tester] + + E --> N[Test Execution] + F --> N + G --> N + + H --> O[Validation Results] + I --> O + J --> O + + K --> P[Test Results] + L --> P + M --> P +``` + +## Authentication & Security + +### API Key Management + +```typescript +// Configure API keys with rotation and fallback +const apiConfig = plugin.auth.configureAPI({ + primary: { + key: process.env.PRIMARY_API_KEY, + rotationSchedule: "0 0 * * *", // Daily rotation + rotationCallback: async (oldKey) => { + await notifyKeyExpiry(oldKey); + }, + }, + fallback: { + key: process.env.FALLBACK_API_KEY, + useCondition: (error) => error.status === 429 || error.status === 503, + }, + rotation: { + enabled: true, + interval: 86400000, // 24 hours in ms + strategy: "gradual", // or "immediate" + }, +}); + +// Key rotation handlers +plugin.auth.onKeyRotation(async (newKey, oldKey) => { + await updateKeyInVault(newKey); + await invalidateOldKey(oldKey); +}); + +// Automatic key validation +await plugin.auth.validateKeys({ + checkInterval: 3600000, // 1 hour + healthEndpoint: "/health", + timeout: 5000, +}); +``` + +### Rate Limiting + +```typescript +// Configure rate limits +const rateLimiter = plugin.security.configureRateLimits({ + global: { + maxRequests: 1000, + windowMs: 60000, // 1 minute + retryAfter: 60000, + }, + endpoints: { + "/collections": { + maxRequests: 100, + windowMs: 60000, + retryAfter: 30000, + }, + "/market-data": { + maxRequests: 50, + windowMs: 60000, + retryAfter: 60000, + }, + }, + strategies: { + type: "sliding-window", + errorHandling: "queue", // or "reject" + }, +}); + +// Custom rate limit handlers +rateLimiter.onLimitReached(async (context) => { + await notifyRateLimitExceeded(context); + return plugin.security.getBackoffStrategy(context); +}); + +// Distributed rate limiting with Redis +const distributedLimiter = plugin.security.createDistributedRateLimiter({ + redis: { + host: process.env.REDIS_HOST, + port: 6379, + password: process.env.REDIS_PASSWORD, + }, + sync: { + interval: 1000, + strategy: "eventual-consistency", + }, +}); +``` + +### Security Features + +```typescript +// Enable security features +const security = plugin.security.configure({ + encryption: { + algorithm: "aes-256-gcm", + keyRotation: true, + rotationInterval: 7776000000, // 90 days + }, + authentication: { + type: "jwt", + expiresIn: "24h", + refreshToken: true, + }, + headers: { + helmet: true, + cors: { + origin: ["https://yourdomain.com"], + methods: ["GET", "POST"], + }, + }, +}); + +// Request signing +const signedRequest = plugin.security.signRequest({ + method: "POST", + url: "/api/v1/trades", + body: tradeData, + nonce: Date.now(), + expiry: "5m", +}); + +// Payload encryption +const encryptedData = await plugin.security.encryptPayload(sensitiveData, { + algorithm: "aes-256-gcm", + keyId: "current", + metadata: { + purpose: "api-communication", + }, +}); +``` + +### Access Control + +```typescript +// Configure access control +const accessControl = plugin.security.configureAccess({ + roles: { + admin: { + permissions: ["read", "write", "delete"], + rateLimit: { multiplier: 2 }, + }, + user: { + permissions: ["read"], + rateLimit: { multiplier: 1 }, + }, + }, + resources: { + collections: ["read", "write"], + trades: ["read", "write", "delete"], + analytics: ["read"], + }, +}); + +// Role-based middleware +const authMiddleware = plugin.security.createAuthMiddleware({ + validateToken: true, + checkPermissions: true, + auditLog: true, +}); + +// IP allowlisting +const ipFilter = plugin.security.createIPFilter({ + allowlist: ["192.168.1.0/24"], + denylist: ["10.0.0.0/8"], + mode: "strict", +}); +``` + +### Audit Logging + +```typescript +// Configure audit logging +const auditLogger = plugin.security.configureAuditLog({ + storage: { + type: "elasticsearch", + config: { + node: process.env.ELASTICSEARCH_URL, + index: "nft-audit-logs", + }, + }, + retention: { + duration: "90d", + archival: true, + }, + events: { + "api.request": true, + "auth.login": true, + "data.modification": true, + }, +}); + +// Log security events +await auditLogger.log({ + action: "api.request", + actor: "user-123", + resource: "collection-456", + details: { + method: "GET", + path: "/api/v1/collections", + status: 200, + }, +}); + +// Query audit logs +const auditTrail = await auditLogger.query({ + timeRange: { + start: "2024-01-01", + end: "2024-01-07", + }, + filters: { + action: ["api.request", "auth.login"], + actor: "user-123", + }, +}); +``` + +### Security Configuration + +```typescript +interface SecurityConfig { + api: { + keys: { + rotation: { + enabled: boolean; + interval: number; + strategy: "gradual" | "immediate"; + }; + validation: { + interval: number; + timeout: number; + }; + }; + rateLimit: { + global: RateLimitConfig; + endpoints: Record; + distributed: boolean; + }; + }; + encryption: { + algorithm: string; + keyRotation: boolean; + rotationInterval: number; + }; + access: { + roles: Record; + resources: Record; + audit: { + enabled: boolean; + retention: string; + }; + }; +} +``` + +### Security Architecture + +```mermaid +graph TD + A[Plugin Core] --> B[Auth Manager] + A --> C[Rate Limiter] + A --> D[Security Manager] + + B --> E[Key Rotation] + B --> F[Key Validation] + + C --> G[Request Counter] + C --> H[Rate Rules] + + D --> I[Encryption] + D --> J[Access Control] + D --> K[Audit Logger] + + E --> L[Key Storage] + F --> L + + G --> M[Redis Cache] + H --> M + + I --> N[Key Management] + J --> O[Role Manager] + K --> P[Log Storage] +``` + +## Trading Agents + +### Agent Configuration + +```typescript +// Configure a trading agent +const tradingAgent = plugin.agents.createTradingAgent({ + name: "WhaleWatcher", + personality: { + style: "aggressive", + riskTolerance: "high", + tradingHours: "24/7", + }, + strategies: [ + { + name: "whale_following", + config: { + minTransactionValue: "100 ETH", + followDelay: "1m", + maxExposure: "500 ETH", + }, + }, + { + name: "floor_sweeping", + config: { + targetCollections: ["0x1234", "0x5678"], + maxPricePerItem: "2 ETH", + totalBudget: "50 ETH", + }, + }, + ], +}); + +// Configure agent communication +const agentNetwork = plugin.agents.createNetwork({ + agents: [tradingAgent, otherAgent], + communicationRules: { + shareMarketInsights: true, + coordinateTrading: true, + profitSharing: 0.5, + }, +}); + +// Set up agent behaviors +tradingAgent.on("whale_movement", async (event) => { + const analysis = await plugin.ml.analyzeWhaleMovement(event); + if (analysis.confidence > 0.8) { + await tradingAgent.executeStrategy("whale_following", { + collection: event.collection, + amount: analysis.recommendedAmount, + }); + } +}); +``` + +### Multi-Agent Trading Strategies + +```typescript +// Collaborative floor sweeping +const floorSweepTeam = plugin.agents.createTeam({ + name: "FloorSweepers", + members: [agent1, agent2, agent3], + strategy: { + type: "distributed_sweep", + config: { + totalBudget: "100 ETH", + maxPricePerAgent: "35 ETH", + targetCollections: ["0x1234"], + coordination: { + type: "price_zones", + zones: [ + { range: "0-1 ETH", agent: "agent1" }, + { range: "1-2 ETH", agent: "agent2" }, + { range: "2+ ETH", agent: "agent3" }, + ], + }, + }, + }, +}); + +// Market making strategy +const marketMaker = plugin.agents.createMarketMaker({ + collections: ["0x1234"], + strategy: { + spreadTarget: 0.05, + maxInventory: "10 ETH", + rebalanceThreshold: 0.02, + hedging: { + enabled: true, + instruments: ["wETH", "NFT indexes"], + }, + }, +}); +``` + +### Agent Learning & Adaptation + +```typescript +// Train agent on historical data +await tradingAgent.learn({ + dataset: "historical_trades", + timeframe: "90d", + features: ["whale_movements", "price_action", "social_sentiment"], + reinforcementConfig: { + rewardFunction: "profit_and_risk", + episodes: 1000, + batchSize: 64, + }, +}); + +// Adaptive strategy adjustment +tradingAgent.enableAdaptation({ + metrics: ["profit_loss", "win_rate", "drawdown"], + adjustmentPeriod: "1d", + thresholds: { + drawdown: { + max: 0.1, + action: "reduce_exposure", + }, + profitTarget: { + min: 0.2, + action: "increase_aggression", + }, + }, +}); +``` + +### Agent Monitoring & Analytics + +```typescript +// Monitor agent performance +const performance = await plugin.agents.getPerformance({ + agentId: tradingAgent.id, + timeframe: "30d", + metrics: ["total_profit", "win_rate", "avg_position_size", "max_drawdown"], +}); + +// Agent activity dashboard +const dashboard = plugin.agents.createDashboard({ + agents: [tradingAgent, marketMaker], + realtime: true, + metrics: { + performance: true, + activities: true, + insights: true, + }, + alerts: { + profitThreshold: "5 ETH", + lossThreshold: "2 ETH", + unusualActivity: true, + }, +}); +``` + +### Agent Architecture + +```mermaid +graph TD + A[Trading Agent] --> B[Strategy Manager] + A --> C[Learning Module] + A --> D[Communication Hub] + + B --> E[Whale Following] + B --> F[Floor Sweeping] + B --> G[Market Making] + + C --> H[Historical Analysis] + C --> I[Reinforcement Learning] + C --> J[Strategy Adaptation] + + D --> K[Agent Network] + D --> L[Team Coordination] + D --> M[Market Updates] + + E --> N[Execution Engine] + F --> N + G --> N + + H --> O[Performance Analytics] + I --> O + J --> O + + K --> P[Multi-Agent System] + L --> P + M --> P +``` + +## Caching Layer + +### Cache Configuration + +```typescript +// Configure multi-level caching +const cacheConfig = plugin.cache.configure({ + layers: { + memory: { + type: "memory", + maxSize: "1GB", + ttl: "1m", + priority: 1, + }, + redis: { + type: "redis", + connection: { + host: process.env.REDIS_HOST, + port: 6379, + password: process.env.REDIS_PASSWORD, + }, + ttl: "5m", + priority: 2, + }, + disk: { + type: "disk", + path: "./cache", + maxSize: "10GB", + ttl: "1h", + priority: 3, + }, + }, + strategies: { + preload: ["top_collections", "trending_collections"], + warmup: { + interval: "10m", + concurrency: 5, + }, + }, +}); + +// Configure per-collection caching +const collectionCache = plugin.cache.createCollectionCache({ + collection: "0x1234", + rules: { + metadata: { + ttl: "1d", + invalidateOn: ["metadata_update"], + }, + floorPrice: { + ttl: "30s", + invalidateOn: ["new_listing", "sale"], + }, + holders: { + ttl: "1h", + invalidateOn: ["transfer"], + }, + }, +}); +``` + +### Smart Caching Strategies + +```typescript +// Implement predictive caching +const predictiveCache = plugin.cache.enablePredictiveCaching({ + features: { + userBehavior: true, + timePatterns: true, + marketActivity: true, + }, + ml: { + model: "cache_prediction", + updateInterval: "1h", + minConfidence: 0.8, + }, +}); + +// Configure cache warming +const cacheWarmer = plugin.cache.createWarmer({ + schedule: "*/10 * * * *", // Every 10 minutes + strategy: { + type: "smart", + priorities: { + popularity: 0.4, + recentActivity: 0.3, + userRequests: 0.3, + }, + }, + limits: { + maxConcurrent: 5, + maxItems: 1000, + }, +}); +``` + +### Cache Monitoring + +```typescript +// Monitor cache performance +const cacheMetrics = plugin.cache.monitor({ + metrics: ["hit_rate", "miss_rate", "latency", "size"], + alerts: { + hitRate: { + threshold: 0.8, + window: "5m", + action: "adjust_ttl", + }, + latency: { + threshold: 100, + window: "1m", + action: "scale_cache", + }, + }, +}); + +// Cache analytics dashboard +const cacheDashboard = plugin.cache.createDashboard({ + realtime: true, + metrics: { + performance: true, + storage: true, + invalidations: true, + }, + visualization: { + graphs: true, + heatmaps: true, + }, +}); +``` + +### Cache Optimization + +```typescript +// Optimize cache storage +const storageOptimizer = plugin.cache.optimizeStorage({ + compression: { + enabled: true, + algorithm: "lz4", + level: "medium", + }, + deduplication: true, + partitioning: { + strategy: "access_pattern", + shards: 4, + }, +}); + +// Implement cache coherency +const coherencyManager = plugin.cache.manageCoherency({ + strategy: "write_through", + consistency: "eventual", + propagation: { + method: "pub_sub", + maxDelay: "100ms", + }, +}); +``` + +### Cache Architecture + +```mermaid +graph TD + A[Cache Manager] --> B[Memory Cache] + A --> C[Redis Cache] + A --> D[Disk Cache] + + E[Cache Warmer] --> A + F[Predictive Engine] --> A + G[Monitoring] --> A + + B --> H[Fast Access Layer] + C --> I[Distributed Layer] + D --> J[Persistence Layer] + + K[Optimization] --> B + K --> C + K --> D + + L[Coherency Manager] --> M[Write Through] + L --> N[Invalidation] + L --> O[Propagation] + + P[Analytics] --> Q[Performance] + P --> R[Usage Patterns] + P --> S[Optimization Suggestions] +``` diff --git a/packages/plugin-nft-collections/eslint.config.mjs b/packages/plugin-nft-collections/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-nft-collections/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-nft-collections/package.json b/packages/plugin-nft-collections/package.json new file mode 100644 index 000000000000..a547228bd279 --- /dev/null +++ b/packages/plugin-nft-collections/package.json @@ -0,0 +1,34 @@ +{ + "name": "@elizaos/plugin-nft-collections", + "version": "0.1.9-alpha.1", + "description": "NFT collections plugin for Eliza", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsup src/index.ts --format esm --dts", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint --fix --cache .", + "format": "prettier --write src/**/*.ts" + }, + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-evm": "workspace:*", + "axios": "^1.6.7", + "rate-limiter-flexible": "^5.0.4" + }, + "devDependencies": { + "@types/node": "^20.11.16", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "^9.16.0", + "prettier": "^3.2.5", + "tsup": "^8.0.1", + "typescript": "^5.3.3", + "vitest": "^2.1.5" + }, + "peerDependencies": { + "@elizaos/core": "workspace:*" + } +} diff --git a/packages/plugin-nft-collections/src/__tests__/reservoir.test.ts b/packages/plugin-nft-collections/src/__tests__/reservoir.test.ts new file mode 100644 index 000000000000..60ad8530e186 --- /dev/null +++ b/packages/plugin-nft-collections/src/__tests__/reservoir.test.ts @@ -0,0 +1,47 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { IAgentRuntime } from "@elizaos/core"; +import { ReservoirService } from "../services/reservoir"; +import { MemoryCacheManager } from "../services/cache-manager"; +import { RateLimiter } from "../services/rate-limiter"; + +describe("ReservoirService", () => { + const mockRuntime = { + services: { + get: vi.fn(), + }, + messageManager: { + createMemory: vi.fn(), + }, + agentId: "00000000-0000-0000-0000-000000000000", + } as unknown as IAgentRuntime; + + let service: ReservoirService; + let cacheManager: MemoryCacheManager; + let rateLimiter: RateLimiter; + + beforeEach(() => { + cacheManager = new MemoryCacheManager(); + rateLimiter = new RateLimiter(); + service = new ReservoirService({ + cacheManager, + rateLimiter, + }); + }); + + it("should initialize correctly", async () => { + await service.initialize(mockRuntime); + expect(service).toBeDefined(); + }); + + it("should handle API requests with caching", async () => { + const mockData = { collections: [] }; + vi.spyOn(global, "fetch").mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve(mockData), + } as Response); + + const result = await service.getTopCollections(5); + expect(result).toBeDefined(); + expect(Array.isArray(result)).toBe(true); + }); +}); diff --git a/packages/plugin-nft-collections/src/actions/get-collections.ts b/packages/plugin-nft-collections/src/actions/get-collections.ts new file mode 100644 index 000000000000..5a601f521637 --- /dev/null +++ b/packages/plugin-nft-collections/src/actions/get-collections.ts @@ -0,0 +1,164 @@ +import { State } from "@elizaos/core"; +import { HandlerCallback } from "@elizaos/core"; +import { Action, IAgentRuntime, Memory, Provider } from "@elizaos/core"; + +export const getCollectionsAction = ( + nftCollectionProvider: Provider +): Action => { + return { + name: "GET_NFT_COLLECTIONS", + similes: ["LIST_NFT_COLLECTIONS", "SHOW_NFT_COLLECTIONS"], + description: + "Fetches information about curated NFT collections on Ethereum", + validate: async (runtime: IAgentRuntime, message: Memory) => { + return message.content.text + .toLowerCase() + .includes("nft collections"); + }, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + try { + const response = await nftCollectionProvider.get( + runtime, + message + ); + callback({ + text: response, + }); + await runtime.messageManager.createMemory({ + id: message.id, + content: { text: response }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + return true; + } catch (error) { + const errorMessage = error instanceof Error + ? `Failed to fetch NFT collections: ${error.message}` + : "An unexpected error occurred while fetching NFT collections."; + console.error(errorMessage); + await runtime.messageManager.createMemory({ + id: message.id, + content: { text: errorMessage }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + return false; + } + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Can you tell me about the top NFT collections?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Certainly! Here are the top NFT collections on Ethereum:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you show me a list of NFT collections?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Sure! Here are some curated NFT collections on Ethereum:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Do you know the best NFT collections?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Absolutely! Here's a list of top NFT collections on Ethereum:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you fetch Ethereum NFT collections for me?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Of course! Fetching NFT collections on Ethereum:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "I'm curious about NFTs. What are some collections I should look into?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Here are some NFT collections you might find interesting:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Tell me about the trending Ethereum NFT collections.", + }, + }, + { + user: "{{user2}}", + content: { + text: "Here's information on trending Ethereum NFT collections:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "What are some cool NFT collections right now?", + }, + }, + { + user: "{{user2}}", + content: { + text: "Let me show you some popular NFT collections:", + action: "GET_NFT_COLLECTIONS", + }, + }, + ], + ], + }; +}; diff --git a/packages/plugin-nft-collections/src/actions/list-nft.ts b/packages/plugin-nft-collections/src/actions/list-nft.ts new file mode 100644 index 000000000000..857939577d59 --- /dev/null +++ b/packages/plugin-nft-collections/src/actions/list-nft.ts @@ -0,0 +1,159 @@ +import { Action, IAgentRuntime, Memory, State } from "@elizaos/core"; +import { ReservoirService } from "../services/reservoir"; +import { HandlerCallback } from "@elizaos/core"; + +// Helper function to extract NFT listing details from the message +function extractListingDetails(text: string): { + tokenId: string | null; + collectionAddress: string | null; + price?: number | null; +} { + const addressMatch = text.match(/(?:collection|from)\s*(0x[a-fA-F0-9]+)/i); + const tokenIdMatch = text.match(/(?:token|nft)\s*#?\s*(\d+)/i); + const priceMatch = text.match(/(\d+(?:\.\d+)?)\s*(?:eth|Ξ)/i); + + return { + collectionAddress: addressMatch ? addressMatch[1] : null, + tokenId: tokenIdMatch ? tokenIdMatch[1] : null, + price: priceMatch ? parseFloat(priceMatch[1]) : undefined, + }; +} + +export const listNFTAction = (nftService: ReservoirService): Action => { + return { + name: "LIST_NFT", + similes: ["SELL_NFT", "CREATE_LISTING"], + description: + "Lists an NFT for sale on ikigailabs.xyz marketplace at double the purchase price.", + + validate: async (runtime: IAgentRuntime, message: Memory) => { + const content = message.content.text.toLowerCase(); + return ( + (content.includes("list") || content.includes("sell")) && + content.includes("nft") && + (content.includes("0x") || + content.includes("token") || + content.includes("#")) + ); + }, + + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + try { + const { + collectionAddress, + tokenId, + price: userSpecifiedPrice, + } = extractListingDetails(message.content.text); + + if (!collectionAddress || !tokenId) { + throw new Error( + "Please provide the collection address and token ID" + ); + } + + if (!nftService) { + throw new Error("NFT service not found"); + } + + // Verify ownership before listing + const ownedNFTs = await nftService.getOwnedNFTs(message.userId); + const ownedNFT = ownedNFTs.find( + (nft) => + nft.collectionAddress.toLowerCase() === + collectionAddress.toLowerCase() && + nft.tokenId === tokenId + ); + + if (!ownedNFT) { + throw new Error("You don't own this NFT"); + } + + // Create the listing on ikigailabs + const listing = await nftService.createListing({ + tokenId, + collectionAddress, + price: userSpecifiedPrice || 0, // Default to 0 if no price specified + marketplace: "ikigailabs", + expirationTime: + Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60, // 30 days + }); + + const response = + `Successfully created listing on ikigailabs.xyz:\n` + + `• Collection: ${collectionAddress}\n` + + `• Token ID: ${tokenId}\n` + + `• Listing Price: ${userSpecifiedPrice} ETH\n` + + `• Status: ${listing.status}\n` + + `• Listing URL: ${listing.marketplaceUrl}\n` + + (listing.transactionHash + ? `• Transaction: ${listing.transactionHash}\n` + : ""); + + callback({ + text: response, + }); + + await runtime.messageManager.createMemory({ + id: message.id, + content: { text: response }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + + return true; + } catch (error) { + console.error("NFT listing failed:", error); + await runtime.messageManager.createMemory({ + id: message.id, + content: { + text: `Failed to list NFT: ${error.message}`, + }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "List token #123 from collection 0x1234...abcd", + }, + }, + { + user: "{{user2}}", + content: { + text: "Creating listing on ikigailabs.xyz at 2x purchase price...", + action: "LIST_NFT", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "List token #123 from collection 0x1234...abcd for 5 ETH", + }, + }, + { + user: "{{user2}}", + content: { + text: "Creating listing on ikigailabs.xyz with specified price...", + action: "LIST_NFT", + }, + }, + ], + ], + }; +}; diff --git a/packages/plugin-nft-collections/src/actions/sweep-floor.ts b/packages/plugin-nft-collections/src/actions/sweep-floor.ts new file mode 100644 index 000000000000..13557da3353d --- /dev/null +++ b/packages/plugin-nft-collections/src/actions/sweep-floor.ts @@ -0,0 +1,131 @@ +import { Action, IAgentRuntime, Memory, State } from "@elizaos/core"; +import { ReservoirService } from "../services/reservoir"; +import { HandlerCallback } from "@elizaos/core"; + +// Helper function to extract NFT details from the message +function extractNFTDetails(text: string): { + collectionAddress: string | null; + quantity: number; +} { + const addressMatch = text.match(/0x[a-fA-F0-9]{40}/); + const quantityMatch = text.match(/\d+/); + + return { + collectionAddress: addressMatch ? addressMatch[0] : null, + quantity: quantityMatch ? parseInt(quantityMatch[0]) : 1, + }; +} + +export const sweepFloorAction = (nftService: ReservoirService): Action => { + return { + name: "SWEEP_FLOOR_NFT", + similes: ["BUY_FLOOR_NFT", "PURCHASE_FLOOR_NFT"], + description: + "Sweeps the floor of a specified EVM NFT collection by purchasing the lowest-priced available NFTs.", + + validate: async (runtime: IAgentRuntime, message: Memory) => { + const content = message.content.text.toLowerCase(); + return ( + (content.includes("sweep") || content.includes("buy")) && + content.includes("nft") && + (content.includes("0x") || content.includes("floor")) + ); + }, + + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + try { + const { collectionAddress, quantity } = extractNFTDetails( + message.content.text + ); + + if (!collectionAddress) { + throw new Error( + "No valid collection address found in message" + ); + } + + if (!nftService) { + throw new Error("NFT service not found"); + } + + // Get floor listings sorted by price + const floorListings = await nftService.getFloorListings({ + collection: collectionAddress, + limit: quantity, + sortBy: "price", + }); + + if (floorListings.length < quantity) { + throw new Error( + `Only ${floorListings.length} NFTs available at floor price` + ); + } + + // Execute the buy transaction + const result = await nftService.executeBuy({ + listings: floorListings, + taker: message.userId, // Assuming userId is the wallet address + }); + + const totalPrice = floorListings.reduce( + (sum, listing) => sum + listing.price, + 0 + ); + const response = + `Successfully initiated sweep of ${quantity} NFTs from collection ${collectionAddress}:\n` + + `• Total Cost: ${totalPrice} ETH\n` + + `• Average Price: ${(totalPrice / quantity).toFixed(4)} ETH\n` + + `• Transaction Path: ${result.path}\n` + + `• Status: ${result.steps.map((step) => `${step.action} - ${step.status}`).join(", ")}`; + callback({ + text: response, + }); + await runtime.messageManager.createMemory({ + id: message.id, + content: { text: response }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + + return true; + } catch (error) { + console.error("Floor sweep failed:", error); + await runtime.messageManager.createMemory({ + id: message.id, + content: { + text: `Failed to sweep floor NFTs: ${error.message}`, + }, + roomId: message.roomId, + userId: message.userId, + agentId: runtime.agentId, + }); + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Sweep 5 NFTs from collection 0x1234...abcd at floor price", + }, + }, + { + user: "{{user2}}", + content: { + text: "Executing floor sweep for 5 NFTs...", + action: "SWEEP_FLOOR_NFT", + }, + }, + ], + ], + }; +}; diff --git a/packages/plugin-nft-collections/src/constants/collections.ts b/packages/plugin-nft-collections/src/constants/collections.ts new file mode 100644 index 000000000000..c02654c98f73 --- /dev/null +++ b/packages/plugin-nft-collections/src/constants/collections.ts @@ -0,0 +1,106 @@ +import { z } from "zod"; + +export const NFTCollectionSchema = z.object({ + address: z.string(), + name: z.string(), + symbol: z.string().optional(), + description: z.string().optional(), + imageUrl: z.string().optional(), + externalUrl: z.string().optional(), + twitterUsername: z.string().optional(), + discordUrl: z.string().optional(), + verified: z.boolean().default(true), + featured: z.boolean().default(false), + createdAt: z.string().optional(), + // Market data + floorPrice: z.number().optional(), + volume24h: z.number().optional(), + marketCap: z.number().optional(), + holders: z.number().optional(), + totalSupply: z.number().optional(), + // Social metrics + twitterFollowers: z.number().optional(), + discordMembers: z.number().optional(), + // Trading features + supportedMarketplaces: z.array(z.string()).optional(), + hasRoyalties: z.boolean().optional(), + royaltyPercentage: z.number().optional(), + // Metadata + traits: z.record(z.string(), z.array(z.string())).optional(), + categories: z.array(z.string()).optional(), + lastUpdate: z.string().optional(), +}); + +export type NFTCollection = z.infer; + +/** + * Curated list of NFT collections featured on ikigailabs.xyz + * This list is used to prioritize and enhance functionality for these collections + */ +export const CURATED_COLLECTIONS: NFTCollection[] = [ + { + address: "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", + name: "Bored Ape Yacht Club", + symbol: "BAYC", + description: + "The Bored Ape Yacht Club is a collection of 10,000 unique Bored Ape NFTs.", + verified: true, + featured: true, + twitterUsername: "BoredApeYC", + discordUrl: "https://discord.gg/3P5K3dzgdB", + }, + // Add more collections here... +]; + +/** + * Map of collection addresses to their metadata for quick lookup + */ +export const COLLECTIONS_MAP = new Map( + CURATED_COLLECTIONS.map((collection) => [ + collection.address.toLowerCase(), + collection, + ]) +); + +/** + * Check if a collection address is in our curated list + */ +export function isCuratedCollection(address: string): boolean { + return COLLECTIONS_MAP.has(address.toLowerCase()); +} + +/** + * Get collection metadata if it exists in our curated list + */ +export function getCuratedCollection( + address: string +): NFTCollection | undefined { + return COLLECTIONS_MAP.get(address.toLowerCase()); +} + +/** + * Get all curated collection addresses + */ +export function getCuratedAddresses(): string[] { + return CURATED_COLLECTIONS.map((collection) => + collection.address.toLowerCase() + ); +} + +/** + * Get featured collection addresses + */ +export function getFeaturedAddresses(): string[] { + return CURATED_COLLECTIONS.filter((collection) => collection.featured).map( + (collection) => collection.address.toLowerCase() + ); +} + +/** + * Get verified collection addresses + */ +export function getVerifiedAddresses(): string[] { + return CURATED_COLLECTIONS.filter((collection) => collection.verified).map( + (collection) => collection.address.toLowerCase() + ); +} diff --git a/packages/plugin-nft-collections/src/constants/curated-collections.ts b/packages/plugin-nft-collections/src/constants/curated-collections.ts new file mode 100644 index 000000000000..be7e518a7804 --- /dev/null +++ b/packages/plugin-nft-collections/src/constants/curated-collections.ts @@ -0,0 +1,1923 @@ +import { z } from "zod"; + +export const CollectionCategory = z.enum([ + "Gen Art", + "Photography", + "AI Inspired", + "Memetics", + "Iconic Gems", +]); + +//export type CollectionCategory = z.infer; + +export const CuratedCollectionSchema = z.object({ + address: z.string(), + name: z.string(), + category: CollectionCategory, + creator: z.string().optional(), + tokenIdRange: z + .object({ + start: z.string().optional(), + end: z.string().optional(), + }) + .optional(), +}); + +export type CuratedCollection = z.infer; + +/** + * Curated list of NFT collections featured on ikigailabs.xyz + */ +export const CURATED_COLLECTIONS: CuratedCollection[] = [ + // Gen Art Collections + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Fidenza", + category: "Gen Art", + creator: "Tyler Hobbs", + tokenIdRange: { + start: "78000000", + end: "78999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Ringers", + category: "Gen Art", + creator: "Dmitri Cherniak", + tokenIdRange: { + start: "13000000", + end: "13999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Pigments", + category: "Gen Art", + creator: "Darien Brito", + tokenIdRange: { + start: "129000000", + end: "129999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Human Unreadable", + category: "Gen Art", + creator: "Operator", + tokenIdRange: { + start: "455000000", + end: "455999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Skulptuur", + category: "Gen Art", + creator: "Piter Pasma", + tokenIdRange: { + start: "173000000", + end: "173999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Scribbled Boundaries", + category: "Gen Art", + creator: "William Tan", + tokenIdRange: { + start: "131000000", + end: "131999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "The Harvest", + category: "Gen Art", + creator: "Per Kristian Stoveland", + tokenIdRange: { + start: "407000000", + end: "407999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Fragments of an Infinite Field", + category: "Gen Art", + creator: "Monica Rizzolli", + tokenIdRange: { + start: "159000000", + end: "159999999", + }, + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "FOLIO", + category: "Gen Art", + creator: "Matt DesLauriers", + tokenIdRange: { + start: "8000000", + end: "8999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Meridian", + category: "Gen Art", + creator: "Matt DesLauriers", + tokenIdRange: { + start: "163000000", + end: "163999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Archetype", + category: "Gen Art", + creator: "Kjetil Golid", + tokenIdRange: { + start: "23000000", + end: "23999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Gazers", + category: "Gen Art", + creator: "Matt Kane", + tokenIdRange: { + start: "215000000", + end: "215999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Subscapes", + category: "Gen Art", + creator: "Matt DesLauriers", + tokenIdRange: { + start: "53000000", + end: "53999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Anticyclone", + category: "Gen Art", + creator: "William Mapan", + tokenIdRange: { + start: "304000000", + end: "304999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Memories of Qilin", + category: "Gen Art", + creator: "Emily Xie", + tokenIdRange: { + start: "282000000", + end: "282999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Elevated Deconstructions", + category: "Gen Art", + creator: "luxpris", + tokenIdRange: { + start: "7000000", + end: "7999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Screens", + category: "Gen Art", + creator: "Thomas Lin Pedersen", + tokenIdRange: { + start: "255000000", + end: "255999999", + }, + }, + { + address: "0x059edd72cd353df5106d2b9cc5ab83a52287ac3a", + name: "Genesis", + category: "Gen Art", + creator: "DCA", + tokenIdRange: { + start: "1000000", + end: "1999999", + }, + }, + { + address: "0x8cdbd7010bd197848e95c1fd7f6e870aac9b0d3c", + name: "///", + category: "Gen Art", + creator: "Snowfro", + tokenIdRange: { + start: "2000000", + end: "2999999", + }, + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "100 Untitled Spaces", + category: "Gen Art", + creator: "Snowfro", + tokenIdRange: { + start: "28000000", + end: "28999999", + }, + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "Inflection", + category: "Gen Art", + creator: "Jeff Davis", + tokenIdRange: { + start: "3000000", + end: "3999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Rapture", + category: "Gen Art", + creator: "Thomas Lin Pedersen", + tokenIdRange: { + start: "141000000", + end: "141999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Blind Spots", + category: "Gen Art", + creator: "Shaderism", + tokenIdRange: { + start: "484000000", + end: "484999999", + }, + }, + { + address: "0xc73b17179bf0c59cd5860bb25247d1d1092c1088", + name: "QQL Mint Pass", + category: "Gen Art", + creator: "Tyler Hobbs & Dandelion Wist", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "888", + category: "Gen Art", + creator: "Kevin Abosch", + tokenIdRange: { + start: "opensea-888-by-kevin-abosch", + end: "opensea-888-by-kevin-abosch", + }, + }, + { + address: "0x0e42ffbac75bcc30cd0015f8aaa608539ba35fbb", + name: "Mind the Gap", + category: "Gen Art", + creator: "MountVitruvius", + }, + { + address: "0x7d2d93eed47e55c873b9580b4e6ebd5bc045d1b6", + name: "Mercedes", + category: "Gen Art", + }, + { + address: "0x4e1f41613c9084fdb9e34e11fae9412427480e56", + name: "Terraforms", + category: "Gen Art", + creator: "Mathcastles", + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Hōrō", + category: "Gen Art", + creator: "makio135", + }, + { + address: "0x2b0bfa93beb22f44e7c1be88efd80396f8d9f1d4", + name: "STATE OF THE ART", + category: "Gen Art", + creator: "ThankYouX", + }, + { + address: "0xA4F6105B612f913e468F6B27FCbb48c3569ACbE7", + name: "TECTONICS", + category: "Gen Art", + creator: "mpkoz", + }, + { + address: "0x845dd2a7ee2a92a0518ab2135365ed63fdba0c88", + name: "QQL", + category: "Gen Art", + creator: "Tyler Hobbs & Dandelion Wist", + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Passin", + category: "Gen Art", + tokenIdRange: { + start: "314000000", + end: "314999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Yazid", + category: "Gen Art", + tokenIdRange: { + start: "281000000", + end: "281999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Radix 2", + category: "Gen Art", + tokenIdRange: { + start: "139000000", + end: "139999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Radix 1", + category: "Gen Art", + tokenIdRange: { + start: "104000000", + end: "104999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Catblocks", + category: "Gen Art", + tokenIdRange: { + start: "73000000", + end: "73999999", + }, + }, + { + address: "0x4d928ab507bf633dd8e68024a1fb4c99316bbdf3", + name: "Love Tennis", + category: "Gen Art", + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Renders Game", + category: "Gen Art", + creator: "MountVitruvius", + tokenIdRange: { + start: "415000000", + end: "415999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Running Moon", + category: "Gen Art", + creator: "Licia He", + tokenIdRange: { + start: "334000000", + end: "334999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Neural Sediments", + category: "Gen Art", + creator: "Eko33", + tokenIdRange: { + start: "418000000", + end: "418999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Fontana", + category: "Gen Art", + creator: "Harvey Rayner", + tokenIdRange: { + start: "367000000", + end: "367999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Algobots", + category: "Gen Art", + creator: "Stina Jones", + tokenIdRange: { + start: "40000000", + end: "40999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Apparitions", + category: "Gen Art", + creator: "Aaron Penne", + tokenIdRange: { + start: "28000000", + end: "28999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "[Dis]entanglement", + category: "Gen Art", + creator: "onlygenerated", + tokenIdRange: { + start: "97000000", + end: "97999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Semblance", + category: "Gen Art", + creator: "rahul iyer", + tokenIdRange: { + start: "447000000", + end: "447999999", + }, + }, + { + address: "0xCe3aB0D9D5e36a12235def6CaB84C355D51703aB", + name: "Interference", + category: "Gen Art", + creator: "Phaust", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "888", + category: "Gen Art", + creator: "Kevin Abosch", + tokenIdRange: { + start: "opensea-888-by-kevin-abosch", + end: "opensea-888-by-kevin-abosch", + }, + }, + { + address: "0x2DB452c9A7b14f927F51589a54B4D56dD4B31977", + name: "Web", + category: "Gen Art", + creator: "Jan Robert Leegte / Superposition", + }, + { + address: "0x7F72528229F85C99D8843C0317eF91F4A2793Edf", + name: "1111", + category: "Gen Art", + creator: "Kevin Abosch", + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Geometry Runners", + category: "Gen Art", + creator: "Rich Lord", + tokenIdRange: { + start: "138000000", + end: "138999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Ecumenopolis", + category: "Gen Art", + creator: "Joshua Bagley", + tokenIdRange: { + start: "119000000", + end: "119999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Edifice", + category: "Gen Art", + creator: "Ben Kovach", + tokenIdRange: { + start: "204000000", + end: "204999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Singularity", + category: "Gen Art", + creator: "Hideki Tsukamoto", + tokenIdRange: { + start: "8000000", + end: "8999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Rinascita", + category: "Gen Art", + creator: "Stefano Contiero", + tokenIdRange: { + start: "121000000", + end: "121999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Alien Insects", + category: "Gen Art", + creator: "Shvembldr", + tokenIdRange: { + start: "137000000", + end: "137999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "720 Minutes", + category: "Gen Art", + creator: "Alexis André", + tokenIdRange: { + start: "27000000", + end: "27999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "CENTURY", + category: "Gen Art", + creator: "Casey REAS", + tokenIdRange: { + start: "100000000", + end: "100999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "LeWitt Generator Generator", + category: "Gen Art", + creator: "Mitchell F. Chan", + tokenIdRange: { + start: "118000000", + end: "118999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Endless Nameless", + category: "Gen Art", + creator: "Rafaël Rozendaal", + tokenIdRange: { + start: "120000000", + end: "120999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Obicera", + category: "Gen Art", + creator: "Alexis André", + tokenIdRange: { + start: "130000000", + end: "130999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Bubble Blobby", + category: "Gen Art", + creator: "Jason Ting", + tokenIdRange: { + start: "62000000", + end: "62999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Divisions", + category: "Gen Art", + creator: "Michael Connolly", + tokenIdRange: { + start: "108000000", + end: "108999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Phototaxis", + category: "Gen Art", + creator: "Casey REAS", + tokenIdRange: { + start: "164000000", + end: "164999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "ORI", + category: "Gen Art", + creator: "James Merrill", + tokenIdRange: { + start: "379000000", + end: "379999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Trichro-matic", + category: "Gen Art", + creator: "MountVitruvius", + tokenIdRange: { + start: "482000000", + end: "482999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Return", + category: "Gen Art", + creator: "Aaron Penne", + tokenIdRange: { + start: "77000000", + end: "77999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Pre-Process", + category: "Gen Art", + creator: "Casey REAS", + tokenIdRange: { + start: "383000000", + end: "383999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Cargo", + category: "Gen Art", + creator: "Kim Asendorf", + tokenIdRange: { + start: "426000000", + end: "426999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Ieva", + category: "Gen Art", + creator: "Shvembldr", + tokenIdRange: { + start: "339000000", + end: "339999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Color Study", + category: "Gen Art", + creator: "Jeff Davis", + tokenIdRange: { + start: "16000000", + end: "16999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "R3sonance", + category: "Gen Art", + creator: "ge1doot", + tokenIdRange: { + start: "19000000", + end: "19999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Primitives", + category: "Gen Art", + creator: "Aranda\\Lasch", + tokenIdRange: { + start: "368000000", + end: "368999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "RASTER", + category: "Gen Art", + creator: "itsgalo", + tokenIdRange: { + start: "341000000", + end: "341999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Messengers", + category: "Gen Art", + creator: "Alexis André", + tokenIdRange: { + start: "68000000", + end: "68999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Squares", + category: "Gen Art", + creator: "Martin Grasser", + tokenIdRange: { + start: "330000000", + end: "330999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "The Liths of Sisyphus", + category: "Gen Art", + creator: "nonfigurativ", + tokenIdRange: { + start: "124000000", + end: "124999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Stroming", + category: "Gen Art", + creator: "Bart Simons", + tokenIdRange: { + start: "86000000", + end: "86999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Paths", + category: "Gen Art", + creator: "Darien Brito", + tokenIdRange: { + start: "217000000", + end: "217999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Enchiridion", + category: "Gen Art", + creator: "Generative Artworks", + tokenIdRange: { + start: "101000000", + end: "101999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Getijde", + category: "Gen Art", + creator: "Bart Simons", + tokenIdRange: { + start: "226000000", + end: "226999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Flux", + category: "Gen Art", + creator: "Owen Moore", + tokenIdRange: { + start: "296000000", + end: "296999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Good, Computer", + category: "Gen Art", + creator: "Dean Blacc", + tokenIdRange: { + start: "396000000", + end: "396999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Non Either", + category: "Gen Art", + creator: "Rafaël Rozendaal", + tokenIdRange: { + start: "260000000", + end: "260999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Gumbo", + category: "Gen Art", + creator: "Mathias Isaksen", + tokenIdRange: { + start: "462000000", + end: "462999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "70s Pop Series One", + category: "Gen Art", + creator: "Daniel Catt", + tokenIdRange: { + start: "46000000", + end: "46999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Vahria", + category: "Gen Art", + creator: "Darien Brito", + tokenIdRange: { + start: "340000000", + end: "340999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Pointila", + category: "Gen Art", + creator: "Phaust", + tokenIdRange: { + start: "353000000", + end: "353999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Intersections", + category: "Gen Art", + creator: "Rafaël Rozendaal", + tokenIdRange: { + start: "373000000", + end: "373999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "This Is Not A Rock", + category: "Gen Art", + creator: "Nicole Vella", + tokenIdRange: { + start: "471000000", + end: "471999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Immaterial", + category: "Gen Art", + creator: "Bjørn Staal", + tokenIdRange: { + start: "481000000", + end: "481999999", + }, + }, + { + address: "0x7d2d93eed47e55c873b9580b4e6ebd5bc045d1b6", + name: "Maschine", + category: "Gen Art", + }, + { + address: "0xcbc8a5472bba032125c1a7d11427aa3b5035207b", + name: "Blocks", + category: "Gen Art", + creator: "Harto", + }, + { + address: "0x145789247973c5d612bf121e9e4eef84b63eb707", + name: "923 EMPTY ROOMS", + category: "Gen Art", + creator: "Casey REAS", + tokenIdRange: { + start: "1000000", + end: "1999999", + }, + }, + { + address: "0x71b1956bc6640a70893e49f5816724425891f159", + name: "Fleeting Thoughts", + category: "Gen Art", + creator: "Nadieh Bremer", + }, + { + address: "0xc332fa232ab53628d0e9acbb806c5ee5a82b3467", + name: "Hypnagogic", + category: "Gen Art", + creator: "rudxane", + }, + { + address: "0x32d4be5ee74376e08038d652d4dc26e62c67f436", + name: "Elefante", + category: "Gen Art", + creator: "Michael Connolly", + tokenIdRange: { + start: "4000000", + end: "4999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Brushpops", + category: "Gen Art", + creator: "Matty Mariansky", + tokenIdRange: { + start: "135000000", + end: "135999999", + }, + }, + { + address: "0xeb7088423d7f8c1448ef074fc372bc67efa4de44", + name: "Toys", + category: "Gen Art", + creator: "0xTechno", + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Fleur", + category: "Gen Art", + creator: "AnaPet", + tokenIdRange: { + start: "378000000", + end: "378999999", + }, + }, + { + address: "0x29e891f4f2ae6a516026e3bcf0353d798e1de90", + name: "Cathartic Prism", + category: "Gen Art", + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "100 Sunsets", + category: "Gen Art", + creator: "Zach Lieberman", + tokenIdRange: { + start: "29000000", + end: "29999999", + }, + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "Sparkling Goodbye", + category: "Gen Art", + creator: "Licia He", + tokenIdRange: { + start: "47000000", + end: "47999999", + }, + }, + { + address: "0xe034bb2b1b9471e11cf1a0a9199a156fb227aa5d", + name: "Themes and Variations", + category: "Gen Art", + creator: "Vera Molnár", + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "Formation", + category: "Gen Art", + creator: "Jeff Davis", + tokenIdRange: { + start: "11000000", + end: "11999999", + }, + }, + { + address: "0x229b1a62210c2329fe7a0ee67f517ae611789b35", + name: "CIPHERS", + category: "Gen Art", + creator: "Per Kristian Stoveland", + }, + { + address: "0xaa39b261b8d4fdaa8a1ed436cc14a723c0480ee9", + name: "Glitch", + category: "Gen Art", + }, + { + address: "0x95864937cc8c90878c3254cf418632f8154d3b7d", + name: "Quadrature", + category: "Gen Art", + creator: "Darien Brito", + }, + { + address: "0x9bf53d8c65f03d895dacaa776cc960e462ecb599", + name: "Primera", + category: "Gen Art", + creator: "Mitchell and Yun", + }, + { + address: "0x0a1bbd57033f57e7b6743621b79fcb9eb2ce3676", + name: "1935", + category: "Gen Art", + creator: "William Mapan", + tokenIdRange: { + start: "25000000", + end: "25999999", + }, + }, + { + address: "0x99a9b7c1116f9ceeb1652de04d5969cce509b069", + name: "Memories of Digital Data", + category: "Gen Art", + creator: "Kazuhiro Tanimoto", + tokenIdRange: { + start: "428000000", + end: "428999999", + }, + }, + { + address: "0x2c7f335460fb9df460ff7ad6cc64cb7dd4064862", + name: "BITFRAMES", + category: "Gen Art", + }, + + // Photography Collections + { + address: "0x509a050f573be0d5e01a73c3726e17161729558b", + name: "Where My Vans Go", + category: "Photography", + }, + // ... rest of Photography collections ... + + // AI Inspired Collections + // ... AI Inspired collections ... + + // Memetics Collections + // ... Memetics collections ... + + // Iconic Gems Collections + { + address: "0xd754937672300ae6708a51229112de4017810934", + name: "DEAFBEEF Series 4", + category: "Iconic Gems", + }, + { + address: "0x34eebee6942d8def3c125458d1a86e0a897fd6f9", + name: "Checks VV", + category: "Iconic Gems", + }, + { + address: "0x6339e5e072086621540d0362c4e3cea0d643e114", + name: "Opepen", + category: "Iconic Gems", + }, + { + address: "0xc3f733ca98e0dad0386979eb96fb1722a1a05e69", + name: "Mooncats", + category: "Iconic Gems", + }, + { + address: "0xdb7F99605FD3Cc23067c3d8c1bA637109f083dc2", + name: "Doppelganger", + category: "Iconic Gems", + }, + { + address: "0x6b6dd0c1aab55052bfaac891c3fb81a1cd7230ec", + name: "Justin Aversano - Cognition", + category: "Iconic Gems", + creator: "Justin Aversano", + }, + { + address: "0xb92b8d7e45c0f197a8236c8345b86765250baf7c", + name: "Asprey Bugatti La Voiture Noire Collection", + category: "Iconic Gems", + }, + { + address: "0x5e86F887fF9676a58f25A6E057B7a6B8d65e1874", + name: "Bitchcoin", + category: "Iconic Gems", + }, + { + address: "0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7", + name: "MeeBits", + category: "Iconic Gems", + }, + { + address: "0x12f28e2106ce8fd8464885b80ea865e98b465149", + name: "Beeple Genesis", + category: "Iconic Gems", + creator: "Beeple", + }, + { + address: "0xb852c6b5892256c264cc2c888ea462189154d8d7", + name: "rektguy", + category: "Iconic Gems", + }, + { + address: "0x7487b35cc8902964599a6e5a90763a8e80f1395e", + name: "Life In Japan Editions", + category: "Iconic Gems", + creator: "Grant Yun", + }, + { + address: "0xc17038437143b7d62f0bf861ccc154889d17efe9", + name: "Beeple Everydays", + category: "Iconic Gems", + creator: "Beeple", + }, + { + address: "0xae1fb0cce66904b9fa2b60bef2b8057ce2441538", + name: "REPLICATOR", + category: "Iconic Gems", + creator: "Mad Dog Jones", + tokenIdRange: { + start: "4295032833", + end: "4295032833", + }, + }, + { + address: "0x082dcab372505ae56eafde58204ba5b12ff3f3f5", + name: "Light Years", + category: "Iconic Gems", + creator: "Dmitri Cherniak", + }, + { + address: "0x8a939fd297fab7388d6e6c634eee3c863626be57", + name: "xCopy", + category: "Iconic Gems", + creator: "XCOPY", + }, + { + address: "0xaadc2d4261199ce24a4b0a57370c4fcf43bb60aa", + name: "The Currency", + category: "Iconic Gems", + creator: "Damien Hirst", + }, + { + address: "0x513cd71defc801b9c1aa763db47b5df223da77a2", + name: "OSF's Red Lite District", + category: "Iconic Gems", + }, + { + address: "0x1f493aa73c628259f755fd8b6540a3b4de3e994c", + name: "Decal", + category: "Iconic Gems", + creator: "Reuben Wu", + }, + { + address: "0x6b00de202e3cd03c523ca05d8b47231dbdd9142b", + name: "Tom Sachs: Rocket Factory - Rockets", + category: "Iconic Gems", + creator: "Tom Sachs", + }, + { + address: "0xc2c747e0f7004f9e8817db2ca4997657a7746928", + name: "Hashmasks", + category: "Iconic Gems", + }, + { + address: "0x68d0f6d1d99bb830e17ffaa8adb5bbed9d6eec2e", + name: "Penthouse", + category: "Iconic Gems", + creator: "0xdgb", + tokenIdRange: { + start: "opensea-penthouse-by-0xdgb", + end: "opensea-penthouse-by-0xdgb", + }, + }, + { + address: "0x33fd426905f149f8376e227d0c9d3340aad17af1", + name: "6529Collections", + category: "Iconic Gems", + }, + { + address: "0x34b45aad69b78bf5dc8cc2ac74d895f522a451a9", + name: "Light Years: Process Works", + category: "Iconic Gems", + creator: "Dmitri Cherniak", + }, + { + address: "0x7afeda4c714e1c0a2a1248332c100924506ac8e6", + name: "FVCK_CRYSTAL", + category: "Iconic Gems", + }, + { + address: "0x2e55fb6e20e29344adb531200811007092051443", + name: "Pop Wonder SuperRare", + category: "Iconic Gems", + }, + { + address: "0xd754937672300ae6708a51229112de4017810934", + name: "DeadBeef", + category: "Iconic Gems", + creator: "DEAFBEEF", + }, + { + address: "0xda1bf9b5de160cecde3f9304b187a2f5f5b83707", + name: "CHRONOPHOTOGRAPH", + category: "Iconic Gems", + creator: "0xDEAFBEEF", + }, + { + address: "0x6f854b0c8c596128504eaff09eae53ca625bad90", + name: "0xdgb Editions (2023)", + category: "Iconic Gems", + creator: "0xdgb", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "Pop Wonder OS", + category: "Iconic Gems", + tokenIdRange: { + start: "opensea-pop-wonder-world", + end: "opensea-pop-wonder-world", + }, + }, + { + address: "0xd92e44ac213b9ebda0178e1523cc0ce177b7fa96", + name: "Beeple", + category: "Iconic Gems", + creator: "Beeple", + }, + { + address: "0xd1169e5349d1cb9941f3dcba135c8a4b9eacfdde", + name: "Max Pain Xcopy", + category: "Iconic Gems", + creator: "XCOPY", + }, + { + address: "0xCcDF1373040D9Ca4B5BE1392d1945C1DaE4a862c", + name: "Porsche", + category: "Iconic Gems", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "SABET og", + category: "Iconic Gems", + creator: "SABET", + tokenIdRange: { + start: "opensea-sabet", + end: "opensea-sabet", + }, + }, + { + address: "0xd90829c6c6012e4dde506bd95d7499a04b9a56de", + name: "The Broken Keys", + category: "Iconic Gems", + }, + { + address: "0xc0979e362143b7d62f0bf861ccc154889d17efe9", + name: "Curious Cabins", + category: "Iconic Gems", + }, + { + address: "0x0dbfb2640f0692dd96d6d66657a1eac816121f03", + name: "Caravan", + category: "Iconic Gems", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "Pop Wonder Editions", + category: "Iconic Gems", + tokenIdRange: { + start: "opensea-pop-wonder-editions", + end: "opensea-pop-wonder-editions", + }, + }, + { + address: "0x09b0ef6e8ef63db4be5df9e20b5f4fd3e3b92dac", + name: "Porsche Pioneers", + category: "Iconic Gems", + }, + { + address: "0x0cf3da2732ae7f078f8400c7325496774761d098", + name: "Daniloff", + category: "Iconic Gems", + }, + { + address: "0x4f96a7116a4c2391fdaf239d2fb7260ac2fc0545", + name: "Cath behind the scenes", + category: "Iconic Gems", + }, + { + address: "0xe8554c1362ffedc2664645a9a90be54a08ee1b44", + name: "Blue Patagonia", + category: "Iconic Gems", + }, + { + address: "0x1ac8acb916fd62b5ed35587a10d64cdfc940a271", + name: "Night Vision Series", + category: "Iconic Gems", + creator: "Jake Fried", + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Running Moon", + category: "Iconic Gems", + creator: "Licia He", + tokenIdRange: { + start: "334000000", + end: "334999999", + }, + }, + { + address: "0x4d928ab507bf633dd8e68024a1fb4c99316bbdf3", + name: "LOVE Tennis Art Project", + category: "Iconic Gems", + creator: "Martin Grasser", + }, + { + address: "0xd1169e5349d1cb9941f3dcba135c8a4b9eacfdde", + name: "MAX PAIN AND FRENS", + category: "Iconic Gems", + creator: "XCOPY", + }, + { + address: "0x34eebee6942d8def3c125458d1a86e0a897fd6f9", + name: "Checks - VV Edition", + category: "Iconic Gems", + }, + { + address: "0x6339e5e072086621540d0362c4e3cea0d643e114", + name: "Opepen Edition", + category: "Iconic Gems", + }, + { + address: "0xefec8fb24b41b9ea9c594eb7956aadcc6dd0490f", + name: "Vibes", + category: "Iconic Gems", + creator: "Amber Vittoria", + }, + { + address: "0x8cdbd7010bd197848e95c1fd7f6e870aac9b0d3c", + name: "Trademark", + category: "Iconic Gems", + creator: "Jack Butcher", + tokenIdRange: { + start: "4000000", + end: "4999999", + }, + }, + { + address: "0x8cdbd7010bd197848e95c1fd7f6e870aac9b0d3c", + name: "Signature", + category: "Iconic Gems", + creator: "Jack Butcher", + tokenIdRange: { + start: "3000000", + end: "3999999", + }, + }, + { + address: "0xda6558fa1c2452938168ef79dfd29c45aba8a32b", + name: "LUCI: Chapter 5 - The Monument Game", + category: "Iconic Gems", + creator: "Sam Spratt", + }, + { + address: "0xdfea2b364db868b1d2601d6b833d74db4de94460", + name: "REMNANTS", + category: "Iconic Gems", + }, + { + address: "0x16edf9d65a54e1617921a8125d77ef48c4e8c449", + name: "Monster Soup", + category: "Iconic Gems", + creator: "Des Lucrece", + }, + { + address: "0x5116edd4ac94d6aeb54b5a1533ca51a7e0c86807", + name: "Station3 Patron", + category: "Iconic Gems", + }, + { + address: "0xe77ad290adab2989a81ae62ab2467c01b45feeff", + name: "Proceed w/ Caution", + category: "Iconic Gems", + }, + { + address: "0xb2e6951a52d38814ed3ce2f4b9bec26091304747", + name: "Ackstract Editions", + category: "Iconic Gems", + }, + { + address: "0x25b834999ea471429ee211e2d465e85adae0ce14", + name: "batz editions", + category: "Iconic Gems", + }, + { + address: "0xb41e9aa79bda9890e9c74127d2af0aa610606aed", + name: "EXIF", + category: "Iconic Gems", + creator: "Guido Di Salle", + }, + { + address: "0x720786231ddf158ebd23bd590f73b29bff78d783", + name: "Strands of Solitude", + category: "Iconic Gems", + creator: "William Mapan", + }, + { + address: "0x8bd8eab9655573165fdafa404e72dc5e769a83fa", + name: "Alternate", + category: "Iconic Gems", + creator: "Kim Asendorf", + }, + { + address: "0x379b5616a6afe6bc6baa490ef8fd98bf6d7db45c", + name: "Checks - VV Elements", + category: "Iconic Gems", + }, + { + address: "0xa94161fbe69e08ff5a36dfafa61bdf29dd2fb928", + name: "Voxelglyph", + category: "Iconic Gems", + }, + { + address: "0x026224a2940bfe258d0dbe947919b62fe321f042", + name: "lobsterdao", + category: "Iconic Gems", + }, + { + address: "0x36f4d96fe0d4eb33cdc2dc6c0bca15b9cdd0d648", + name: "gmDAO", + category: "Iconic Gems", + }, + { + address: "0xfd6a5540ad049853420c42bbd46c01fd5c9e5f5a", + name: "Interwoven", + category: "Iconic Gems", + creator: "Emily Xie", + }, + { + address: "0xd32938e992a1821b6441318061136c83ea715ba1", + name: "Formation", + category: "Iconic Gems", + creator: "Harto", + }, + { + address: "0x4b33a369a9b4ff51bfc0a7267e30940507b81d84", + name: "Distance", + category: "Iconic Gems", + creator: "William Mapan", + }, + { + address: "0x9f803635a5af311d9a3b73132482a95eb540f71a", + name: "The Great Color Study", + category: "Iconic Gems", + }, + { + address: "0x36f20faf3785d226bf5478f9b271a7077859b5a9", + name: "SquiggleDAO", + category: "Iconic Gems", + }, + { + address: "0xb034fa4ba0a5cca4bd9f5b9db845fb26c5500b8c", + name: "Decal", + category: "Iconic Gems", + creator: "XCOPY", + }, + { + address: "0x186e2eece5ddbac8f1dde73723586b2c86aa8b58", + name: "ACID PEPES", + category: "Iconic Gems", + creator: "LORS", + }, + { + address: "0xbf476fad7e4ae2d679e9e739d3704a890f53c2a2", + name: "Now Pass", + category: "Iconic Gems", + }, + { + address: "0x66293a9b1339ca99623e82bc71f88d767f60ad21", + name: "Catharsis", + category: "Iconic Gems", + creator: "Dario Lanza", + }, + { + address: "0xc23a563a26afff06e945ace77173e1568f288ce5", + name: "OSF Editions Season 1", + category: "Iconic Gems", + }, + { + address: "0x27787755137863bb7f2387ed34942543c9f24efe", + name: "Factura", + category: "Iconic Gems", + creator: "Mathias Isaksen", + }, + { + address: "0x8eaa9ae1ac89b1c8c8a8104d08c045f78aadb42d", + name: "Tableland Rigs", + category: "Iconic Gems", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "Cozy Homes", + category: "Iconic Gems", + creator: "Grant Yun", + tokenIdRange: { + start: "opensea-cozyhomes", + end: "opensea-cozyhomes", + }, + }, + { + address: "0xd3f9551e9bc926cc180ac8d3e27364f4081df624", + name: "servants of the Muse", + category: "Iconic Gems", + }, + { + address: "0xd752ad52ab60e58960e8a193c037383ffce8dd70", + name: "Open Eyes (Signal)", + category: "Iconic Gems", + creator: "Jake Fried", + }, + { + address: "0xbd874d3d6c27f1d3156001e5df38a3dfdd3dbcf8", + name: "alterego", + category: "Iconic Gems", + creator: "Russell Young", + }, + { + address: "0xd93eb3bcd333d934b5c18f28fee3ab72b2aec5af", + name: "ripcache", + category: "Iconic Gems", + }, + { + address: "0x3c72d904a2006c02e4ebdbab32477e9182d9e59d", + name: "Warothys", + category: "Iconic Gems", + }, + { + address: "0x49129a186169ecebf3c1ab036d99d4ecb9a95c67", + name: "The Flowers Project", + category: "Iconic Gems", + }, + { + address: "0x7e9b9ba1a3b4873279857056279cef6a4fcdf340", + name: "Noble Gallery", + category: "Iconic Gems", + }, + { + address: "0x055f16af0c61aa67176224d8c2407c9a5628bcca", + name: "archive edition", + category: "Iconic Gems", + }, + { + address: "0x31237f02f9b7ffc22ea7a9d9649520c0833d16f4", + name: "Amber Vittoria's Artwork", + category: "Iconic Gems", + creator: "Amber Vittoria", + }, + { + address: "0x05218d1744caf09190f72333f9167ce12d18af5c", + name: "Memories Of A Masterpiece", + category: "Iconic Gems", + }, + { + address: "0x1067b71aac9e2f2b1a4e6ab6c1ed10510876924a", + name: "24 Hours of Art", + category: "Iconic Gems", + }, + { + address: "0x5b9e53848d28db2295f5d25ae634c4f7711a2216", + name: "Two Worlds", + category: "Iconic Gems", + creator: "Jeremy Booth & Orkhan Isayev", + }, + { + address: "0x495f947276749ce646f68ac8c248420045cb7b5e", + name: "It's Because You're Pretty", + category: "Iconic Gems", + creator: "Amber Vittoria", + tokenIdRange: { + start: "opensea-amber-vittoria-pretty", + end: "opensea-amber-vittoria-pretty", + }, + }, + { + address: "0x5ab44d97b0504ed90b8c5b8a325aa61376703c88", + name: "E30D", + category: "Iconic Gems", + creator: "glitch gallery", + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "Incomplete Control", + category: "Iconic Gems", + creator: "Tyler Hobbs", + tokenIdRange: { + start: "228000000", + end: "228999999", + }, + }, + { + address: "0x059edd72cd353df5106d2b9cc5ab83a52287ac3a", + name: "Chromie Squiggle", + category: "Iconic Gems", + creator: "Snowfro", + tokenIdRange: { + start: "0", + end: "999999", + }, + }, + { + address: "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270", + name: "The Eternal Pump", + category: "Iconic Gems", + creator: "Dmitri Cherniak", + tokenIdRange: { + start: "22000000", + end: "22999999", + }, + }, + { + address: "0x112bec51a4b0942e7f7b2a5090f5ad57b7901559", + name: "TechnOrigami", + category: "Iconic Gems", + }, + { + address: "0xc3c415be22282859fbfc04ddd382685dfe7ed7f8", + name: "Decal", + category: "Iconic Gems", + creator: "Grant Yun", + }, + { + address: "0x9d63898298310c225de30ae9da0f0b738a7b7005", + name: "Samsung MX1 ART COLLECTION", + category: "Iconic Gems", + }, + { + address: "0xd4a6669e4787f23a2f711e0b6c6fb5431ce1594e", + name: "Geometries", + category: "Iconic Gems", + creator: "Frank Stella", + }, + { + address: "0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0", + name: "SuperRare 1/1s: Dimitri Daniloff", + category: "Iconic Gems", + creator: "Dimitri Daniloff", + tokenIdRange: { + start: "superrare-shared-0xf9789dce5346c367c68ad0abcc2e38928d12dd9d", + end: "superrare-shared-0xf9789dce5346c367c68ad0abcc2e38928d12dd9d", + }, + }, + { + address: "0x0483b0dfc6c78062b9e999a82ffb795925381415", + name: "Orbit", + category: "Iconic Gems", + creator: "Jiannan Huang", + }, + { + address: "0x68d0f6d1d99bb830e17ffaa8adb5bbed9d6eec2e", + name: "Solitaire", + category: "Iconic Gems", + creator: "Terrell Jones", + tokenIdRange: { + start: "opensea-solitaire-by-terrell-jones", + end: "opensea-solitaire-by-terrell-jones", + }, + }, + { + address: "0x92ed200771647b26a5ea72737f1ba9a7366e471e", + name: "An Old Soul", + category: "Iconic Gems", + }, + { + address: "0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0", + name: "SuperRare 1/1s: Brendan North", + category: "Iconic Gems", + creator: "Brendan North", + tokenIdRange: { + start: "superrare-shared-0x077bfc14dd6725f260e1abfd5c942ee13a27091b", + end: "superrare-shared-0x077bfc14dd6725f260e1abfd5c942ee13a27091b", + }, + }, + { + address: "0x3e34ff1790bf0a13efd7d77e75870cb525687338", + name: "DAMAGE CONTROL", + category: "Iconic Gems", + creator: "XCOPY", + }, + { + address: "0x8d9b2560bf173603b680c7c4780397775ddea09c", + name: "Pop Wonder Editions", + category: "Iconic Gems", + }, + { + address: "0xbc5dc6e819a5ff4686af6fb9b1550b5cabb3a58d", + name: "FVCKRENDER ARCHIVE", + category: "Iconic Gems", + creator: "FVCKRENDER", + }, + { + address: "0xc8bdf7c6e22930b8e8e1007ffc55be59b239ea93", + name: "Earth Iterations", + category: "Iconic Gems", + }, + { + address: "0x484e5155ae4b277cdb7f13a80ab3f627ff491149", + name: "Legalize Ground Beef", + category: "Iconic Gems", + }, + { + address: "0xbe39273b36c7bb971fed88c5f2a093270e0267e0", + name: "BODY MACHINE (MERIDIANS)", + category: "Iconic Gems", + creator: "Sougwen Chung", + }, + { + address: "0xcce4727300f460719588be90f7069c6f7b82748f", + name: "Edouard et Bastien", + category: "Iconic Gems", + }, + { + address: "0xc9976839b3db2e96e58abfbf4e42925d0656ec27", + name: "Edouard et Bastien", + category: "Iconic Gems", + }, + { + address: "0xbead5e1bd976bd8b27bd54ed50328e7364ea77bd", + name: "NORTH STAR", + category: "Iconic Gems", + creator: "Jake Fried", + }, + { + address: "0x6c646767b605e561846e7a4e8ee7afefe0af476c", + name: "The Cameras", + category: "Iconic Gems", + }, + { + address: "0xc04e0000726ed7c5b9f0045bc0c4806321bc6c65", + name: "ICXN", + category: "Iconic Gems", + }, +]; + +// Export helper functions +export { + isCuratedCollection, + getCuratedCollection, + getCuratedAddresses, + getFeaturedAddresses, + getVerifiedAddresses, +} from "./collections"; + +// Helper functions +export function getCollectionsByCategory( + category: CollectionCategory +): CuratedCollection[] { + return CURATED_COLLECTIONS.filter( + (collection) => collection.category === category + ); +} + +export function getCategoryCount(category: CollectionCategory): number { + return getCollectionsByCategory(category).length; +} + +export function getAllCategories(): CollectionCategory[] { + return [ + ...new Set( + CURATED_COLLECTIONS.map((collection) => collection.category) + ), + ]; +} + +export function getCollectionsByCreator(creator: string): CuratedCollection[] { + return CURATED_COLLECTIONS.filter( + (collection) => + collection.creator?.toLowerCase() === creator.toLowerCase() + ); +} + +// Create a map for quick lookups +export const COLLECTIONS_BY_ADDRESS = new Map( + CURATED_COLLECTIONS.map((collection) => [ + collection.address.toLowerCase(), + collection, + ]) +); + +// URL and viewing helpers +export const IKIGAI_BASE_URL = "https://ikigailabs.xyz/ethereum"; + +export interface CollectionViewOptions { + sortBy?: + | "floor_asc" + | "floor_desc" + | "volume_asc" + | "volume_desc" + | "created_asc" + | "created_desc"; + filterBy?: "listed" | "all"; +} + +export function getCollectionUrl( + address: string, + collection?: CuratedCollection +): string { + if (!collection) { + collection = COLLECTIONS_BY_ADDRESS.get(address.toLowerCase()); + } + + let url = `${IKIGAI_BASE_URL}/${address}`; + + // If collection has tokenIdRange, append it to the URL + if (collection?.tokenIdRange?.start && collection?.tokenIdRange?.end) { + url += `:${collection.tokenIdRange.start}:${collection.tokenIdRange.end}`; + } + + return url; +} + +export function getCollectionViewUrl( + address: string, + options?: CollectionViewOptions +): string { + const collection = COLLECTIONS_BY_ADDRESS.get(address.toLowerCase()); + const baseUrl = getCollectionUrl(address, collection); + if (!options) return baseUrl; + + const params = new URLSearchParams(); + if (options.sortBy) params.append("sort", options.sortBy); + if (options.filterBy) params.append("filter", options.filterBy); + + return `${baseUrl}?${params.toString()}`; +} + +// Helper to get URLs for all collections in a category +export function getCategoryUrls(category: CollectionCategory): string[] { + return getCollectionsByCategory(category).map((collection) => + getCollectionUrl(collection.address, collection) + ); +} + +// Helper to get URLs for collections by a specific creator +export function getCreatorCollectionUrls(creator: string): string[] { + return getCollectionsByCreator(creator).map((collection) => + getCollectionUrl(collection.address, collection) + ); +} + +// Helper to get a formatted collection view with URL +export function getCollectionView(address: string): { + collection: CuratedCollection | undefined; + url: string; +} { + const collection = COLLECTIONS_BY_ADDRESS.get(address.toLowerCase()); + return { + collection, + url: getCollectionUrl(address, collection), + }; +} + +// Helper to get multiple collection views +export function getCollectionViews(addresses: string[]): { + collection: CuratedCollection | undefined; + url: string; +}[] { + return addresses.map((address) => getCollectionView(address)); +} + +// Helper to get all collections in a category with their URLs +export function getCategoryCollectionViews(category: CollectionCategory): { + collection: CuratedCollection; + url: string; +}[] { + return getCollectionsByCategory(category).map((collection) => ({ + collection, + url: getCollectionUrl(collection.address, collection), + })); +} + +// Helper to format collection data for display +export function formatCollectionData(collection: CuratedCollection): string { + const url = getCollectionUrl(collection.address, collection); + return ` +Collection: ${collection.name} +Category: ${collection.category} +${collection.creator ? `Creator: ${collection.creator}` : ""} +View on IkigaiLabs: ${url} +${collection.tokenIdRange ? `Token Range: ${collection.tokenIdRange.start || "0"} - ${collection.tokenIdRange.end || "unlimited"}` : ""} +`; +} + +// Helper to get a shareable collection link with optional sort/filter +export function getShareableCollectionLink( + address: string, + options?: CollectionViewOptions +): string { + const url = getCollectionViewUrl(address, options); + return `View this NFT collection on IkigaiLabs: ${url}`; +} + +// Set of curated collection addresses (lowercase) +export const curatedCollections = new Set([ + // Add your curated collection addresses here + // Example: + // "0x1234...".toLowerCase(), +]); diff --git a/packages/plugin-nft-collections/src/evaluators/nft-knowledge.ts b/packages/plugin-nft-collections/src/evaluators/nft-knowledge.ts new file mode 100644 index 000000000000..c8f78720038e --- /dev/null +++ b/packages/plugin-nft-collections/src/evaluators/nft-knowledge.ts @@ -0,0 +1,109 @@ +import { Evaluator, IAgentRuntime, Memory, State } from "@elizaos/core"; +import { NFTKnowledge } from "../types"; + +export const nftKnowledgeEvaluator: Evaluator = { + name: "nft-collection-evaluator", + description: "Evaluates NFT-related content in messages", + similes: [ + "nft-evaluator", + "nft-knowledge", + "market-analysis", + "artist-info", + ], + alwaysRun: false, + validate: async (runtime: IAgentRuntime, message: Memory) => { + const content = message.content.text.toLowerCase(); + return ( + content.includes("nft") || + content.includes("collection") || + content.includes("market") || + content.includes("trading") || + content.includes("artist") || + content.includes("contract") || + content.includes("news") || + content.includes("onchain") + ); + }, + handler: async (runtime: IAgentRuntime, message: Memory, state: State) => { + const content = message.content.text.toLowerCase(); + + const extractedInfo: NFTKnowledge = { + mentionsCollection: + content.includes("collection") || content.includes("nft"), + mentionsFloorPrice: + content.includes("floor price") || content.includes("floor"), + mentionsVolume: + content.includes("volume") || + content.includes("trading volume"), + mentionsRarity: + content.includes("rare") || content.includes("rarity"), + mentionsMarketTrends: + content.includes("trend") || + content.includes("market") || + content.includes("movement"), + mentionsTraders: + content.includes("trader") || + content.includes("whale") || + content.includes("investor"), + mentionsSentiment: + content.includes("bull") || + content.includes("bear") || + content.includes("sentiment") || + content.includes("mood"), + mentionsMarketCap: + content.includes("market cap") || + content.includes("marketcap") || + content.includes("valuation"), + mentionsArtist: + content.includes("artist") || + content.includes("creator") || + content.includes("founder"), + mentionsOnChainData: + content.includes("onchain") || + content.includes("blockchain") || + content.includes("contract") || + content.includes("holder") || + content.includes("transfer"), + mentionsNews: + content.includes("news") || + content.includes("announcement") || + content.includes("update"), + mentionsSocial: + content.includes("twitter") || + content.includes("discord") || + content.includes("telegram") || + content.includes("social"), + mentionsContract: + content.includes("contract") || + content.includes("royalty") || + content.includes("standard") || + content.includes("erc"), + }; + + return { + ...state, + nftKnowledge: extractedInfo, + }; + }, + examples: [ + { + context: "Evaluating comprehensive NFT collection data", + messages: [ + { + user: "{{user1}}", + content: { + text: "Tell me about the artist and on-chain stats for this collection", + }, + }, + { + user: "{{user2}}", + content: { + text: "I'll analyze the creator's background and blockchain metrics.", + }, + }, + ], + outcome: + "The message requests artist and on-chain information and should be evaluated.", + }, + ], +}; diff --git a/packages/plugin-nft-collections/src/index.ts b/packages/plugin-nft-collections/src/index.ts new file mode 100644 index 000000000000..bbd7f5df6146 --- /dev/null +++ b/packages/plugin-nft-collections/src/index.ts @@ -0,0 +1,86 @@ +import { Plugin } from "@elizaos/core"; +import { createNftCollectionProvider } from "./providers/nft-collections"; +import { getCollectionsAction } from "./actions/get-collections"; +import { listNFTAction } from "./actions/list-nft"; +import { sweepFloorAction } from "./actions/sweep-floor"; + +import { ReservoirService } from "./services/reservoir"; +import { MemoryCacheManager } from "./services/cache-manager"; +import { RateLimiter } from "./services/rate-limiter"; +import { MarketIntelligenceService } from "./services/market-intelligence"; +import { SocialAnalyticsService } from "./services/social-analytics"; + +// Consider exposing these settings as environment variables to allow users to provide custom configuration values. +const config = { + caching: { + enabled: true, + ttl: 3600000, // 1 hour + maxSize: 1000, + }, + security: { + rateLimit: { + enabled: true, + maxRequests: 100, + windowMs: 60000, + }, + }, + maxConcurrent: 5, // Maximum concurrent requests + maxRetries: 3, // Maximum retry attempts + batchSize: 20, // Batch size for collection requests +}; + +function createNFTCollectionsPlugin(): Plugin { + // Initialize reusable CacheManager if caching is enabled + const cacheManager = config.caching?.enabled + ? new MemoryCacheManager({ + ttl: config.caching.ttl, + maxSize: config.caching.maxSize, + }) + : null; + + // Initialize reusable RateLimiter if rate limiting is enabled + const rateLimiter = config.security?.rateLimit?.enabled + ? new RateLimiter({ + maxRequests: config.security.rateLimit.maxRequests, + windowMs: config.security.rateLimit.windowMs, + }) + : null; + const reservoirService = new ReservoirService({ + cacheManager, + rateLimiter, + maxConcurrent: config.maxConcurrent, + maxRetries: config.maxRetries, + batchSize: config.batchSize, + }); + + const marketIntelligenceService = new MarketIntelligenceService({ + cacheManager, + rateLimiter, + }); + + const socialAnalyticsService = new SocialAnalyticsService({ + cacheManager, + rateLimiter, + }); + + const nftCollectionProvider = createNftCollectionProvider( + reservoirService, + marketIntelligenceService, + socialAnalyticsService + ); + + return { + name: "nft-collections", + description: + "Provides NFT collection information and market intelligence", + providers: [nftCollectionProvider], + actions: [ + getCollectionsAction(nftCollectionProvider), + listNFTAction(reservoirService), + sweepFloorAction(reservoirService), + ], + evaluators: [], + }; +} + +export default createNFTCollectionsPlugin; diff --git a/packages/plugin-nft-collections/src/providers/nft-collections.ts b/packages/plugin-nft-collections/src/providers/nft-collections.ts new file mode 100644 index 000000000000..b55e6fe64bb0 --- /dev/null +++ b/packages/plugin-nft-collections/src/providers/nft-collections.ts @@ -0,0 +1,100 @@ +import { Provider, type IAgentRuntime, type Memory } from "@elizaos/core"; +import { ReservoirService } from "../services/reservoir"; +import { MarketIntelligenceService } from "../services/market-intelligence"; +import { SocialAnalyticsService } from "../services/social-analytics"; + +export const createNftCollectionProvider = ( + nftService: ReservoirService, + marketIntelligenceService: MarketIntelligenceService, + socialAnalyticsService: SocialAnalyticsService +): Provider => { + return { + get: async ( + runtime: IAgentRuntime, + message: Memory + ): Promise => { + if (!nftService) { + throw new Error("NFT service not found"); + } + + const collections = await nftService.getTopCollections(runtime, 10); + let response = "Here are the top NFT collections:\n\n"; + + for (const collection of collections) { + response += `${collection.name}:\n`; + response += `• Floor Price: ${collection.floorPrice} ETH\n`; + response += `• 24h Volume: ${collection.volume24h} ETH\n`; + response += `• Market Cap: ${collection.marketCap} ETH\n`; + response += `• Holders: ${collection.holders}\n\n`; + } + + // If a specific collection is mentioned in the message, get detailed information + const collection = collections.find( + (c) => + message.content.text + .toLowerCase() + .includes(c.name.toLowerCase()) || + message.content.text + .toLowerCase() + .includes(c.address.toLowerCase()) + ); + + if (collection) { + response += `\nDetailed information for ${collection.name}:\n\n`; + + // Market intelligence data (optional) + if (marketIntelligenceService) { + try { + const marketIntelligence = + await marketIntelligenceService.getMarketIntelligence( + collection.address + ); + response += "Market Intelligence:\n"; + response += `• Wash Trading Score: ${marketIntelligence.washTradingMetrics.washTradingScore}\n`; + response += `• Suspicious Volume (24h): ${marketIntelligence.washTradingMetrics.suspiciousVolume24h} ETH\n`; + response += `• Best Bid: ${marketIntelligence.liquidityMetrics.bestBid} ETH\n`; + response += `• Best Ask: ${marketIntelligence.liquidityMetrics.bestAsk} ETH\n\n`; + } catch (error) { + console.error( + "Failed to fetch market intelligence:", + error + ); + } + } + + // Social analytics data (optional) + if (socialAnalyticsService) { + try { + const [socialMetrics, communityMetrics] = + await Promise.all([ + socialAnalyticsService.getSocialMetrics( + collection.address + ), + socialAnalyticsService.getCommunityMetrics( + collection.address + ), + ]); + + response += "Social Metrics:\n"; + response += `• Twitter Followers: ${socialMetrics.twitter.followers}\n`; + response += `• Twitter Engagement: ${socialMetrics.twitter.engagement.likes + socialMetrics.twitter.engagement.retweets + socialMetrics.twitter.engagement.replies} interactions\n`; + response += `• Trending: ${socialMetrics.trending ? "Yes" : "No"}\n\n`; + + response += "Community Metrics:\n"; + response += `• Total Members: ${communityMetrics.totalMembers}\n`; + response += `• Growth Rate: ${communityMetrics.growthRate}%\n`; + response += `• Active Users: ${communityMetrics.engagement.activeUsers}\n`; + response += `• Messages per Day: ${communityMetrics.engagement.messagesPerDay}\n`; + } catch (error) { + console.error( + "Failed to fetch social analytics:", + error + ); + } + } + } + + return response; + }, + }; +}; diff --git a/packages/plugin-nft-collections/src/services/cache-manager.ts b/packages/plugin-nft-collections/src/services/cache-manager.ts new file mode 100644 index 000000000000..097dddb75990 --- /dev/null +++ b/packages/plugin-nft-collections/src/services/cache-manager.ts @@ -0,0 +1,86 @@ +import { LRUCache } from "lru-cache"; + +interface CacheOptions { + ttl?: number; + maxSize?: number; +} + +interface CacheEntry { + data: T; + expiresAt: number; + priority: number; +} + +export class MemoryCacheManager { + private cache: LRUCache>; + private readonly DEFAULT_TTL = 3600000; // 1 hour + private readonly COLLECTION_TTL = 300000; // 5 minutes + private readonly MARKET_TTL = 60000; // 1 minute + + constructor(options: CacheOptions = {}) { + this.cache = new LRUCache({ + max: options.maxSize || 1000, + ttl: options.ttl || this.DEFAULT_TTL, + updateAgeOnGet: true, + updateAgeOnHas: true, + }); + } + + private getExpirationTime(key: string): number { + if (key.startsWith("collection:")) return this.COLLECTION_TTL; + if (key.startsWith("market:")) return this.MARKET_TTL; + return this.DEFAULT_TTL; + } + + async get(key: string): Promise { + const entry = this.cache.get(key) as CacheEntry; + if (!entry) return null; + + if (Date.now() > entry.expiresAt) { + this.cache.delete(key); + return null; + } + + return entry.data; + } + + async set(key: string, value: T, priority: number = 0): Promise { + const ttl = this.getExpirationTime(key); + const entry: CacheEntry = { + data: value, + expiresAt: Date.now() + ttl, + priority, + }; + + this.cache.set(key, entry); + } + + async delete(key: string): Promise { + this.cache.delete(key); + } + + async clear(): Promise { + this.cache.clear(); + } + + async has(key: string): Promise { + const entry = this.cache.get(key) as CacheEntry; + if (!entry) return false; + + if (Date.now() > entry.expiresAt) { + this.cache.delete(key); + return false; + } + + return true; + } + + async prune(): Promise { + const now = Date.now(); + for (const [key, entry] of this.cache.entries()) { + if (now > entry.expiresAt) { + this.cache.delete(key); + } + } + } +} diff --git a/packages/plugin-nft-collections/src/services/coingecko.ts b/packages/plugin-nft-collections/src/services/coingecko.ts new file mode 100644 index 000000000000..91e0a0d800cf --- /dev/null +++ b/packages/plugin-nft-collections/src/services/coingecko.ts @@ -0,0 +1,94 @@ +interface CoinGeckoNFTData { + id: string; + contract_address: string; + name: string; + asset_platform_id: string; + symbol: string; + market_cap_usd?: number; + volume_24h_usd?: number; + floor_price_usd?: number; + floor_price_eth?: number; + total_supply?: number; + market_cap_eth?: number; + volume_24h_eth?: number; + number_of_unique_addresses?: number; + number_of_unique_currencies?: number; +} + +export class CoinGeckoService { + private baseUrl = "https://api.coingecko.com/api/v3"; + private apiKey?: string; + + constructor(apiKey?: string) { + this.apiKey = apiKey; + } + + private async fetch( + endpoint: string, + params: Record = {} + ): Promise { + if (this.apiKey) { + params.x_cg_pro_api_key = this.apiKey; + } + + const queryString = new URLSearchParams(params).toString(); + const url = `${this.baseUrl}${endpoint}${queryString ? `?${queryString}` : ""}`; + + const response = await fetch(url, { + headers: { + accept: "application/json", + }, + }); + + if (!response.ok) { + throw new Error(`CoinGecko API error: ${response.statusText}`); + } + + return response.json(); + } + + async getNFTMarketData( + contractAddress: string + ): Promise { + try { + const data = await this.fetch("/nfts/list"); + const nft = data.find( + (n) => + n.contract_address.toLowerCase() === + contractAddress.toLowerCase() + ); + + if (!nft) return null; + + // Get detailed data + const details = await this.fetch( + `/nfts/${nft.id}` + ); + return details; + } catch (error) { + console.error("Error fetching CoinGecko data:", error); + return null; + } + } + + async getGlobalNFTStats(): Promise<{ + total_market_cap_usd: number; + total_volume_24h_usd: number; + market_cap_change_24h: number; + volume_change_24h: number; + number_of_unique_currencies: number; + number_of_unique_addresses: number; + }> { + const data = await this.fetch("/global/nft"); + return data.data; + } + + async getTrendingCollections(): Promise { + const data = await this.fetch("/nfts/list", { + order: "market_cap_usd_desc", + per_page: "20", + page: "1", + }); + return data; + } +} diff --git a/packages/plugin-nft-collections/src/services/market-intelligence.ts b/packages/plugin-nft-collections/src/services/market-intelligence.ts new file mode 100644 index 000000000000..08890a283a40 --- /dev/null +++ b/packages/plugin-nft-collections/src/services/market-intelligence.ts @@ -0,0 +1,29 @@ +import { MemoryCacheManager } from "./cache-manager"; +import { RateLimiter } from "./rate-limiter"; +import { MarketData } from "../utils/validation"; + +interface MarketIntelligenceConfig { + cacheManager?: MemoryCacheManager; + rateLimiter?: RateLimiter; +} + +export class MarketIntelligenceService { + private cacheManager?: MemoryCacheManager; + private rateLimiter?: RateLimiter; + + constructor(config: MarketIntelligenceConfig = {}) { + this.cacheManager = config.cacheManager; + this.rateLimiter = config.rateLimiter; + } + + async getMarketIntelligence(_address: string): Promise { + // Implementation will be added later + return { + floorPrice: 0, + volume24h: 0, + marketCap: 0, + holders: 0, + lastUpdate: new Date().toISOString(), + }; + } +} diff --git a/packages/plugin-nft-collections/src/services/rate-limiter.ts b/packages/plugin-nft-collections/src/services/rate-limiter.ts new file mode 100644 index 000000000000..b3a7cb658d6e --- /dev/null +++ b/packages/plugin-nft-collections/src/services/rate-limiter.ts @@ -0,0 +1,98 @@ +import { RateLimiterMemory } from "rate-limiter-flexible"; + +interface RateLimiterConfig { + maxRequests?: number; + windowMs?: number; + maxRetries?: number; + retryDelay?: number; +} + +export class RateLimiter { + private limiter: RateLimiterMemory; + private maxRetries: number; + private retryDelay: number; + + constructor(config: RateLimiterConfig = {}) { + this.limiter = new RateLimiterMemory({ + points: config.maxRequests || 100, + duration: (config.windowMs || 60000) / 1000, // Convert ms to seconds + }); + this.maxRetries = config.maxRetries || 3; + this.retryDelay = config.retryDelay || 1000; + } + + async consume(key: string, points: number = 1): Promise { + try { + await this.limiter.consume(key, points); + } catch (error: any) { + if (error.remainingPoints === 0) { + const retryAfter = Math.ceil(error.msBeforeNext / 1000); + throw new Error( + `Rate limit exceeded. Retry after ${retryAfter} seconds` + ); + } + throw error; + } + } + + async executeWithRetry( + key: string, + operation: () => Promise, + points: number = 1 + ): Promise { + let lastError: Error | null = null; + let retries = 0; + + while (retries <= this.maxRetries) { + try { + await this.consume(key, points); + return await operation(); + } catch (error: any) { + lastError = error; + retries++; + + if (error.message?.includes("Rate limit exceeded")) { + const retryAfter = parseInt( + error.message.match(/\d+/)?.[0] || "1", + 10 + ); + await new Promise((resolve) => + setTimeout(resolve, retryAfter * 1000) + ); + } else if (retries <= this.maxRetries) { + await new Promise((resolve) => + setTimeout(resolve, this.retryDelay * retries) + ); + } else { + break; + } + } + } + + throw new Error( + `Operation failed after ${retries} retries. Last error: ${lastError?.message}` + ); + } + + async cleanup(): Promise { + // Cleanup any resources if needed + } + + async getRemainingPoints(key: string): Promise { + const res = await this.limiter.get(key); + return res?.remainingPoints ?? 0; + } + + async reset(key: string): Promise { + await this.limiter.delete(key); + } + + async isRateLimited(key: string): Promise { + try { + await this.limiter.get(key); + return false; + } catch { + return true; + } + } +} diff --git a/packages/plugin-nft-collections/src/services/reservoir.ts b/packages/plugin-nft-collections/src/services/reservoir.ts new file mode 100644 index 000000000000..afc4038e0624 --- /dev/null +++ b/packages/plugin-nft-collections/src/services/reservoir.ts @@ -0,0 +1,315 @@ +import pRetry from "p-retry"; +// import pQueue from "p-queue"; +import { PerformanceMonitor } from "../utils/performance"; +import { + ErrorHandler, + NFTErrorFactory, + ErrorType, + ErrorCode, +} from "../utils/error-handler"; +import { MemoryCacheManager } from "./cache-manager"; +import { RateLimiter } from "./rate-limiter"; +import { MarketStats, NFTCollection } from "../types"; +import { IAgentRuntime } from "@elizaos/core"; + +interface ReservoirServiceConfig { + cacheManager?: MemoryCacheManager; + rateLimiter?: RateLimiter; + maxConcurrent?: number; + maxRetries?: number; + batchSize?: number; +} + +export class ReservoirService { + private cacheManager?: MemoryCacheManager; + private rateLimiter?: RateLimiter; + // private queue: pQueue; + private maxRetries: number; + private batchSize: number; + private performanceMonitor: PerformanceMonitor; + private errorHandler: ErrorHandler; + + constructor(config: ReservoirServiceConfig = {}) { + this.cacheManager = config.cacheManager; + this.rateLimiter = config.rateLimiter; + + // this.queue = new pQueue({ concurrency: config.maxConcurrent || 5 }); + this.maxRetries = config.maxRetries || 3; + this.batchSize = config.batchSize || 20; + this.performanceMonitor = PerformanceMonitor.getInstance(); + this.errorHandler = ErrorHandler.getInstance(); + } + + async makeRequest( + endpoint: string, + params: Record = {}, + priority: number = 0, + runtime: IAgentRuntime + ): Promise { + const endOperation = this.performanceMonitor.startOperation( + "makeRequest", + { + endpoint, + params, + priority, + } + ); + + try { + const cacheKey = `reservoir:${endpoint}:${JSON.stringify(params)}`; + + // Check cache first + if (this.cacheManager) { + const cached = await this.cacheManager.get(cacheKey); + if (cached) { + endOperation(); + return cached; + } + } + + // Check rate limit + if (this.rateLimiter) { + await this.rateLimiter.consume("reservoir", 1); + } + const reservoirApiKey = runtime.getSetting("RESERVOIR_API_KEY"); + + // Make the request with retries + const result = await pRetry( + async () => { + const response = await fetch( + `https://api.reservoir.tools${endpoint}?${new URLSearchParams( + params + ).toString()}`, + { + headers: { + "x-api-key": reservoirApiKey, + }, + } + ); + + if (!response.ok) { + throw new Error( + `Reservoir API error: ${response.status}` + ); + } + + return response.json(); + }, + { + retries: this.maxRetries, + onFailedAttempt: (error) => { + console.error( + `Attempt ${error.attemptNumber} failed. ${error.retriesLeft} retries left.` + ); + }, + } + ); + + // Cache the result + if (this.cacheManager) { + await this.cacheManager.set(cacheKey, result); + } + + endOperation(); + return result; + } catch (error) { + this.performanceMonitor.recordMetric({ + operation: "makeRequest", + duration: 0, + success: false, + metadata: { + error: error.message, + endpoint, + params, + }, + }); + + const nftError = NFTErrorFactory.create( + ErrorType.API, + ErrorCode.API_ERROR, + `API request failed: ${endpoint}`, + { originalError: error }, + true + ); + this.errorHandler.handleError(nftError); + throw error; + } + } + + async getTopCollections( + runtime: IAgentRuntime, + limit: number = 10 + ): Promise { + const endOperation = this.performanceMonitor.startOperation( + "getTopCollections", + { limit } + ); + + try { + const batchSize = 20; // Optimal batch size for Reservoir API + const batches = Math.ceil(limit / batchSize); + const promises = []; + + for (let i = 0; i < batches; i++) { + const offset = i * batchSize; + const currentLimit = Math.min(batchSize, limit - offset); + + promises.push( + this.makeRequest( + `/collections/v6`, + { + limit: currentLimit, + offset, + sortBy: "1DayVolume", + }, + 1, + runtime + ) + ); + } + + const results = await Promise.all(promises); + const collections = results.flatMap((data) => data.collections); + + const mappedCollections = collections + .slice(0, limit) + .map((collection: any) => ({ + address: collection.id, + name: collection.name, + symbol: collection.symbol, + description: collection.description, + imageUrl: collection.image, + externalUrl: collection.externalUrl, + twitterUsername: collection.twitterUsername, + discordUrl: collection.discordUrl, + verified: + collection.openseaVerificationStatus === "verified", + floorPrice: collection.floorAsk?.price?.amount?.native || 0, + volume24h: collection.volume24h || 0, + marketCap: collection.marketCap || 0, + totalSupply: collection.tokenCount || 0, + holders: collection.ownerCount || 0, + lastUpdate: new Date().toISOString(), + })); + + endOperation(); // Record successful completion + return mappedCollections; + } catch (error) { + this.performanceMonitor.recordMetric({ + operation: "getTopCollections", + duration: 0, + success: false, + metadata: { error: error.message }, + }); + + const nftError = NFTErrorFactory.create( + ErrorType.API, + ErrorCode.API_ERROR, + "Failed to fetch top collections", + { originalError: error }, + true + ); + this.errorHandler.handleError(nftError); + throw error; + } + } + + async getMarketStats(): Promise { + return Promise.resolve({} as MarketStats); + } + + async getCollectionActivity(_collectionAddress: string): Promise { + return Promise.resolve(null); + } + + async getCollectionTokens(_collectionAddress: string): Promise { + return Promise.resolve(null); + } + + async getCollectionAttributes(_collectionAddress: string): Promise { + return Promise.resolve(null); + } + + async getFloorListings(_options: { + collection: string; + limit: number; + sortBy: "price" | "rarity"; + }): Promise< + Array<{ + tokenId: string; + price: number; + seller: string; + marketplace: string; + }> + > { + return Promise.resolve([]); + } + + async executeBuy(_options: { + listings: Array<{ + tokenId: string; + price: number; + seller: string; + marketplace: string; + }>; + taker: string; + }): Promise<{ + path: string; + steps: Array<{ + action: string; + status: string; + }>; + }> { + return Promise.resolve({ + path: "", + steps: [], + }); + } + + async createListing(_options: { + tokenId: string; + collectionAddress: string; + price: number; + expirationTime?: number; // Unix timestamp + marketplace: "ikigailabs"; + currency?: string; // Default to ETH + quantity?: number; // Default to 1 for ERC721 + }): Promise<{ + listingId: string; + status: string; + transactionHash?: string; + marketplaceUrl: string; + }> { + return Promise.resolve({ + listingId: "", + status: "", + transactionHash: undefined, + marketplaceUrl: "", + }); + } + + async cancelListing(_options: { + listingId: string; + marketplace: "ikigailabs"; + }): Promise<{ + status: string; + transactionHash?: string; + }> { + return Promise.resolve({ + status: "", + transactionHash: undefined, + }); + } + + async getOwnedNFTs(_owner: string): Promise< + Array<{ + tokenId: string; + collectionAddress: string; + name: string; + imageUrl?: string; + attributes?: Record; + }> + > { + return Promise.resolve([]); + } +} diff --git a/packages/plugin-nft-collections/src/services/security-manager.ts b/packages/plugin-nft-collections/src/services/security-manager.ts new file mode 100644 index 000000000000..29c326298617 --- /dev/null +++ b/packages/plugin-nft-collections/src/services/security-manager.ts @@ -0,0 +1,76 @@ +import * as crypto from "crypto"; + +interface SecurityConfig { + algorithm: string; +} + +export class SecurityManager { + private config: SecurityConfig; + private key: Buffer; + private iv: Buffer; + + constructor(config: SecurityConfig) { + this.config = config; + // Generate a secure key and IV + this.key = crypto.randomBytes(32); // 256 bits for AES-256 + this.iv = crypto.randomBytes(16); // 128 bits for AES + } + + encryptSensitiveData(data: any): string { + const cipher = crypto.createCipheriv( + this.config.algorithm, + this.key, + this.iv + ); + + let encrypted = cipher.update(JSON.stringify(data), "utf8", "hex"); + encrypted += cipher.final("hex"); + + // Return IV + encrypted data + return this.iv.toString("hex") + ":" + encrypted; + } + + decryptSensitiveData(encryptedData: string): T { + const [ivHex, data] = encryptedData.split(":"); + const iv = Buffer.from(ivHex, "hex"); + + const decipher = crypto.createDecipheriv( + this.config.algorithm, + this.key, + iv + ); + + let decrypted = decipher.update(data, "hex", "utf8"); + decrypted += decipher.final("utf8"); + + try { + return JSON.parse(decrypted); + } catch { + throw new Error('Failed to decrypt or parse data'); + } + } + + hashData(data: string): string { + return crypto.createHash("sha256").update(data).digest("hex"); + } + + generateSignature(data: any, timestamp: number): string { + const message = JSON.stringify(data) + timestamp; + return crypto + .createHmac("sha256", this.key) + .update(message) + .digest("hex"); + } + + verifySignature(data: any, timestamp: number, signature: string): boolean { + const expectedSignature = this.generateSignature(data, timestamp); + const signatureBuffer = Buffer.from(signature); + const expectedBuffer = Buffer.from(expectedSignature); + + if (signatureBuffer.length !== expectedBuffer.length) { + return false; + } + + return crypto.timingSafeEqual(signatureBuffer, expectedBuffer); + } +} diff --git a/packages/plugin-nft-collections/src/services/social-analytics.ts b/packages/plugin-nft-collections/src/services/social-analytics.ts new file mode 100644 index 000000000000..483ff4dcdce4 --- /dev/null +++ b/packages/plugin-nft-collections/src/services/social-analytics.ts @@ -0,0 +1,84 @@ +import { MemoryCacheManager } from "./cache-manager"; +import { RateLimiter } from "./rate-limiter"; +import { SocialMetrics } from "../utils/validation"; + +interface SocialAnalyticsConfig { + cacheManager?: MemoryCacheManager; + rateLimiter?: RateLimiter; +} + +export class SocialAnalyticsService { + private cacheManager?: MemoryCacheManager; + private rateLimiter?: RateLimiter; + + constructor(config: SocialAnalyticsConfig = {}) { + this.cacheManager = config.cacheManager; + this.rateLimiter = config.rateLimiter; + } + + async getSocialMetrics(_address: string): Promise { + // Implementation will be added later + return { + lastUpdate: new Date().toISOString(), + }; + } + + async getCommunityMetrics( + _address: string, + _discordId?: string, + _telegramId?: string + ): Promise { + // Implementation will be added later + return { + lastUpdate: new Date().toISOString(), + }; + } + + async analyzeSentiment(_address: string): Promise<{ + overall: number; + breakdown: { + positive: number; + neutral: number; + negative: number; + }; + trends: Array<{ + topic: string; + sentiment: number; + volume: number; + }>; + }> { + // Implementation will be added later + return { + overall: 0, + breakdown: { + positive: 0, + neutral: 0, + negative: 0, + }, + trends: [], + }; + } + + async trackSocialPerformance(_address: string): Promise<{ + metrics: { + reach: number; + engagement: number; + influence: number; + }; + trends: Array<{ + platform: string; + metric: string; + values: number[]; + }>; + }> { + // Implementation will be added later + return { + metrics: { + reach: 0, + engagement: 0, + influence: 0, + }, + trends: [], + }; + } +} diff --git a/packages/plugin-nft-collections/src/templates/floor-sweep.ts b/packages/plugin-nft-collections/src/templates/floor-sweep.ts new file mode 100644 index 000000000000..1c3cb54ade0c --- /dev/null +++ b/packages/plugin-nft-collections/src/templates/floor-sweep.ts @@ -0,0 +1,66 @@ +import { NFTCollection } from "../types"; + +export const floorSweepTemplates = { + successfulSweep: ({ + collection, + quantity, + totalPrice, + averagePrice, + path, + steps, + }: { + collection: NFTCollection | string; + quantity: number; + totalPrice: number; + averagePrice: number; + path: string; + steps: Array<{ action: string; status: string }>; + }) => `Successfully swept ${quantity} NFTs from collection ${typeof collection === "string" ? collection : collection.name}: +• Total Cost: ${totalPrice} ETH +• Average Price: ${averagePrice.toFixed(4)} ETH +• Transaction Path: ${path} +• Status: ${steps.map((step) => `${step.action} - ${step.status}`).join(", ")}`, + + sweepFailed: (error: string) => `Failed to sweep floor NFTs: ${error}`, + + missingCollection: () => "No valid collection address found in message", + + insufficientListings: (available: number, requested: number) => + `Only ${available} NFTs available at floor price (requested ${requested})`, + + sweepInProgress: ({ + collection, + quantity, + }: { + collection: NFTCollection | string; + quantity: number; + }) => + `Sweeping ${quantity} NFTs from collection ${typeof collection === "string" ? collection : collection.name}...`, + + floorPriceUpdate: ({ + collection, + floorPrice, + change24h, + }: { + collection: NFTCollection | string; + floorPrice: number; + change24h: number; + }) => `Current floor price for ${typeof collection === "string" ? collection : collection.name}: +• Price: ${floorPrice} ETH +• 24h Change: ${change24h >= 0 ? "+" : ""}${change24h.toFixed(2)}%`, + + marketplaceBreakdown: ( + marketplaces: Array<{ + name: string; + floorPrice: number; + availableTokens: number; + }> + ) => `Floor prices across marketplaces: +${marketplaces + .sort((a, b) => a.floorPrice - b.floorPrice) + .map( + (m) => + `• ${m.name}: ${m.floorPrice} ETH (${m.availableTokens} available)` + ) + .join("\n")}`, +}; diff --git a/packages/plugin-nft-collections/src/templates/index.ts b/packages/plugin-nft-collections/src/templates/index.ts new file mode 100644 index 000000000000..f9db739751e8 --- /dev/null +++ b/packages/plugin-nft-collections/src/templates/index.ts @@ -0,0 +1,98 @@ +export { listingTemplates } from "./nft-listing"; +export { floorSweepTemplates } from "./floor-sweep"; +export { marketStatsTemplates } from "./market-stats"; +export { socialAnalyticsTemplates } from "./social-analytics"; + +export const listNftTemplate = `Given the recent messages and NFT information below: + +{{recentMessages}} + +{{nftInfo}} + +Extract the following information about the requested NFT listing: +- Collection address: Must be a valid Ethereum address starting with "0x" +- Token ID: Must be a valid token ID number +- Price in ETH: Must be a string representing the amount in ETH (only number without coin symbol, e.g., "1.5") +- Marketplace: Must be "ikigailabs" + +Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ + "collectionAddress": string, + "tokenId": string, + "price": string, + "marketplace": "ikigailabs" +} +\`\`\` +`; + +export const floorSweepTemplate = `Given the recent messages and NFT information below: + +{{recentMessages}} + +{{nftInfo}} + +Extract the following information about the requested floor sweep: +- Collection address: Must be a valid Ethereum address starting with "0x" +- Quantity: Number of NFTs to sweep +- Maximum price per NFT in ETH: Must be a string representing the amount in ETH +- Sort by: Optional sorting criteria (e.g., "price_asc", "rarity_desc") + +Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ + "collectionAddress": string, + "quantity": number, + "maxPricePerNft": string, + "sortBy": "price_asc" | "price_desc" | "rarity_asc" | "rarity_desc" | null +} +\`\`\` +`; + +export const marketStatsTemplate = `Given the recent messages and NFT information below: + +{{recentMessages}} + +{{nftInfo}} + +Extract the following information about the requested market stats: +- Collection address: Must be a valid Ethereum address starting with "0x" +- Time period: Must be one of ["1h", "24h", "7d", "30d", "all"] +- Stat type: Must be one of ["floor", "volume", "sales", "holders"] + +Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ + "collectionAddress": string, + "timePeriod": "1h" | "24h" | "7d" | "30d" | "all", + "statType": "floor" | "volume" | "sales" | "holders" +} +\`\`\` +`; + +export const socialAnalyticsTemplate = `Given the recent messages and NFT information below: + +{{recentMessages}} + +{{nftInfo}} + +Extract the following information about the requested social analytics: +- Collection address: Must be a valid Ethereum address starting with "0x" +- Platform: Must be one of ["twitter", "discord", "telegram", "all"] +- Metric type: Must be one of ["sentiment", "engagement", "growth", "mentions"] +- Time period: Must be one of ["1h", "24h", "7d", "30d"] + +Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ + "collectionAddress": string, + "platform": "twitter" | "discord" | "telegram" | "all", + "metricType": "sentiment" | "engagement" | "growth" | "mentions", + "timePeriod": "1h" | "24h" | "7d" | "30d" +} +\`\`\` +`; diff --git a/packages/plugin-nft-collections/src/templates/market-stats.ts b/packages/plugin-nft-collections/src/templates/market-stats.ts new file mode 100644 index 000000000000..e58eee1865c9 --- /dev/null +++ b/packages/plugin-nft-collections/src/templates/market-stats.ts @@ -0,0 +1,145 @@ +import { NFTCollection, MarketIntelligence, MarketStats } from "../types"; + +export const marketStatsTemplates = { + collectionOverview: ({ + collection, + marketIntelligence, + }: { + collection: NFTCollection; + marketIntelligence?: MarketIntelligence; + }) => `${collection.name} Collection Overview: +• Floor Price: ${collection.floorPrice} ETH +• 24h Volume: ${collection.volume24h} ETH +• Market Cap: ${collection.marketCap} ETH +• Holders: ${collection.holders}${ + marketIntelligence + ? `\n\nMarket Intelligence: +• Wash Trading Score: ${marketIntelligence.washTradingMetrics.washTradingScore} +• Suspicious Volume (24h): ${marketIntelligence.washTradingMetrics.suspiciousVolume24h} ETH +• Best Bid: ${marketIntelligence.liquidityMetrics.bestBid} ETH +• Best Ask: ${marketIntelligence.liquidityMetrics.bestAsk} ETH` + : "" + }`, + + globalMarketStats: (stats: MarketStats) => `NFT Market Overview: +• Total Volume (24h): ${stats.totalVolume24h} ETH +• Total Market Cap: ${stats.totalMarketCap} ETH +• Total Collections: ${stats.totalCollections} +• Total Holders: ${stats.totalHolders} +• Average Floor Price: ${stats.averageFloorPrice} ETH`, + + whaleActivity: ({ + collection, + whales, + impact, + }: { + collection: NFTCollection | string; + whales: Array<{ + address: string; + holdings: number; + avgHoldingTime: number; + tradingVolume: number; + lastTrade: number; + }>; + impact: { + priceImpact: number; + volumeShare: number; + holdingsShare: number; + }; + }) => `Whale Activity for ${typeof collection === "string" ? collection : collection.name}: + +Top Whales: +${whales + .slice(0, 5) + .map( + (whale) => `• ${whale.address.slice(0, 6)}...${whale.address.slice(-4)} + Holdings: ${whale.holdings} NFTs + Avg Holding Time: ${(whale.avgHoldingTime / (24 * 60 * 60)).toFixed(1)} days + Trading Volume: ${whale.tradingVolume} ETH` + ) + .join("\n\n")} + +Market Impact: +• Price Impact: ${impact.priceImpact >= 0 ? "+" : ""}${impact.priceImpact.toFixed(2)}% +• Volume Share: ${(impact.volumeShare * 100).toFixed(1)}% +• Holdings Share: ${(impact.holdingsShare * 100).toFixed(1)}%`, + + priceHistory: ({ + collection, + history, + }: { + collection: NFTCollection | string; + history: Array<{ + timestamp: number; + price: number; + volume: number; + }>; + }) => { + const timeframes = [ + { label: "1h", duration: 60 * 60 }, + { label: "24h", duration: 24 * 60 * 60 }, + { label: "7d", duration: 7 * 24 * 60 * 60 }, + ]; + + const now = Date.now() / 1000; + const changes = timeframes.map((tf) => { + const pastPrice = history.find( + (h) => h.timestamp >= now - tf.duration + )?.price; + const currentPrice = history[history.length - 1]?.price || 0; + const change = pastPrice + ? ((currentPrice - pastPrice) / pastPrice) * 100 + : 0; + return `${tf.label}: ${change >= 0 ? "+" : ""}${change.toFixed(2)}%`; + }); + + return `Price History for ${typeof collection === "string" ? collection : collection.name}: + +Price Changes: +${changes.map((change) => `• ${change}`).join("\n")} + +Recent Trades: +${history + .slice(-5) + .reverse() + .map( + (h) => + `• ${new Date(h.timestamp * 1000).toLocaleString()}: ${ + h.price + } ETH (Volume: ${h.volume} ETH)` + ) + .join("\n")}`; + }, + + liquidityAnalysis: ({ + collection, + depth, + metrics, + }: { + collection: NFTCollection | string; + depth: Array<{ + price: number; + quantity: number; + totalValue: number; + }>; + metrics: { + totalLiquidity: number; + averageSpread: number; + volatility24h: number; + }; + }) => `Liquidity Analysis for ${typeof collection === "string" ? collection : collection.name}: + +Market Metrics: +• Total Liquidity: ${metrics.totalLiquidity} ETH +• Average Spread: ${(metrics.averageSpread * 100).toFixed(2)}% +• 24h Volatility: ${(metrics.volatility24h * 100).toFixed(2)}% + +Order Book Depth: +${depth + .slice(0, 5) + .map( + (level) => + `• ${level.price} ETH: ${level.quantity} NFTs (${level.totalValue} ETH)` + ) + .join("\n")}`, +}; diff --git a/packages/plugin-nft-collections/src/templates/nft-listing.ts b/packages/plugin-nft-collections/src/templates/nft-listing.ts new file mode 100644 index 000000000000..b908b7effe1c --- /dev/null +++ b/packages/plugin-nft-collections/src/templates/nft-listing.ts @@ -0,0 +1,59 @@ +import { NFTCollection } from "../types"; + +export const listingTemplates = { + successfulListing: ({ + collection, + tokenId, + purchasePrice, + listingPrice, + isPriceAutomatic, + status, + marketplaceUrl, + transactionHash, + }: { + collection: NFTCollection | string; + tokenId: string; + purchasePrice: number; + listingPrice: number; + isPriceAutomatic: boolean; + status: string; + marketplaceUrl: string; + transactionHash?: string; + }) => `Successfully created listing on ikigailabs.xyz: +• Collection: ${typeof collection === "string" ? collection : collection.name} (${typeof collection === "string" ? collection : collection.address}) +• Token ID: ${tokenId} +• Purchase Price: ${purchasePrice.toFixed(1)} ETH +• Listing Price: ${listingPrice.toFixed(1)} ETH (${isPriceAutomatic ? "2x purchase price" : "user specified"}) +• Status: ${status} +• Listing URL: ${marketplaceUrl}${transactionHash ? `\n• Transaction: ${transactionHash}` : ""}`, + + listingFailed: (error: string) => `Failed to list NFT: ${error}`, + + missingDetails: () => "Please provide the collection address and token ID", + + notOwned: () => "You don't own this NFT", + + noPurchaseHistory: () => + "Could not find purchase history for this NFT. Please specify a listing price.", + + noPurchasePrice: () => + "Could not determine purchase price. Please specify a listing price.", + + listingInProgress: ({ + collection, + tokenId, + }: { + collection: NFTCollection | string; + tokenId: string; + }) => + `Creating listing for Token #${tokenId} from collection ${typeof collection === "string" ? collection : collection.name}...`, + + listingCancelled: ({ + listingId, + transactionHash, + }: { + listingId: string; + transactionHash?: string; + }) => + `Successfully cancelled listing ${listingId}${transactionHash ? `\nTransaction: ${transactionHash}` : ""}`, +}; diff --git a/packages/plugin-nft-collections/src/templates/social-analytics.ts b/packages/plugin-nft-collections/src/templates/social-analytics.ts new file mode 100644 index 000000000000..c4ec4b5cba14 --- /dev/null +++ b/packages/plugin-nft-collections/src/templates/social-analytics.ts @@ -0,0 +1,155 @@ +import { NFTCollection, SocialMetrics, CommunityMetrics } from "../types"; + +export const socialAnalyticsTemplates = { + socialOverview: ({ + collection, + socialMetrics, + communityMetrics, + }: { + collection: NFTCollection | string; + socialMetrics: SocialMetrics; + communityMetrics: CommunityMetrics; + }) => `Social Analytics for ${typeof collection === "string" ? collection : collection.name}: + +Twitter Metrics: +• Followers: ${socialMetrics.twitter.followers} +• Engagement: ${ + socialMetrics.twitter.engagement.likes + + socialMetrics.twitter.engagement.retweets + + socialMetrics.twitter.engagement.replies + } interactions +• Sentiment: ${( + (socialMetrics.twitter.sentiment.positive * 100) / + (socialMetrics.twitter.sentiment.positive + + socialMetrics.twitter.sentiment.neutral + + socialMetrics.twitter.sentiment.negative) + ).toFixed(1)}% positive +• Trending: ${socialMetrics.trending ? "Yes" : "No"} + +Community Stats: +• Total Members: ${communityMetrics.totalMembers} +• Growth Rate: ${communityMetrics.growthRate}% +• Active Users: ${communityMetrics.engagement.activeUsers} +• Messages/Day: ${communityMetrics.engagement.messagesPerDay} + +Platform Breakdown:${ + communityMetrics.discord + ? `\n\nDiscord: +• Members: ${communityMetrics.discord.members} +• Active Users: ${communityMetrics.discord.activity.activeUsers} +• Growth Rate: ${communityMetrics.discord.activity.growthRate}% +• Messages/Day: ${communityMetrics.discord.activity.messagesPerDay} + +Top Channels: +${communityMetrics.discord.channels + .slice(0, 3) + .map( + (channel) => + `• ${channel.name}: ${channel.members} members (${channel.activity} msgs/day)` + ) + .join("\n")}` + : "" + }${ + communityMetrics.telegram + ? `\n\nTelegram: +• Members: ${communityMetrics.telegram.members} +• Active Users: ${communityMetrics.telegram.activity.activeUsers} +• Growth Rate: ${communityMetrics.telegram.activity.growthRate}% +• Messages/Day: ${communityMetrics.telegram.activity.messagesPerDay}` + : "" + }`, + + topInfluencers: ({ + collection, + influencers, + }: { + collection: NFTCollection | string; + influencers: SocialMetrics["influencers"]; + }) => `Top Influencers for ${typeof collection === "string" ? collection : collection.name}: + +${influencers + .slice(0, 5) + .map( + (inf, i) => + `${i + 1}. ${inf.address.slice(0, 6)}...${inf.address.slice(-4)} (${ + inf.platform + }) +• Followers: ${inf.followers} +• Engagement Rate: ${(inf.engagement * 100).toFixed(1)}% +• Sentiment Score: ${(inf.sentiment * 100).toFixed(1)}%` + ) + .join("\n\n")}`, + + recentMentions: ({ + collection, + mentions, + }: { + collection: NFTCollection | string; + mentions: SocialMetrics["mentions"]; + }) => `Recent Mentions for ${typeof collection === "string" ? collection : collection.name}: + +${mentions + .slice(0, 5) + .map( + (mention) => `• ${mention.platform} | ${new Date( + mention.timestamp * 1000 + ).toLocaleString()} + ${mention.content.slice(0, 100)}${mention.content.length > 100 ? "..." : ""} + By: ${mention.author} | Reach: ${mention.reach}` + ) + .join("\n\n")}`, + + communityEngagement: ({ + collection, + topChannels, + }: { + collection: NFTCollection | string; + topChannels: CommunityMetrics["engagement"]["topChannels"]; + }) => `Community Engagement for ${typeof collection === "string" ? collection : collection.name}: + +Most Active Channels: +${topChannels + .map( + (channel) => + `• ${channel.platform} | ${channel.name}: ${channel.activity} messages/day` + ) + .join("\n")}`, + + sentimentAnalysis: ({ + collection, + sentiment, + }: { + collection: NFTCollection | string; + sentiment: { + overall: number; + breakdown: { + positive: number; + neutral: number; + negative: number; + }; + trends: Array<{ + topic: string; + sentiment: number; + volume: number; + }>; + }; + }) => `Sentiment Analysis for ${typeof collection === "string" ? collection : collection.name}: + +Overall Sentiment Score: ${(sentiment.overall * 100).toFixed(1)}% + +Sentiment Breakdown: +• Positive: ${(sentiment.breakdown.positive * 100).toFixed(1)}% +• Neutral: ${(sentiment.breakdown.neutral * 100).toFixed(1)}% +• Negative: ${(sentiment.breakdown.negative * 100).toFixed(1)}% + +Top Topics by Sentiment: +${sentiment.trends + .slice(0, 5) + .map( + (trend) => + `• ${trend.topic}: ${(trend.sentiment * 100).toFixed( + 1 + )}% positive (${trend.volume} mentions)` + ) + .join("\n")}`, +}; diff --git a/packages/plugin-nft-collections/src/tests/actions.test.ts b/packages/plugin-nft-collections/src/tests/actions.test.ts new file mode 100644 index 000000000000..037eab62e698 --- /dev/null +++ b/packages/plugin-nft-collections/src/tests/actions.test.ts @@ -0,0 +1,151 @@ +import { describe, expect, it, vi } from "vitest"; +import { listNFTAction } from "../actions/list-nft"; +import { IAgentRuntime, Memory } from "@elizaos/core"; +import { NFTService } from "../types"; + +describe("NFT Actions", () => { + describe("List NFT Action", () => { + const mockRuntime = { + services: { + get: vi.fn(), + }, + messageManager: { + createMemory: vi.fn(), + }, + agentId: "00000000-0000-0000-0000-000000000000", + } as unknown as IAgentRuntime; + + const mockNftService = { + getOwnedNFTs: vi.fn(), + createListing: vi.fn(), + } as unknown as NFTService & { + getOwnedNFTs: ReturnType; + createListing: ReturnType; + }; + + beforeEach(() => { + vi.clearAllMocks(); + (mockRuntime.services.get as any).mockReturnValue(mockNftService); + }); + + it("should validate list NFT message", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000001", + content: { + text: "List NFT #123 from collection 0x1234 for 1.5 ETH", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + const isValid = await listNFTAction.validate(mockRuntime, message); + expect(isValid).toBe(true); + }); + + it("should not validate invalid message", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000004", + content: { + text: "Show me floor price", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + const isValid = await listNFTAction.validate(mockRuntime, message); + expect(isValid).toBe(false); + }); + + it("should handle list NFT request successfully", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000005", + content: { + text: "List NFT #123 from collection 0x1234 for 1.5 ETH", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + mockNftService.getOwnedNFTs.mockResolvedValueOnce([ + { + collectionAddress: "0x1234", + tokenId: "123", + name: "Test NFT", + imageUrl: "https://example.com/nft.png", + }, + ]); + + mockNftService.createListing.mockResolvedValueOnce({ + listingId: "test-listing", + status: "active", + marketplaceUrl: "https://ikigailabs.xyz/listing/test", + }); + + const result = await listNFTAction.handler(mockRuntime, message); + expect(result).toBe(true); + expect(mockNftService.createListing).toHaveBeenCalledWith( + expect.objectContaining({ + tokenId: "123", + collectionAddress: "0x1234", + price: 1.5, + marketplace: "ikigailabs", + }) + ); + }); + + it("should handle NFT not owned error", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000006", + content: { + text: "List NFT #123 from collection 0x1234 for 1.5 ETH", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + mockNftService.getOwnedNFTs.mockResolvedValueOnce([]); + + const result = await listNFTAction.handler(mockRuntime, message); + expect(result).toBe(false); + expect( + mockRuntime.messageManager.createMemory + ).toHaveBeenCalledWith( + expect.objectContaining({ + content: { + text: expect.stringContaining("You don't own this NFT"), + }, + }) + ); + }); + + it("should handle missing NFT service error", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000007", + content: { + text: "List NFT #123 from collection 0x1234 for 1.5 ETH", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + (mockRuntime.services.get as any).mockReturnValue(null); + + const result = await listNFTAction.handler(mockRuntime, message); + expect(result).toBe(false); + expect( + mockRuntime.messageManager.createMemory + ).toHaveBeenCalledWith( + expect.objectContaining({ + content: { + text: expect.stringContaining("NFT service not found"), + }, + }) + ); + }); + }); +}); diff --git a/packages/plugin-nft-collections/src/tests/providers.test.ts b/packages/plugin-nft-collections/src/tests/providers.test.ts new file mode 100644 index 000000000000..eef25d06802c --- /dev/null +++ b/packages/plugin-nft-collections/src/tests/providers.test.ts @@ -0,0 +1,128 @@ +import { describe, expect, it, vi } from "vitest"; +import { nftCollectionProvider } from "../providers/nft-collections"; +import { IAgentRuntime, Memory } from "@elizaos/core"; +import { NFTService } from "../types"; + +describe("NFT Collections Provider", () => { + const mockRuntime = { + services: { + get: vi.fn(), + }, + messageManager: { + createMemory: vi.fn(), + }, + agentId: "00000000-0000-0000-0000-000000000000", + } as unknown as IAgentRuntime; + + const mockNftService = { + getTopCollections: vi.fn(), + getMarketStats: vi.fn(), + } as unknown as NFTService & { + getTopCollections: ReturnType; + getMarketStats: ReturnType; + }; + + beforeEach(() => { + vi.clearAllMocks(); + (mockRuntime.services.get as any).mockReturnValue(mockNftService); + }); + + it("should get top collections", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000001", + content: { + text: "Show me top NFT collections", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + mockNftService.getTopCollections.mockResolvedValueOnce([ + { + name: "Test Collection", + address: "0x1234", + floorPrice: 1.5, + volume24h: 100, + marketCap: 1000, + holders: 500, + symbol: "TEST", + description: "Test NFT Collection", + imageUrl: "https://example.com/image.png", + }, + ]); + + const result = await nftCollectionProvider.get(mockRuntime, message); + expect(result).toContain("Test Collection"); + expect(result).toContain("1.5 ETH"); + expect(result).toContain("100 ETH"); + }); + + it("should get market stats", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000004", + content: { + text: "Show me NFT market stats", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + mockNftService.getTopCollections.mockResolvedValueOnce([ + { + name: "Test Collection", + address: "0x1234", + floorPrice: 1.5, + volume24h: 100, + marketCap: 1000, + holders: 500, + symbol: "TEST", + description: "Test NFT Collection", + imageUrl: "https://example.com/image.png", + }, + ]); + + const result = await nftCollectionProvider.get(mockRuntime, message); + expect(result).toContain("Test Collection"); + expect(result).toContain("1.5 ETH"); + }); + + it("should handle missing NFT service", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000005", + content: { + text: "Show me top NFT collections", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + (mockRuntime.services.get as any).mockReturnValue(null); + + await expect( + nftCollectionProvider.get(mockRuntime, message) + ).rejects.toThrow("NFT service not found"); + }); + + it("should handle service errors", async () => { + const message: Memory = { + id: "00000000-0000-0000-0000-000000000006", + content: { + text: "Show me top NFT collections", + }, + roomId: "00000000-0000-0000-0000-000000000002", + userId: "00000000-0000-0000-0000-000000000003", + agentId: "00000000-0000-0000-0000-000000000000", + }; + + mockNftService.getTopCollections.mockRejectedValueOnce( + new Error("API error") + ); + + await expect( + nftCollectionProvider.get(mockRuntime, message) + ).rejects.toThrow("API error"); + }); +}); diff --git a/packages/plugin-nft-collections/src/tests/services.test.ts b/packages/plugin-nft-collections/src/tests/services.test.ts new file mode 100644 index 000000000000..9169d05edd16 --- /dev/null +++ b/packages/plugin-nft-collections/src/tests/services.test.ts @@ -0,0 +1,111 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { IAgentRuntime } from "@elizaos/core"; +import { ReservoirService } from "../services/reservoir"; +import { MarketIntelligenceService } from "../services/market-intelligence"; +import { SocialAnalyticsService } from "../services/social-analytics"; +import { MemoryCacheManager } from "../services/cache-manager"; +import { RateLimiter } from "../services/rate-limiter"; + +describe("NFT Services", () => { + const mockRuntime = { + services: { + get: vi.fn(), + }, + messageManager: { + createMemory: vi.fn(), + }, + agentId: "00000000-0000-0000-0000-000000000000", + } as unknown as IAgentRuntime; + + describe("ReservoirService", () => { + let service: ReservoirService; + let cacheManager: MemoryCacheManager; + let rateLimiter: RateLimiter; + + beforeEach(() => { + cacheManager = new MemoryCacheManager(); + rateLimiter = new RateLimiter(); + service = new ReservoirService({ + cacheManager, + rateLimiter, + }); + }); + + it("should initialize correctly", async () => { + await service.initialize(mockRuntime); + expect(service).toBeDefined(); + }); + + it("should handle API requests with caching", async () => { + const mockData = { collections: [] }; + vi.spyOn(global, "fetch").mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve(mockData), + } as Response); + + const result = await service.getTopCollections(5); + expect(result).toBeDefined(); + expect(Array.isArray(result)).toBe(true); + }); + }); + + describe("MarketIntelligenceService", () => { + let service: MarketIntelligenceService; + let cacheManager: MemoryCacheManager; + let rateLimiter: RateLimiter; + + beforeEach(() => { + cacheManager = new MemoryCacheManager(); + rateLimiter = new RateLimiter(); + service = new MarketIntelligenceService({ + cacheManager, + rateLimiter, + }); + }); + + it("should initialize correctly", async () => { + await service.initialize(mockRuntime); + expect(service).toBeDefined(); + }); + + it("should return market intelligence data", async () => { + const result = await service.getMarketIntelligence("0x1234"); + expect(result).toBeDefined(); + expect(result.floorPrice).toBeDefined(); + expect(result.volume24h).toBeDefined(); + }); + }); + + describe("SocialAnalyticsService", () => { + let service: SocialAnalyticsService; + let cacheManager: MemoryCacheManager; + let rateLimiter: RateLimiter; + + beforeEach(() => { + cacheManager = new MemoryCacheManager(); + rateLimiter = new RateLimiter(); + service = new SocialAnalyticsService({ + cacheManager, + rateLimiter, + }); + }); + + it("should initialize correctly", async () => { + await service.initialize(mockRuntime); + expect(service).toBeDefined(); + }); + + it("should return social metrics", async () => { + const result = await service.getSocialMetrics("0x1234"); + expect(result).toBeDefined(); + expect(result.lastUpdate).toBeDefined(); + }); + + it("should analyze sentiment", async () => { + const result = await service.analyzeSentiment("0x1234"); + expect(result).toBeDefined(); + expect(result.overall).toBeDefined(); + expect(result.breakdown).toBeDefined(); + }); + }); +}); diff --git a/packages/plugin-nft-collections/src/tests/templates.test.ts b/packages/plugin-nft-collections/src/tests/templates.test.ts new file mode 100644 index 000000000000..ec5e97a2f295 --- /dev/null +++ b/packages/plugin-nft-collections/src/tests/templates.test.ts @@ -0,0 +1,270 @@ +import { describe, expect, it } from "vitest"; +import { + listingTemplates, + floorSweepTemplates, + marketStatsTemplates, + socialAnalyticsTemplates, + listNftTemplate, + floorSweepTemplate, + marketStatsTemplate, + socialAnalyticsTemplate, +} from "../templates"; + +describe("NFT Collection Templates", () => { + describe("Listing Templates", () => { + it("should generate successful listing message", () => { + const result = listingTemplates.successfulListing({ + collection: "0x1234567890abcdef", + tokenId: "123", + purchasePrice: 1.5, + listingPrice: 3.0, + isPriceAutomatic: true, + status: "active", + marketplaceUrl: "https://ikigailabs.xyz/listing/123", + transactionHash: "0xabcdef", + }); + + expect(result).toContain("Successfully created listing"); + expect(result).toContain("0x1234567890abcdef"); + expect(result).toContain("1.5 ETH"); + expect(result).toContain("3.0 ETH"); + expect(result).toContain("0xabcdef"); + }); + + it("should generate listing failed message", () => { + const result = listingTemplates.listingFailed( + "Insufficient balance" + ); + expect(result).toBe("Failed to list NFT: Insufficient balance"); + }); + }); + + describe("Floor Sweep Templates", () => { + it("should generate successful sweep message", () => { + const result = floorSweepTemplates.successfulSweep({ + collection: "0x1234567890abcdef", + quantity: 5, + totalPrice: 10, + averagePrice: 2, + path: "direct", + steps: [ + { action: "approve", status: "completed" }, + { action: "buy", status: "completed" }, + ], + }); + + expect(result).toContain("Successfully swept 5 NFTs"); + expect(result).toContain("10 ETH"); + expect(result).toContain("2.0000 ETH"); + expect(result).toContain("approve - completed"); + }); + + it("should generate insufficient listings message", () => { + const result = floorSweepTemplates.insufficientListings(3, 5); + expect(result).toBe( + "Only 3 NFTs available at floor price (requested 5)" + ); + }); + }); + + describe("Market Stats Templates", () => { + it("should generate collection overview", () => { + const result = marketStatsTemplates.collectionOverview({ + collection: { + name: "Test Collection", + address: "0x1234", + floorPrice: 1.5, + volume24h: 100, + marketCap: 1000, + holders: 500, + symbol: "TEST", + description: "Test NFT Collection", + imageUrl: "https://example.com/image.png", + }, + marketIntelligence: { + washTradingMetrics: { + washTradingScore: 0.1, + suspiciousVolume24h: 10, + suspiciousTransactions24h: 5, + }, + liquidityMetrics: { + bestBid: 1.4, + bestAsk: 1.6, + depth: [ + { price: 1.4, quantity: 2 }, + { price: 1.5, quantity: 3 }, + ], + bidAskSpread: 0.2, + }, + priceHistory: [ + { timestamp: 1234567890, price: 1.2, volume: 50 }, + { timestamp: 1234567891, price: 1.3, volume: 60 }, + ], + marketplaceActivity: { + listings: { + volume24h: 100, + trades24h: 50, + marketShare: 0.3, + }, + sales: { + volume24h: 80, + trades24h: 40, + marketShare: 0.25, + }, + volume: { + volume24h: 180, + trades24h: 90, + marketShare: 0.55, + }, + averagePrice: { + volume24h: 2, + trades24h: 1, + marketShare: 0.1, + }, + }, + whaleActivity: [ + { + address: "0xabc", + type: "buy", + amount: 10, + timestamp: 1234567890, + }, + { + address: "0xdef", + type: "sell", + amount: 5, + timestamp: 1234567891, + }, + ], + }, + }); + + expect(result).toContain("Test Collection"); + expect(result).toContain("1.5 ETH"); + expect(result).toContain("100 ETH"); + expect(result).toContain("500"); + expect(result).toContain("0.1"); + }); + }); + + describe("Social Analytics Templates", () => { + it("should generate social overview", () => { + const result = socialAnalyticsTemplates.socialOverview({ + collection: "Test Collection", + socialMetrics: { + twitter: { + followers: 10000, + engagement: { + likes: 500, + retweets: 200, + replies: 300, + mentions: 150, + }, + sentiment: { + positive: 0.7, + neutral: 0.2, + negative: 0.1, + }, + }, + trending: true, + mentions: [ + { + platform: "twitter", + content: "Great collection!", + author: "user123", + timestamp: 1234567890, + reach: 5000, + }, + ], + influencers: [ + { + address: "0xabc", + platform: "twitter", + followers: 50000, + engagement: 0.05, + sentiment: 0.8, + }, + ], + }, + communityMetrics: { + totalMembers: 5000, + growthRate: 10, + engagement: { + activeUsers: 1000, + messagesPerDay: 500, + topChannels: [ + { + platform: "discord", + name: "general", + activity: 100, + }, + ], + }, + discord: { + members: 3000, + activity: { + messagesPerDay: 1000, + activeUsers: 500, + growthRate: 0.1, + }, + channels: [ + { + name: "general", + members: 2000, + activity: 100, + }, + ], + }, + telegram: { + members: 2000, + activity: { + messagesPerDay: 800, + activeUsers: 300, + growthRate: 0.05, + }, + }, + }, + }); + + expect(result).toContain("Test Collection"); + expect(result).toContain("10000"); + expect(result).toContain("1000 interactions"); + expect(result).toContain("70.0% positive"); + expect(result).toContain("5000"); + }); + }); + + describe("Template Strings", () => { + it("should contain required placeholders in listNftTemplate", () => { + expect(listNftTemplate).toContain("{{recentMessages}}"); + expect(listNftTemplate).toContain("{{nftInfo}}"); + expect(listNftTemplate).toContain("collectionAddress"); + expect(listNftTemplate).toContain("tokenId"); + expect(listNftTemplate).toContain("price"); + }); + + it("should contain required placeholders in floorSweepTemplate", () => { + expect(floorSweepTemplate).toContain("{{recentMessages}}"); + expect(floorSweepTemplate).toContain("{{nftInfo}}"); + expect(floorSweepTemplate).toContain("collectionAddress"); + expect(floorSweepTemplate).toContain("quantity"); + expect(floorSweepTemplate).toContain("maxPricePerNft"); + }); + + it("should contain required placeholders in marketStatsTemplate", () => { + expect(marketStatsTemplate).toContain("{{recentMessages}}"); + expect(marketStatsTemplate).toContain("{{nftInfo}}"); + expect(marketStatsTemplate).toContain("collectionAddress"); + expect(marketStatsTemplate).toContain("timePeriod"); + expect(marketStatsTemplate).toContain("statType"); + }); + + it("should contain required placeholders in socialAnalyticsTemplate", () => { + expect(socialAnalyticsTemplate).toContain("{{recentMessages}}"); + expect(socialAnalyticsTemplate).toContain("{{nftInfo}}"); + expect(socialAnalyticsTemplate).toContain("collectionAddress"); + expect(socialAnalyticsTemplate).toContain("platform"); + expect(socialAnalyticsTemplate).toContain("metricType"); + }); + }); +}); diff --git a/packages/plugin-nft-collections/src/types.ts b/packages/plugin-nft-collections/src/types.ts new file mode 100644 index 000000000000..4c14722b4cae --- /dev/null +++ b/packages/plugin-nft-collections/src/types.ts @@ -0,0 +1,323 @@ +import { Service } from "@elizaos/core"; + +declare module "@elizaos/core" { + interface ServiceTypeMap { + nft: Service & NFTService; + nft_market_intelligence: Service & MarketIntelligenceService; + nft_social_analytics: Service & SocialAnalyticsService; + } +} + +export interface NFTService { + getTopCollections(): Promise; + getMarketStats(): Promise; + getCollectionActivity(collectionAddress: string): Promise; + getCollectionTokens(collectionAddress: string): Promise; + getCollectionAttributes(collectionAddress: string): Promise; + getFloorListings(options: { + collection: string; + limit: number; + sortBy: "price" | "rarity"; + }): Promise< + Array<{ + tokenId: string; + price: number; + seller: string; + marketplace: string; + }> + >; + executeBuy(options: { + listings: Array<{ + tokenId: string; + price: number; + seller: string; + marketplace: string; + }>; + taker: string; + }): Promise<{ + path: string; + steps: Array<{ + action: string; + status: string; + }>; + }>; + createListing(options: { + tokenId: string; + collectionAddress: string; + price: number; + expirationTime?: number; // Unix timestamp + marketplace: "ikigailabs"; + currency?: string; // Default to ETH + quantity?: number; // Default to 1 for ERC721 + }): Promise<{ + listingId: string; + status: string; + transactionHash?: string; + marketplaceUrl: string; + }>; + cancelListing(options: { + listingId: string; + marketplace: "ikigailabs"; + }): Promise<{ + status: string; + transactionHash?: string; + }>; + getOwnedNFTs(owner: string): Promise< + Array<{ + tokenId: string; + collectionAddress: string; + name: string; + imageUrl?: string; + attributes?: Record; + }> + >; +} + +export interface NFTKnowledge { + mentionsCollection: boolean; + mentionsFloorPrice: boolean; + mentionsVolume: boolean; + mentionsRarity: boolean; + mentionsMarketTrends: boolean; + mentionsTraders: boolean; + mentionsSentiment: boolean; + mentionsMarketCap: boolean; + mentionsArtist: boolean; + mentionsOnChainData: boolean; + mentionsNews: boolean; + mentionsSocial: boolean; + mentionsContract: boolean; +} + +export interface MarketIntelligenceService { + getMarketIntelligence( + collectionAddress: string + ): Promise; + getTraitAnalytics(collectionAddress: string): Promise; + detectWashTrading(collectionAddress: string): Promise<{ + suspiciousAddresses: string[]; + suspiciousTransactions: Array<{ + hash: string; + from: string; + to: string; + price: number; + confidence: number; + }>; + }>; + getWhaleActivity(collectionAddress: string): Promise<{ + whales: Array<{ + address: string; + holdings: number; + avgHoldingTime: number; + tradingVolume: number; + lastTrade: number; + }>; + impact: { + priceImpact: number; + volumeShare: number; + holdingsShare: number; + }; + }>; + getLiquidityAnalysis(collectionAddress: string): Promise<{ + depth: Array<{ + price: number; + quantity: number; + totalValue: number; + }>; + metrics: { + totalLiquidity: number; + averageSpread: number; + volatility24h: number; + }; + }>; +} + +export interface SocialAnalyticsService { + getSocialMetrics(collectionAddress: string): Promise; + getNews(collectionAddress: string): Promise; + getCommunityMetrics( + collectionAddress: string, + discordId?: string, + telegramId?: string + ): Promise; + analyzeSentiment(collectionAddress: string): Promise<{ + overall: number; + breakdown: { + positive: number; + neutral: number; + negative: number; + }; + trends: Array<{ + topic: string; + sentiment: number; + volume: number; + }>; + }>; + trackSocialPerformance(collectionAddress: string): Promise<{ + metrics: { + reach: number; + engagement: number; + influence: number; + }; + trends: Array<{ + platform: string; + metric: string; + values: number[]; + }>; + }>; +} + +export interface NFTCollection { + address: string; + name: string; + symbol: string; + description?: string; + imageUrl?: string; + floorPrice: number; + volume24h: number; + marketCap: number; + holders: number; +} + +export interface MarketStats { + totalVolume24h: number; + totalMarketCap: number; + totalCollections: number; + totalHolders: number; + averageFloorPrice: number; +} + +export interface MarketIntelligence { + priceHistory: Array<{ + timestamp: number; + price: number; + volume: number; + }>; + washTradingMetrics: { + suspiciousVolume24h: number; + suspiciousTransactions24h: number; + washTradingScore: number; + }; + marketplaceActivity: { + [marketplace: string]: { + volume24h: number; + trades24h: number; + marketShare: number; + }; + }; + whaleActivity: Array<{ + address: string; + type: "buy" | "sell"; + amount: number; + timestamp: number; + }>; + liquidityMetrics: { + depth: Array<{ + price: number; + quantity: number; + }>; + bidAskSpread: number; + bestBid: number; + bestAsk: number; + }; +} + +export interface TraitAnalytics { + distribution: { + [trait: string]: { + [value: string]: number; + }; + }; + rarityScores: { + [tokenId: string]: number; + }; + combinations: { + total: number; + unique: number; + rarest: Array<{ + traits: { [key: string]: string }; + count: number; + }>; + }; + priceByRarity: Array<{ + rarityRange: [number, number]; + avgPrice: number; + volume: number; + }>; +} + +export interface SocialMetrics { + twitter: { + followers: number; + engagement: { + likes: number; + retweets: number; + replies: number; + mentions: number; + }; + sentiment: { + positive: number; + neutral: number; + negative: number; + }; + }; + mentions: Array<{ + platform: string; + content: string; + author: string; + timestamp: number; + reach: number; + }>; + influencers: Array<{ + address: string; + platform: string; + followers: number; + engagement: number; + sentiment: number; + }>; + trending: boolean; +} + +export interface NewsItem { + title: string; + source: string; + url: string; + timestamp: Date; + sentiment: "positive" | "negative" | "neutral"; + relevance: number; +} + +export interface CommunityMetrics { + discord: { + members: number; + activity: { + messagesPerDay: number; + activeUsers: number; + growthRate: number; + }; + channels: Array<{ + name: string; + members: number; + activity: number; + }>; + } | null; + telegram: { + members: number; + activity: { + messagesPerDay: number; + activeUsers: number; + growthRate: number; + }; + } | null; + totalMembers: number; + growthRate: number; + engagement: { + activeUsers: number; + messagesPerDay: number; + topChannels: Array<{ + platform: string; + name: string; + activity: number; + }>; + }; +} diff --git a/packages/plugin-nft-collections/src/utils/error-handler.ts b/packages/plugin-nft-collections/src/utils/error-handler.ts new file mode 100644 index 000000000000..81d1ac4a41a6 --- /dev/null +++ b/packages/plugin-nft-collections/src/utils/error-handler.ts @@ -0,0 +1,191 @@ +import { z } from "zod"; + +// Error Types +export enum ErrorType { + VALIDATION = "VALIDATION", + NETWORK = "NETWORK", + RATE_LIMIT = "RATE_LIMIT", + API = "API", + INTERNAL = "INTERNAL", +} + +// Error Codes +export enum ErrorCode { + // Validation Errors + INVALID_ADDRESS = "INVALID_ADDRESS", + INVALID_TOKEN_ID = "INVALID_TOKEN_ID", + INVALID_PRICE = "INVALID_PRICE", + INVALID_DATA = "INVALID_DATA", + + // Network Errors + REQUEST_TIMEOUT = "REQUEST_TIMEOUT", + NETWORK_ERROR = "NETWORK_ERROR", + + // Rate Limit Errors + RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED", + + // API Errors + API_ERROR = "API_ERROR", + API_KEY_INVALID = "API_KEY_INVALID", + API_RESPONSE_INVALID = "API_RESPONSE_INVALID", + + // Internal Errors + INTERNAL_ERROR = "INTERNAL_ERROR", + CACHE_ERROR = "CACHE_ERROR", +} + +// Error Schema +const ErrorSchema = z.object({ + type: z.nativeEnum(ErrorType), + code: z.nativeEnum(ErrorCode), + message: z.string(), + details: z.record(z.unknown()).optional(), + timestamp: z.date(), + retryable: z.boolean(), +}); + +export type NFTError = z.infer; + +// Error Factory +export class NFTErrorFactory { + static create( + type: ErrorType, + code: ErrorCode, + message: string, + details?: Record, + retryable: boolean = false + ): NFTError { + return ErrorSchema.parse({ + type, + code, + message, + details, + timestamp: new Date(), + retryable, + }); + } + + static fromError(error: unknown): NFTError { + if (error instanceof Error) { + return this.create( + ErrorType.INTERNAL, + ErrorCode.INTERNAL_ERROR, + error.message, + { stack: error.stack }, + false + ); + } + return this.create( + ErrorType.INTERNAL, + ErrorCode.INTERNAL_ERROR, + "Unknown error occurred", + { error }, + false + ); + } +} + +// Error Handler +export class ErrorHandler { + private static instance: ErrorHandler; + private errorCallbacks: Array<(error: NFTError) => void> = []; + + private constructor() {} + + static getInstance(): ErrorHandler { + if (!ErrorHandler.instance) { + ErrorHandler.instance = new ErrorHandler(); + } + return ErrorHandler.instance; + } + + registerErrorCallback(callback: (error: NFTError) => void): void { + this.errorCallbacks.push(callback); + } + + handleError(error: NFTError): void { + // Log the error + console.error(JSON.stringify(error, null, 2)); + + // Execute registered callbacks + this.errorCallbacks.forEach((callback) => { + try { + callback(error); + } catch (callbackError) { + console.error("Error in error callback:", callbackError); + } + }); + + // Handle specific error types + switch (error.type) { + case ErrorType.RATE_LIMIT: + this.handleRateLimitError(error); + break; + case ErrorType.NETWORK: + this.handleNetworkError(error); + break; + case ErrorType.API: + this.handleAPIError(error); + break; + default: + break; + } + } + + private handleRateLimitError(error: NFTError): void { + if (error.retryable) { + // Implement retry logic with exponential backoff + console.log("Rate limit error will be retried"); + } + } + + private handleNetworkError(error: NFTError): void { + if (error.retryable) { + // Implement network retry logic + console.log("Network error will be retried"); + } + } + + private handleAPIError(error: NFTError): void { + if (error.code === ErrorCode.API_KEY_INVALID) { + // Handle invalid API key + console.error("Invalid API key detected"); + } + } +} + +// Error Utilities +export function isRetryableError(error: NFTError): boolean { + return error.retryable; +} + +export function shouldRetry( + error: NFTError, + attempt: number, + maxRetries: number +): boolean { + return isRetryableError(error) && attempt < maxRetries; +} + +export function getRetryDelay( + attempt: number, + baseDelay: number = 1000 +): number { + return Math.min(baseDelay * Math.pow(2, attempt), 30000); // Max 30 seconds +} + +// Usage Example: +/* +try { + // Your code here +} catch (error) { + const nftError = NFTErrorFactory.create( + ErrorType.API, + ErrorCode.API_ERROR, + 'API request failed', + { originalError: error }, + true + ); + ErrorHandler.getInstance().handleError(nftError); +} +*/ diff --git a/packages/plugin-nft-collections/src/utils/performance.ts b/packages/plugin-nft-collections/src/utils/performance.ts new file mode 100644 index 000000000000..de4dced28db8 --- /dev/null +++ b/packages/plugin-nft-collections/src/utils/performance.ts @@ -0,0 +1,222 @@ +import { EventEmitter } from "events"; + +interface PerformanceMetric { + operation: string; + duration: number; + timestamp: Date; + success: boolean; + metadata?: Record; +} + +interface PerformanceAlert { + type: "LATENCY" | "ERROR_RATE" | "THROUGHPUT"; + threshold: number; + current: number; + operation: string; + timestamp: Date; +} + +export class PerformanceMonitor extends EventEmitter { + private static instance: PerformanceMonitor; + private metrics: PerformanceMetric[] = []; + private readonly maxMetrics: number = 1000; + private alertThresholds = { + latency: 2000, // 2 seconds + errorRate: 0.1, // 10% + throughput: 10, // requests per second + }; + + private constructor() { + super(); + this.startPeriodicCheck(); + } + + static getInstance(): PerformanceMonitor { + if (!PerformanceMonitor.instance) { + PerformanceMonitor.instance = new PerformanceMonitor(); + } + return PerformanceMonitor.instance; + } + + // Record a performance metric + recordMetric(metric: Omit): void { + const fullMetric = { + ...metric, + timestamp: new Date(), + }; + + this.metrics.push(fullMetric); + if (this.metrics.length > this.maxMetrics) { + this.metrics.shift(); + } + + this.checkThresholds(fullMetric); + } + + // Start measuring operation duration + startOperation( + operation: string, + metadata?: Record + ): () => void { + const startTime = performance.now(); + return () => { + const duration = performance.now() - startTime; + this.recordMetric({ + operation, + duration, + success: true, + metadata, + }); + }; + } + + // Get average latency for an operation + getAverageLatency(operation: string, timeWindowMs: number = 60000): number { + const relevantMetrics = this.getRecentMetrics(operation, timeWindowMs); + if (relevantMetrics.length === 0) return 0; + + const totalDuration = relevantMetrics.reduce( + (sum, metric) => sum + metric.duration, + 0 + ); + return totalDuration / relevantMetrics.length; + } + + // Get error rate for an operation + getErrorRate(operation: string, timeWindowMs: number = 60000): number { + const relevantMetrics = this.getRecentMetrics(operation, timeWindowMs); + if (relevantMetrics.length === 0) return 0; + + const errorCount = relevantMetrics.filter( + (metric) => !metric.success + ).length; + return errorCount / relevantMetrics.length; + } + + // Get throughput (operations per second) + getThroughput(operation: string, timeWindowMs: number = 60000): number { + const relevantMetrics = this.getRecentMetrics(operation, timeWindowMs); + return (relevantMetrics.length / timeWindowMs) * 1000; + } + + // Get performance summary + getPerformanceSummary(timeWindowMs: number = 60000): Record< + string, + { + averageLatency: number; + errorRate: number; + throughput: number; + } + > { + const operations = new Set(this.metrics.map((m) => m.operation)); + const summary: Record = {}; + + for (const operation of operations) { + summary[operation] = { + averageLatency: this.getAverageLatency(operation, timeWindowMs), + errorRate: this.getErrorRate(operation, timeWindowMs), + throughput: this.getThroughput(operation, timeWindowMs), + }; + } + + return summary; + } + + // Set alert thresholds + setAlertThresholds(thresholds: Partial): void { + this.alertThresholds = { + ...this.alertThresholds, + ...thresholds, + }; + } + + private getRecentMetrics( + operation: string, + timeWindowMs: number + ): PerformanceMetric[] { + const now = new Date(); + const windowStart = new Date(now.getTime() - timeWindowMs); + return this.metrics.filter( + (metric) => + metric.operation === operation && + metric.timestamp >= windowStart + ); + } + + private checkThresholds(metric: PerformanceMetric): void { + // Check latency threshold + if (metric.duration > this.alertThresholds.latency) { + this.emitAlert({ + type: "LATENCY", + threshold: this.alertThresholds.latency, + current: metric.duration, + operation: metric.operation, + timestamp: new Date(), + }); + } + + // Check error rate threshold + const errorRate = this.getErrorRate(metric.operation); + if (errorRate > this.alertThresholds.errorRate) { + this.emitAlert({ + type: "ERROR_RATE", + threshold: this.alertThresholds.errorRate, + current: errorRate, + operation: metric.operation, + timestamp: new Date(), + }); + } + + // Check throughput threshold + const throughput = this.getThroughput(metric.operation); + if (throughput > this.alertThresholds.throughput) { + this.emitAlert({ + type: "THROUGHPUT", + threshold: this.alertThresholds.throughput, + current: throughput, + operation: metric.operation, + timestamp: new Date(), + }); + } + } + + private emitAlert(alert: PerformanceAlert): void { + this.emit("alert", alert); + } + + private startPeriodicCheck(): void { + setInterval(() => { + const summary = this.getPerformanceSummary(); + this.emit("performance-summary", summary); + }, 60000); // Check every minute + } +} + +// Usage Example: +/* +const monitor = PerformanceMonitor.getInstance(); + +// Record operation start +const end = monitor.startOperation('fetchCollection', { collectionId: '123' }); + +try { + // Your operation here + end(); // Record successful completion +} catch (error) { + monitor.recordMetric({ + operation: 'fetchCollection', + duration: 0, + success: false, + metadata: { error: error.message }, + }); +} + +// Listen for alerts +monitor.on('alert', (alert: PerformanceAlert) => { + console.log(`Performance alert: ${alert.type} threshold exceeded for ${alert.operation}`); +}); + +// Get performance summary +const summary = monitor.getPerformanceSummary(); +console.log('Performance summary:', summary); +*/ diff --git a/packages/plugin-nft-collections/src/utils/response-enhancer.ts b/packages/plugin-nft-collections/src/utils/response-enhancer.ts new file mode 100644 index 000000000000..c32532e52ac9 --- /dev/null +++ b/packages/plugin-nft-collections/src/utils/response-enhancer.ts @@ -0,0 +1,73 @@ +import { State } from "@elizaos/core"; +import { NFTKnowledge } from "../types"; + +export function enhanceResponse(response: string, state: State): string { + const nftKnowledge = state.nftKnowledge as NFTKnowledge; + + if (nftKnowledge?.mentionsCollection) { + response += + " Would you like to know more about specific NFT collections?"; + } + + if (nftKnowledge?.mentionsFloorPrice) { + response += + " I can provide information on floor prices for popular collections."; + } + + if (nftKnowledge?.mentionsVolume) { + response += + " I can share recent trading volume data for NFT collections."; + } + + if (nftKnowledge?.mentionsRarity) { + response += + " I can explain rarity factors in NFT collections if you're interested."; + } + + if (nftKnowledge?.mentionsMarketTrends) { + response += + " I can show you the latest market trends and price movements."; + } + + if (nftKnowledge?.mentionsTraders) { + response += + " Would you like to see recent whale activity and notable trades?"; + } + + if (nftKnowledge?.mentionsSentiment) { + response += + " I can provide current market sentiment analysis and trader mood indicators."; + } + + if (nftKnowledge?.mentionsMarketCap) { + response += + " I can show you market cap rankings and valuation metrics."; + } + + if (nftKnowledge?.mentionsArtist) { + response += + " I can provide detailed information about the artist, their background, and previous collections."; + } + + if (nftKnowledge?.mentionsOnChainData) { + response += + " I can show you detailed on-chain analytics including holder distribution and trading patterns."; + } + + if (nftKnowledge?.mentionsNews) { + response += + " I can share the latest news and announcements about this collection."; + } + + if (nftKnowledge?.mentionsSocial) { + response += + " I can provide social media metrics and community engagement data."; + } + + if (nftKnowledge?.mentionsContract) { + response += + " I can show you contract details including standards, royalties, and verification status."; + } + + return response; +} diff --git a/packages/plugin-nft-collections/src/utils/validation.ts b/packages/plugin-nft-collections/src/utils/validation.ts new file mode 100644 index 000000000000..b0c02cbde16b --- /dev/null +++ b/packages/plugin-nft-collections/src/utils/validation.ts @@ -0,0 +1,134 @@ +import { z } from "zod"; +import { getAddress, isAddress } from "ethers/lib/utils"; + +// Enhanced NFT Collection Schema with strict validation +export const NFTCollectionSchema = z.object({ + address: z.string().refine((val) => isAddress(val), { + message: "Invalid Ethereum address", + }), + name: z.string().min(1).max(100), + symbol: z.string().min(1).max(10).optional(), + description: z.string().max(5000).optional(), + imageUrl: z.string().url().optional(), + externalUrl: z.string().url().optional(), + twitterUsername: z + .string() + .regex(/^[A-Za-z0-9_]{1,15}$/) + .optional(), + discordUrl: z.string().url().optional(), + verified: z.boolean().default(false), + featured: z.boolean().default(false), + createdAt: z.string().datetime().optional(), + floorPrice: z.number().min(0).optional(), + volume24h: z.number().min(0).optional(), + marketCap: z.number().min(0).optional(), + holders: z.number().int().min(0).optional(), + totalSupply: z.number().int().min(0).optional(), + twitterFollowers: z.number().int().min(0).optional(), + discordMembers: z.number().int().min(0).optional(), + supportedMarketplaces: z.array(z.string()).optional(), + hasRoyalties: z.boolean().optional(), + royaltyPercentage: z.number().min(0).max(100).optional(), + traits: z.record(z.string(), z.array(z.string())).optional(), + categories: z.array(z.string()).optional(), + lastUpdate: z.string().datetime().optional(), +}); + +// Market Data Schema +export const MarketDataSchema = z.object({ + floorPrice: z.number().min(0), + bestOffer: z.number().min(0).optional(), + volume24h: z.number().min(0), + volume7d: z.number().min(0).optional(), + volume30d: z.number().min(0).optional(), + marketCap: z.number().min(0), + holders: z.number().int().min(0), + sales24h: z.number().int().min(0).optional(), + averagePrice24h: z.number().min(0).optional(), + lastUpdate: z.string().datetime(), +}); + +// Social Metrics Schema +export const SocialMetricsSchema = z.object({ + twitterFollowers: z.number().int().min(0).optional(), + twitterEngagement: z.number().min(0).optional(), + discordMembers: z.number().int().min(0).optional(), + discordActive: z.number().int().min(0).optional(), + telegramMembers: z.number().int().min(0).optional(), + telegramActive: z.number().int().min(0).optional(), + lastUpdate: z.string().datetime(), +}); + +// Validation Functions +export function validateCollection(data: unknown) { + return NFTCollectionSchema.parse(data); +} + +export function validateMarketData(data: unknown) { + return MarketDataSchema.parse(data); +} + +export function validateSocialMetrics(data: unknown) { + return SocialMetricsSchema.parse(data); +} + +// Type Inference +export type NFTCollection = z.infer; +export type MarketData = z.infer; +export type SocialMetrics = z.infer; + +// Utility Functions +export function isValidEthereumAddress(address: string): boolean { + return isAddress(address); +} + +export function normalizeAddress(address: string): string { + try { + return getAddress(address); + } catch { + throw new Error("Invalid Ethereum address"); + } +} + +export function validateTokenId( + tokenId: string, + collection: NFTCollection +): boolean { + const numericTokenId = BigInt(tokenId); + if (collection.totalSupply) { + return ( + numericTokenId >= 0n && + numericTokenId < BigInt(collection.totalSupply) + ); + } + return numericTokenId >= 0n; +} + +export function validatePriceRange(price: number): boolean { + return price >= 0 && price <= 1000000; // Reasonable price range in ETH +} + +export function sanitizeCollectionData(data: unknown): Partial { + try { + return NFTCollectionSchema.parse(data); + } catch { + // Return only the valid fields + const partial = {}; + const validFields = Object.entries( + data as Record + ).filter(([key, value]) => { + try { + NFTCollectionSchema.shape[key].parse(value); + return true; + } catch { + return false; + } + }); + + for (const [key, value] of validFields) { + partial[key] = value; + } + + return partial; + } +} diff --git a/packages/plugin-nft-collections/tsconfig.json b/packages/plugin-nft-collections/tsconfig.json new file mode 100644 index 000000000000..fc61771fb21c --- /dev/null +++ b/packages/plugin-nft-collections/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "module": "ESNext", + "target": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/plugin-nft-collections/vitest.config.ts b/packages/plugin-nft-collections/vitest.config.ts new file mode 100644 index 000000000000..47c872fae34c --- /dev/null +++ b/packages/plugin-nft-collections/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + environment: "node", + include: ["src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], + coverage: { + reporter: ["text", "json", "html"], + include: ["src/**/*.ts"], + exclude: ["src/**/*.{test,spec}.ts"], + }, + }, +}); diff --git a/packages/plugin-nft-generation/package.json b/packages/plugin-nft-generation/package.json index 2807c1d183ba..308f8a500a33 100644 --- a/packages/plugin-nft-generation/package.json +++ b/packages/plugin-nft-generation/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-nft-generation", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-node/README.md b/packages/plugin-node/README.md index c0f367c1c526..f9066fcb08ad 100644 --- a/packages/plugin-node/README.md +++ b/packages/plugin-node/README.md @@ -54,6 +54,9 @@ AWS_SECRET_ACCESS_KEY=your_aws_secret_key AWS_REGION=your_aws_region AWS_S3_BUCKET=your_s3_bucket AWS_S3_UPLOAD_PATH=your_upload_path +AWS_S3_ENDPOINT=an_alternative_endpoint +AWS_S3_SSL_ENABLED=boolean(true|false) +AWS_S3_FORCE_PATH_STYLE=boolean(true|false) ``` ## Usage diff --git a/packages/plugin-node/package.json b/packages/plugin-node/package.json index 4dac931b40c4..ba53c2943dd7 100644 --- a/packages/plugin-node/package.json +++ b/packages/plugin-node/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-node", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-node/scripts/postinstall.js b/packages/plugin-node/scripts/postinstall.js index 6a30ca9443ac..826949088f88 100644 --- a/packages/plugin-node/scripts/postinstall.js +++ b/packages/plugin-node/scripts/postinstall.js @@ -55,10 +55,10 @@ if (!distro || !supportedDistros.some((name) => distro.includes(name))) { } try { - execSync("npx playwright install-deps && npx playwright install", { + execSync("npx playwright install", { stdio: "inherit" }); } catch (err) { - console.error("Failed to install Playwright dependencies:", err.message); + console.error("Failed to install Playwright you may need to install playwright deps with 'sudo npx playwright install-deps'. Error: ", err.message); process.exit(1); -} +} \ No newline at end of file diff --git a/packages/plugin-node/src/services/awsS3.ts b/packages/plugin-node/src/services/awsS3.ts index 0c038c5ef5d2..988d2f6d12fe 100644 --- a/packages/plugin-node/src/services/awsS3.ts +++ b/packages/plugin-node/src/services/awsS3.ts @@ -58,7 +58,17 @@ export class AwsS3Service extends Service implements IAwsS3Service { return false; } + /** Optional fields to allow for other providers */ + const endpoint = this.runtime.getSetting("AWS_S3_ENDPOINT"); + const sslEnabled = this.runtime.getSetting("AWS_S3_SSL_ENABLED"); + const forcePathStyle = this.runtime.getSetting("AWS_S3_FORCE_PATH_STYLE"); + this.s3Client = new S3Client({ + ...(endpoint ? { endpoint } : {}), + ...(sslEnabled ? { sslEnabled } : {}), + ...(forcePathStyle + ? { forcePathStyle: Boolean(forcePathStyle) } + : {}), region: AWS_REGION, credentials: { accessKeyId: AWS_ACCESS_KEY_ID, diff --git a/packages/plugin-node/src/services/image.ts b/packages/plugin-node/src/services/image.ts index 56a59c9056d4..29ce240c583f 100644 --- a/packages/plugin-node/src/services/image.ts +++ b/packages/plugin-node/src/services/image.ts @@ -189,6 +189,49 @@ class OpenAIImageProvider implements ImageProvider { } } +class GroqImageProvider implements ImageProvider { + constructor(private runtime: IAgentRuntime) {} + + async initialize(): Promise {} + + async describeImage( + imageData: Buffer, + mimeType: string + ): Promise<{ title: string; description: string }> { + const imageUrl = convertToBase64DataUrl(imageData, mimeType); + + const content = [ + { type: "text", text: IMAGE_DESCRIPTION_PROMPT }, + { type: "image_url", image_url: { url: imageUrl } }, + ]; + + const endpoint = + this.runtime.imageVisionModelProvider === ModelProviderName.GROQ + ? getEndpoint(this.runtime.imageVisionModelProvider) + : "https://api.groq.com/openai/v1/"; + + const response = await fetch(endpoint + "/chat/completions", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${this.runtime.getSetting("GROQ_API_KEY")}`, + }, + body: JSON.stringify({ + model: /*this.runtime.imageVisionModelName ||*/ "llama-3.2-90b-vision-preview", + messages: [{ role: "user", content }], + max_tokens: 1024, + }), + }); + + if (!response.ok) { + await handleApiError(response, "Groq"); + } + + const data = await response.json(); + return parseImageResponse(data.choices[0].message.content); + } +} + class GoogleImageProvider implements ImageProvider { constructor(private runtime: IAgentRuntime) {} @@ -254,11 +297,18 @@ export class ImageDescriptionService this.runtime = runtime; } - private async initializeProvider(): Promise { + private async initializeProvider(): Promise { if (!this.runtime) { throw new Error("Runtime is required for image recognition"); } + const availableModels = [ + ModelProviderName.LLAMALOCAL, + ModelProviderName.GOOGLE, + ModelProviderName.OPENAI, + ModelProviderName.GROQ, + ].join(", "); + const model = models[this.runtime?.character?.modelProvider]; if (this.runtime.imageVisionModelProvider) { @@ -280,10 +330,18 @@ export class ImageDescriptionService ) { this.provider = new OpenAIImageProvider(this.runtime); elizaLogger.debug("Using openai for vision model"); + } else if ( + this.runtime.imageVisionModelProvider === ModelProviderName.GROQ + ) { + this.provider = new GroqImageProvider(this.runtime); + elizaLogger.debug("Using Groq for vision model"); } else { - elizaLogger.error( - `Unsupported image vision model provider: ${this.runtime.imageVisionModelProvider}` + elizaLogger.warn( + `Unsupported image vision model provider: ${this.runtime.imageVisionModelProvider}. ` + + `Please use one of the following: ${availableModels}. ` + + `Update the 'imageVisionModelProvider' field in the character file.` ); + return false; } } else if (model === models[ModelProviderName.LLAMALOCAL]) { this.provider = new LocalImageProvider(); @@ -291,13 +349,23 @@ export class ImageDescriptionService } else if (model === models[ModelProviderName.GOOGLE]) { this.provider = new GoogleImageProvider(this.runtime); elizaLogger.debug("Using google for vision model"); + } else if (model === models[ModelProviderName.GROQ]) { + this.provider = new GroqImageProvider(this.runtime); + elizaLogger.debug("Using groq for vision model"); } else { elizaLogger.debug("Using default openai for vision model"); this.provider = new OpenAIImageProvider(this.runtime); } - await this.provider.initialize(); - this.initialized = true; + try { + await this.provider.initialize(); + } catch (error) { + elizaLogger.error( + `Failed to initialize the image vision model provider: ${this.runtime.imageVisionModelProvider}` + ); + return false; + } + return true; } private async loadImageData( @@ -362,15 +430,17 @@ export class ImageDescriptionService imageUrl: string ): Promise<{ title: string; description: string }> { if (!this.initialized) { - await this.initializeProvider(); + this.initialized = await this.initializeProvider(); } - try { - const { data, mimeType } = await this.loadImageData(imageUrl); - return await this.provider!.describeImage(data, mimeType); - } catch (error) { - elizaLogger.error("Error in describeImage:", error); - throw error; + if (this.initialized) { + try { + const { data, mimeType } = await this.loadImageData(imageUrl); + return await this.provider!.describeImage(data, mimeType); + } catch (error) { + elizaLogger.error("Error in describeImage:", error); + throw error; + } } } } diff --git a/packages/plugin-obsidian/package.json b/packages/plugin-obsidian/package.json index 475b52c8093d..fd9d39ba500d 100644 --- a/packages/plugin-obsidian/package.json +++ b/packages/plugin-obsidian/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-obsidian", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-opacity/eslint.config.mjs b/packages/plugin-opacity/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-opacity/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-opacity/package.json b/packages/plugin-opacity/package.json index 3314e7d027c8..ba51125bbde5 100644 --- a/packages/plugin-opacity/package.json +++ b/packages/plugin-opacity/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-opacity", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "Opacity Protocol adapter for ElizaOS", "main": "dist/index.js", "type": "module", diff --git a/packages/plugin-opacity/src/index.ts b/packages/plugin-opacity/src/index.ts index 630905841217..09ec0e830d45 100644 --- a/packages/plugin-opacity/src/index.ts +++ b/packages/plugin-opacity/src/index.ts @@ -43,7 +43,6 @@ export class OpacityAdapter implements IVerifiableInferenceAdapter { // Get provider-specific endpoint let endpoint; let authHeader; - let responseRegex; switch (provider) { case ModelProviderName.OPENAI: @@ -97,7 +96,7 @@ export class OpacityAdapter implements IVerifiableInferenceAdapter { // Validate JSON before sending try { JSON.parse(requestBody); // Verify the JSON is valid - } catch (e) { + } catch { elizaLogger.error("Invalid JSON body:", body); throw new Error("Failed to create valid JSON request body"); } diff --git a/packages/plugin-open-weather/package.json b/packages/plugin-open-weather/package.json index 15f2fc981699..e8fc95bf786a 100644 --- a/packages/plugin-open-weather/package.json +++ b/packages/plugin-open-weather/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-open-weather", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-primus/package.json b/packages/plugin-primus/package.json index 762a63141a26..4233619dbb2c 100644 --- a/packages/plugin-primus/package.json +++ b/packages/plugin-primus/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-primus", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-quai/package.json b/packages/plugin-quai/package.json index e7911509dd84..b0a1bf04e4a6 100644 --- a/packages/plugin-quai/package.json +++ b/packages/plugin-quai/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-quai", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-rabbi-trader/package.json b/packages/plugin-rabbi-trader/package.json index 7138ab9e1df8..4eaeb0f817c9 100644 --- a/packages/plugin-rabbi-trader/package.json +++ b/packages/plugin-rabbi-trader/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-rabbi-trader", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-sgx/package.json b/packages/plugin-sgx/package.json index 14b9887fa855..09a7859daf87 100644 --- a/packages/plugin-sgx/package.json +++ b/packages/plugin-sgx/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-sgx", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-solana-agentkit/package.json b/packages/plugin-solana-agentkit/package.json index 4623a2d8cf3e..8f5d72faea30 100644 --- a/packages/plugin-solana-agentkit/package.json +++ b/packages/plugin-solana-agentkit/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-solana-agentkit", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-solana-agentkit/src/index.ts b/packages/plugin-solana-agentkit/src/index.ts index ae80c66c7449..2d1e3a43fae6 100644 --- a/packages/plugin-solana-agentkit/src/index.ts +++ b/packages/plugin-solana-agentkit/src/index.ts @@ -1,7 +1,7 @@ import { Plugin } from "@elizaos/core"; import createToken from "./actions/createToken.ts"; -export const solanaAgentkitPlguin: Plugin = { +export const solanaAgentkitPlugin: Plugin = { name: "solana", description: "Solana Plugin with solana agent kit for Eliza", actions: [createToken], @@ -9,4 +9,4 @@ export const solanaAgentkitPlguin: Plugin = { providers: [], }; -export default solanaAgentkitPlguin; +export default solanaAgentkitPlugin; diff --git a/packages/plugin-solana/__tests__/actions/swap.test.ts b/packages/plugin-solana/__tests__/actions/swap.test.ts new file mode 100644 index 000000000000..f38f806c4e85 --- /dev/null +++ b/packages/plugin-solana/__tests__/actions/swap.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect, vi } from 'vitest'; + +describe('Swap Action', () => { + describe('validate', () => { + it('should handle swap message validation', async () => { + const mockMessage = { + content: 'Swap 1 SOL to USDC', + metadata: { + fromToken: 'SOL', + toToken: 'USDC', + amount: '1' + } + }; + + // Basic test to ensure message structure + expect(mockMessage.metadata).toBeDefined(); + expect(mockMessage.metadata.fromToken).toBe('SOL'); + expect(mockMessage.metadata.toToken).toBe('USDC'); + expect(mockMessage.metadata.amount).toBe('1'); + }); + }); +}); diff --git a/packages/plugin-solana/__tests__/evaluators/trust.test.ts b/packages/plugin-solana/__tests__/evaluators/trust.test.ts new file mode 100644 index 000000000000..ff7cb8b13433 --- /dev/null +++ b/packages/plugin-solana/__tests__/evaluators/trust.test.ts @@ -0,0 +1,55 @@ +import { describe, it, expect, vi } from 'vitest'; +import { trustEvaluator } from '../../src/evaluators/trust'; + +// Mock the core module +vi.mock('@elizaos/core', () => ({ + generateTrueOrFalse: vi.fn().mockResolvedValue(false), + ModelClass: { + SMALL: 'small' + }, + settings: { + MAIN_WALLET_ADDRESS: 'test-wallet-address' + }, + booleanFooter: 'Answer with Yes or No.', + elizaLogger: { + log: vi.fn(), + debug: vi.fn(), + info: vi.fn(), + error: vi.fn() + }, + composeContext: vi.fn().mockReturnValue({ + state: {}, + template: '' + }) +})); + +describe('Trust Evaluator', () => { + it('should handle non-trust messages', async () => { + const mockRuntime = { + getSetting: vi.fn(), + composeState: vi.fn().mockResolvedValue({ + agentId: 'test-agent', + roomId: 'test-room' + }), + getLogger: vi.fn().mockReturnValue({ + debug: vi.fn(), + info: vi.fn(), + log: vi.fn(), + error: vi.fn() + }) + }; + + const mockMessage = { + content: 'Hello world', + metadata: {} + }; + + const mockState = { + agentId: 'test-agent', + roomId: 'test-room' + }; + + const result = await trustEvaluator.handler(mockRuntime, mockMessage, mockState); + expect(result).toBeDefined(); + }); +}); diff --git a/packages/plugin-solana/__tests__/providers/token-security.test.ts b/packages/plugin-solana/__tests__/providers/token-security.test.ts new file mode 100644 index 000000000000..d350953092d6 --- /dev/null +++ b/packages/plugin-solana/__tests__/providers/token-security.test.ts @@ -0,0 +1,36 @@ +import { describe, it, expect, vi } from 'vitest'; +import { TokenProvider } from '../../src/providers/token'; +import { WalletProvider } from '../../src/providers/wallet'; +import { ICacheManager } from '@elizaos/core'; + +describe('Token Security', () => { + it('should handle empty security data gracefully', async () => { + const mockCacheManager = { + get: vi.fn().mockResolvedValue(null), + set: vi.fn(), + delete: vi.fn(), + clear: vi.fn(), + has: vi.fn(), + }; + + const mockWalletProvider = new WalletProvider(mockCacheManager); + const tokenProvider = new TokenProvider( + 'So11111111111111111111111111111111111111112', + mockWalletProvider, + mockCacheManager + ); + + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ + success: true, + data: {} + }) + }); + + const result = await tokenProvider.fetchTokenSecurity(); + expect(result).toBeDefined(); + expect(result.ownerBalance).toBe(undefined); + expect(result.creatorBalance).toBe(undefined); + }); +}); diff --git a/packages/plugin-solana/src/tests/token.test.ts b/packages/plugin-solana/__tests__/token.test.ts similarity index 98% rename from packages/plugin-solana/src/tests/token.test.ts rename to packages/plugin-solana/__tests__/token.test.ts index 6b799c1c2397..5d1a5e234510 100644 --- a/packages/plugin-solana/src/tests/token.test.ts +++ b/packages/plugin-solana/__tests__/token.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach, vi, afterEach } from "vitest"; -import { TokenProvider } from "../providers/token.ts"; +import { TokenProvider } from "../src/providers/token.ts"; // Mock NodeCache vi.mock("node-cache", () => { diff --git a/packages/plugin-solana/package.json b/packages/plugin-solana/package.json index fcc5150f4989..1d716cdc2636 100644 --- a/packages/plugin-solana/package.json +++ b/packages/plugin-solana/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-solana", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-solana/src/keypairUtils.ts b/packages/plugin-solana/src/keypairUtils.ts index 6dbacdb84149..f8405424bc13 100644 --- a/packages/plugin-solana/src/keypairUtils.ts +++ b/packages/plugin-solana/src/keypairUtils.ts @@ -30,8 +30,8 @@ export async function getWalletKey( const deriveKeyProvider = new DeriveKeyProvider(teeMode); const deriveKeyResult = await deriveKeyProvider.deriveEd25519Keypair( - "/", walletSecretSalt, + "solana", runtime.agentId ); diff --git a/packages/plugin-spheron/package.json b/packages/plugin-spheron/package.json index 0d934e880a84..2c9f32d55a7e 100644 --- a/packages/plugin-spheron/package.json +++ b/packages/plugin-spheron/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-spheron", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "Spheron Protocol Plugin for Eliza", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/plugin-squid-router/README.md b/packages/plugin-squid-router/README.md new file mode 100644 index 000000000000..20038ab02eda --- /dev/null +++ b/packages/plugin-squid-router/README.md @@ -0,0 +1,26 @@ +# @elizaos/squid-router + +This plugin adds Squid Router functionality to Eliza agents. It allows cross chain swaps between blockchains. +For now, only swaps beteen EVM chains are supported, but the plan is to add swaps from/to Solana and the Cosomos ecosystem. +For supported chains and tokens, please refer to the [Squid Router documentation](https://docs.squidrouter.com/). + +## Configuration + +The plugin requires the following configuration: +``` +# Squid Router +SQUID_SDK_URL=https://apiplus.squidrouter.com # Default: https://apiplus.squidrouter.com +SQUID_INTEGRATOR_ID= # get integrator id through https://docs.squidrouter.com/ +SQUID_EVM_ADDRESS= +SQUID_EVM_PRIVATE_KEY= +``` + +## Actions + +### Cross Chain Swap + +name: `X_CHAIN_SWAP` + +Perform cross chain swaps for both native and ERC20 tokens supported by Squid Router. + +Message sample: `Bridge 1 ETH from Ethereum to Base` diff --git a/packages/plugin-squid-router/eslint.config.mjs b/packages/plugin-squid-router/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-squid-router/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-squid-router/package.json b/packages/plugin-squid-router/package.json new file mode 100644 index 000000000000..33b46fbccb60 --- /dev/null +++ b/packages/plugin-squid-router/package.json @@ -0,0 +1,25 @@ +{ + "name": "@elizaos/plugin-squid-router", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@0xsquid/sdk": "2.8.29", + "@0xsquid/squid-types": "0.1.122", + "@elizaos/core": "workspace:*", + "ethers": "6.8.1", + "optional": "0.1.4", + "sharp": "0.33.5", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-squid-router/src/actions/xChainSwap.ts b/packages/plugin-squid-router/src/actions/xChainSwap.ts new file mode 100644 index 000000000000..778ad68a2f93 --- /dev/null +++ b/packages/plugin-squid-router/src/actions/xChainSwap.ts @@ -0,0 +1,262 @@ +import { + composeContext, + elizaLogger, + generateObjectDeprecated, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State +} from "@elizaos/core"; +import {xChainSwapTemplate} from "../templates"; +import {convertToWei, isXChainSwapContent, validateSquidRouterConfig} from "../helpers/utils.ts"; +import {ethers} from "ethers"; +import {initSquidRouterProvider} from "../providers/squidRouter.ts"; + +export { xChainSwapTemplate }; + +const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); + +const approveSpending = async (transactionRequestTarget: string, fromToken: string, fromAmount: string, signer: ethers.Signer) => { + const erc20Abi = [ + "function approve(address spender, uint256 amount) public returns (bool)" + ]; + const tokenContract = new ethers.Contract(fromToken, erc20Abi, signer); + try { + const tx = await tokenContract.approve(transactionRequestTarget, fromAmount); + await tx.wait(); + console.log(`Approved ${fromAmount} tokens for ${transactionRequestTarget}`); + } catch (error) { + console.error('Approval failed:', error); + throw error; + } +}; + +export const xChainSwapAction = { + name: "X_CHAIN_SWAP", + description: "Swaps tokens across chains from the agent's wallet to a recipient wallet. \n"+ + "By default the senders configured wallets will be used to send the assets to on the destination chains, unless clearly defined otherwise by providing a recipient address.\n" + + "The system supports bridging, cross chain swaps and normal swaps.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + elizaLogger.log("Starting X_CHAIN_SWAP handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Compose X chain swap context + const xChainSwapContext = composeContext({ + state, + template: xChainSwapTemplate, + }); + + // Generate X chain swap content + const content = await generateObjectDeprecated({ + runtime, + context: xChainSwapContext, + modelClass: ModelClass.SMALL, + }); + + if(content.toAddress === null) { + content.toAddress = runtime.getSetting("SQUID_EVM_ADDRESS"); + } + + elizaLogger.log("swap content: ",JSON.stringify(content)); + + // Validate transfer content + if (!isXChainSwapContent(content)) { + console.error("Invalid content for X_CHAIN_SWAP action."); + if (callback) { + callback({ + text: "Unable to process cross-chain swap request. Invalid content provided.", + content: { error: "Invalid cross-chain swap content" }, + }); + } + return false; + } + + try { + + const squidRouter = initSquidRouterProvider(runtime); + await squidRouter.initialize(); + console.log("Initialized Squid SDK"); + + const fromChainObject = squidRouter.getChain(content.fromChain); + if(!fromChainObject) { + throw new Error( + "Chain to swap from is not supported." + ); + } + + const toChainObject = squidRouter.getChain(content.toChain); + if(!toChainObject) { + throw new Error( + "Chain to swap to is not supported." + ); + } + + const fromTokenObject = squidRouter.getToken(fromChainObject, content.fromToken); + if(!fromTokenObject?.enabled) { + throw new Error( + "Token to swap from is not supported." + ); + } + + const toTokenObject = squidRouter.getToken(toChainObject, content.toToken); + if(!fromTokenObject?.enabled) { + throw new Error( + "Token to swap into is not supported." + ); + } + + const signer = await squidRouter.getEVMSignerForChain(fromChainObject, runtime); + + const params = { + fromAddress: await signer.getAddress(), + fromChain: fromChainObject.chainId, + fromToken: fromTokenObject.address, + fromAmount: convertToWei(content.amount, fromTokenObject), + toChain: toChainObject.chainId, + toToken: toTokenObject.address, + toAddress: content.toAddress, + quoteOnly: false + }; + + console.log("Parameters:", params); // Printing the parameters for QA + + const throttleInterval = runtime.getSetting("SQUID_API_THROTTLE_INTERVAL") ? Number(runtime.getSetting("SQUID_API_THROTTLE_INTERVAL")) : 0 + + await delay(throttleInterval); + + // Get the swap route using Squid SDK + const {route} = await squidRouter.getRoute(params); + console.log("Calculated route:", route.estimate.toAmount); + + const transactionRequest = route.transactionRequest; + + // Approve the transactionRequest.target to spend fromAmount of fromToken + if ("target" in transactionRequest) { + if(!fromTokenObject.isNative) { + await approveSpending(transactionRequest.target, params.fromToken, params.fromAmount, signer); + } + } else { + throw new Error( + "Non-expected transaction request" + ); + } + + await delay(throttleInterval); + + // Execute the swap transaction + const tx = (await squidRouter.executeRoute({ + signer, + route, + })) as unknown as ethers.TransactionResponse; + const txReceipt = await tx.wait(); + + // Show the transaction receipt with Axelarscan link + const axelarScanLink = "https://axelarscan.io/gmp/" + txReceipt.hash; + elizaLogger.log(`Finished! Check Axelarscan for details: ${axelarScanLink}`); + + if (callback) { + callback({ + text: + "Swap completed successfully! Check Axelarscan for details:\n " + axelarScanLink, + content: {}, + }); + } + + + + } catch (error) { + elizaLogger.error("Error during cross-chain swap:", error); + if (callback) { + callback({ + text: `Error during cross-chain swap: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + template: xChainSwapTemplate, + validate: async (runtime: IAgentRuntime) => { + await validateSquidRouterConfig(runtime); + return true; + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Bridge 1 ETH from Ethereum to Base", + }, + }, + { + user: "{{agent}}", + content: { + text: "Sure, I'll send 1 ETH from Ethereum to Base", + action: "X_CHAIN_SWAP", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully sent 1 ETH to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62 on Base\nTransaction: 0x4fed598033f0added272c3ddefd4d83a521634a738474400b27378db462a76ec", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Please swap 1 SOL into USDC from Solana to Base on address 0xF43042865f4D3B32A19ECBD1C7d4d924613c41E8", + }, + }, + { + user: "{{agent}}", + content: { + text: "Sure, I'll swap 1 SOL into USDC from Solana to Base on address 0xF43042865f4D3B32A19ECBD1C7d4d924613c41E8", + action: "X_CHAIN_SWAP", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully Swapped 1 SOL into USDC and sent to 0xF43042865f4D3B32A19ECBD1C7d4d924613c41E8 on Base\nTransaction: 2sj3ifA5iPdRDfnkyK5LZ4KoyN57AH2QoHFSzuefom11F1rgdiUriYf2CodBbq9LBi77Q5bLHz4CShveisTu954B", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Send 100 UNI from Arbitrum to Ethereum", + }, + }, + { + user: "{{agent}}", + content: { + text: "Sure, I'll send 100 UNI to Ethereum right away.", + action: "X_CHAIN_SWAP", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully sent 100 UNI to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62 on Ethereum\nTransaction: 0x4fed598033f0added272c3ddefd4d83a521634a738474400b27378db462a76ec", + }, + }, + ] + ], + similes: ["CROSS_CHAIN_SWAP", "CROSS_CHAIN_BRIDGE", "MOVE_CROSS_CHAIN", "SWAP","BRIDGE"], +}; // TODO: add more examples / similies diff --git a/packages/plugin-squid-router/src/helpers/utils.ts b/packages/plugin-squid-router/src/helpers/utils.ts new file mode 100644 index 000000000000..f8e69882d384 --- /dev/null +++ b/packages/plugin-squid-router/src/helpers/utils.ts @@ -0,0 +1,139 @@ +import { IAgentRuntime } from "@elizaos/core"; +import { z } from 'zod'; +import { ethers } from 'ethers'; +import {SquidToken, XChainSwapContent} from "../types"; + +export function convertToWei(amount: string | number, token: SquidToken): string { + if (typeof token.decimals !== 'number' || token.decimals < 0 || token.decimals > 255) { + throw new Error("Invalid decimals value in token object."); + } + + try { + // Ensure amount is a string for ethers.js + const amountString = typeof amount === 'number' ? amount.toString() : amount; + + // Use ethers.js to parse the amount into the smallest unit + const parsedAmount = ethers.parseUnits(amountString, token.decimals); + + // Return the parsed amount as a string + return parsedAmount.toString(); + } catch (error) { + throw new Error(`Failed to convert amount: ${(error as Error).message}`); + } +} + + +export function isXChainSwapContent( + content: XChainSwapContent +): boolean { + + // Validate types + const validTypes = + typeof content.fromChain === "string" && + typeof content.toChain === "string" && + typeof content.fromToken === "string" && + typeof content.toToken === "string" && + typeof content.toAddress === "string" && + (typeof content.amount === "string" || + typeof content.amount === "number"); + if (validTypes) { + return true; + } + return false +} + +// Helper Validation Functions + +const isValidEvmAddress = (address: string): boolean => { + return ethers.isAddress(address); +}; + +const isValidEvmPrivateKey = (key: string): boolean => { + const cleanedKey = key.startsWith('0x') ? key.slice(2) : key; + return /^[0-9a-fA-F]{64}$/.test(cleanedKey); +}; + +export const squidRouterEnvSchema = z + .object({ + SQUID_INTEGRATOR_ID: z.string().min(1, "Squid Integrator ID is required"), + SQUID_SDK_URL: z.string().min(1, "Squid SDK URL is required"), + + SQUID_EVM_ADDRESS: z.string().min(1, "Squid Integrator ID is required"), + SQUID_EVM_PRIVATE_KEY: z.string().min(1, "Squid Integrator ID is required"), + }) + .refine((data) => { + // Check if EVM pair is valid + const evmValid = + (data.SQUID_EVM_ADDRESS && data.SQUID_EVM_PRIVATE_KEY) && + isValidEvmAddress(data.SQUID_EVM_ADDRESS) && + isValidEvmPrivateKey(data.SQUID_EVM_PRIVATE_KEY); + + return evmValid; + }, { + message: "At least one valid address and private key pair is required: EVM, Solana, or Cosmos.", + path: [], // Global error + }) + .superRefine((data, ctx) => { + // EVM Validation + if (data.SQUID_EVM_ADDRESS || data.SQUID_EVM_PRIVATE_KEY) { + if (data.SQUID_EVM_ADDRESS && !isValidEvmAddress(data.SQUID_EVM_ADDRESS)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EVM_ADDRESS is invalid or not checksummed correctly.", + path: ["EVM_ADDRESS"], + }); + } + + if (data.SQUID_EVM_PRIVATE_KEY && !isValidEvmPrivateKey(data.SQUID_EVM_PRIVATE_KEY)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EVM_PRIVATE_KEY must be a 64-character hexadecimal string.", + path: ["EVM_PRIVATE_KEY"], + }); + } + + if ((data.SQUID_EVM_ADDRESS && !data.SQUID_EVM_PRIVATE_KEY) || (!data.SQUID_EVM_ADDRESS && data.SQUID_EVM_PRIVATE_KEY)) { + if (!data.SQUID_EVM_ADDRESS) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EVM_ADDRESS is required when EVM_PRIVATE_KEY is provided.", + path: ["EVM_ADDRESS"], + }); + } + if (!data.SQUID_EVM_PRIVATE_KEY) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EVM_PRIVATE_KEY is required when EVM_ADDRESS is provided.", + path: ["EVM_PRIVATE_KEY"], + }); + } + } + } + }); + +export type SquidRouterConfig = z.infer; + +export async function validateSquidRouterConfig( + runtime: IAgentRuntime +): Promise { + try { + const config = { + SQUID_INTEGRATOR_ID: runtime.getSetting("SQUID_INTEGRATOR_ID"), + SQUID_SDK_URL: runtime.getSetting("SQUID_SDK_URL"), + SQUID_EVM_ADDRESS: runtime.getSetting("SQUID_EVM_ADDRESS"), + SQUID_EVM_PRIVATE_KEY: runtime.getSetting("SQUID_EVM_PRIVATE_KEY"), + }; + + return squidRouterEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `Squid Router configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/plugin-squid-router/src/index.ts b/packages/plugin-squid-router/src/index.ts new file mode 100644 index 000000000000..fe3cfeb1fe14 --- /dev/null +++ b/packages/plugin-squid-router/src/index.ts @@ -0,0 +1,19 @@ +import {squidRouterProvider} from "./providers/squidRouter.ts"; + +export * from "./actions/xChainSwap.ts"; +export * from "./providers/squidRouter.ts"; +export * from "./types"; + +import type { Plugin } from "@elizaos/core"; +import { xChainSwapAction } from "./actions/xChainSwap.ts"; + +export const squidRouterPlugin: Plugin = { + name: "squid-router", + description: "Squid router plugin", + providers: [squidRouterProvider], + evaluators: [], + services: [], + actions: [xChainSwapAction], +}; + +export default squidRouterPlugin; diff --git a/packages/plugin-squid-router/src/providers/squidRouter.ts b/packages/plugin-squid-router/src/providers/squidRouter.ts new file mode 100644 index 000000000000..c37f62c0520b --- /dev/null +++ b/packages/plugin-squid-router/src/providers/squidRouter.ts @@ -0,0 +1,122 @@ +import {IAgentRuntime, Memory, Provider, State} from "@elizaos/core"; +import {Squid} from "@0xsquid/sdk"; +import {ethers} from "ethers"; +import {ChainData, ChainType, RouteRequest, RouteResponse, Token} from "@0xsquid/squid-types"; +import {validateSquidRouterConfig} from "../helpers/utils.ts"; +import {ExecuteRoute, TransactionResponses} from "@0xsquid/sdk/dist/types"; +import {nativeTokenConstant, SquidToken} from "../types"; + +const getSDK = (baseUrl: string, integratorId: string): Squid => { + const squid = new Squid({ + baseUrl: baseUrl, + integratorId: integratorId + }); + return squid; +}; + +export class SquidRouterProvider { + private squid: Squid; + + constructor( + private squidSDKUrl: string, + private squidIntegratorID: string + ) { + this.squid = getSDK(squidSDKUrl,squidIntegratorID); + } + + async initialize(): Promise { + if(!this.squid.initialized) { + await this.squid.init(); + } + } + + getSquidObject(): Squid { + return this.squid; + } + + getChains(): ChainData[] { + return this.squid.chains; + } + + getTokens(): Token[] { + return this.squid.tokens; + } + getChain(targetChainName: string): ChainData | undefined { + const normalizedTarget = targetChainName.toLowerCase(); + const targetChain = this.getChains().find(chain => chain.networkName.toLowerCase() === normalizedTarget); + //For now only support EVM. Will add Cosmos, Solana in later releases + if(targetChain.chainType === ChainType.EVM) { + return targetChain; + } + } + + getToken(targetChain: ChainData, targetTokenSymbol: string): SquidToken | undefined { + const normalizedTargetToken = targetTokenSymbol.toLowerCase(); + if(normalizedTargetToken === targetChain.nativeCurrency.symbol) { + return { + address: nativeTokenConstant, + isNative: true, + symbol: targetTokenSymbol, + decimals: targetChain.nativeCurrency.decimals, + enabled: true + } + } + const targetToken = this.getTokens().find(token => token.symbol.toLowerCase() === normalizedTargetToken && token.chainId === targetChain.chainId); + return { + address: targetToken.address, + isNative: false, + symbol: targetTokenSymbol, + decimals: targetToken.decimals, + enabled: targetToken.disabled ?? true + } + } + + async getRoute(route: RouteRequest): Promise{ + return await this.squid.getRoute(route); + } + + async executeRoute(route: ExecuteRoute): Promise{ + return await this.squid.executeRoute(route); + } + + async getEVMSignerForChain(chain: ChainData, runtime): Promise { + try { + if(chain.chainType === ChainType.EVM) { + const provider = new ethers.JsonRpcProvider(chain.rpc); + return new ethers.Wallet(runtime.getSetting("SQUID_EVM_PRIVATE_KEY"), provider); + } else { + throw Error("Cannot instantiate EVM signer for non-EVM chain"); + } + } catch (error) { + throw Error("Cannot instantiate EVM signer: "+error); + } + } +} + +export const initSquidRouterProvider = (runtime: IAgentRuntime) => { + validateSquidRouterConfig(runtime); + + const sdkUrl = runtime.getSetting("SQUID_SDK_URL"); + const integratorId = runtime.getSetting("SQUID_INTEGRATOR_ID"); + + return new SquidRouterProvider(sdkUrl, integratorId); +}; + +const squidRouterProvider: Provider = { + get: async ( + runtime: IAgentRuntime, + _message: Memory, + _state?: State + ): Promise => { + try { + /*const provider = */ initSquidRouterProvider(runtime); + return "Squid Router provider setup successful." + } catch (error) { + console.error("Error in Squid Router provider:", error); + return null; + } + }, +}; + +// Module exports +export { squidRouterProvider }; diff --git a/packages/plugin-squid-router/src/templates/index.ts b/packages/plugin-squid-router/src/templates/index.ts new file mode 100644 index 000000000000..433b8fa072a8 --- /dev/null +++ b/packages/plugin-squid-router/src/templates/index.ts @@ -0,0 +1,29 @@ +export const xChainSwapTemplate = `Given the recent messages and wallet information below: + +{{recentMessages}} + +Extract the following information about the requested cross chain swap: +- Token symbol to swap from +- Token symbol to swap into (if defined, otherwise the same as the token symbol to swap from) +- Source chain +- Destination chain (if defined, otherwise the same as the source chain) +- Amount to swap, denominated in the token to be sent +- Destination address (if specified) + +If the destination address is not specified, the EVM address of the runtime should be used. +If the token to swap into is not specified, the token to swap from should be used. +If the destination chain is not specified, the source chain should be used. + +Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ + "fromToken": string | null, + "toToken": string | null, + "fromChain": string | null, + "toChain": string | null, + "amount": string | null, + "toAddress": string | null +} +\`\`\` +`; diff --git a/packages/plugin-squid-router/src/tests/router.test.ts b/packages/plugin-squid-router/src/tests/router.test.ts new file mode 100644 index 000000000000..a1eeaf99cdd9 --- /dev/null +++ b/packages/plugin-squid-router/src/tests/router.test.ts @@ -0,0 +1,129 @@ +import { describe, it, expect, beforeEach, vi, afterEach } from "vitest"; +import { defaultCharacter } from "@elizaos/core"; +import { initSquidRouterProvider, SquidRouterProvider } from "../providers/squidRouter.ts"; +import {ChainType} from "@0xsquid/squid-types"; + +// Mock Squid module +vi.mock('@0xsquid/sdk', () => { + return { + Squid: vi.fn().mockImplementation(() => { + return { + initialized: false, + init: vi.fn().mockResolvedValue(undefined), + getRoute: vi.fn().mockResolvedValue({}), + executeRoute: vi.fn().mockResolvedValue({}), + chains: [{networkName: "ethereum", chainType: ChainType.EVM, nativeCurrency: {symbol: "ETH", decimals: 18}, chainId: "1"}], + tokens: [{symbol: "ETH", chainId: "1", address: "0x0", decimals: 18}], + }; + }) + }; +}); + +describe("SquidRouterProvider", () => { + let routerProvider: SquidRouterProvider; + let mockedRuntime; + + beforeEach(async () => { + vi.clearAllMocks(); + + mockedRuntime = { + character: defaultCharacter, + getSetting: vi.fn().mockImplementation((key: string) => { + if (key === "SQUID_SDK_URL") return "test_sdk_url"; + if (key === "SQUID_INTEGRATOR_ID") return "test_integrator_id"; + //public/private key for testing + if (key === "SQUID_EVM_PRIVATE_KEY") return "9a2bb49ab3fc4084e61a73c061b8a64041ce22ad57d8b99d938be2ac3143f2fa"; + if (key === "SQUID_EVM_ADDRESS") return "0xbb5F4ddaBbbb0AcD2086527A887b208b06A3BFdb"; + return undefined; + }), + }; + + routerProvider = initSquidRouterProvider(mockedRuntime); + await routerProvider.initialize(); + }); + + afterEach(() => { + vi.clearAllTimers(); + }); + + describe("Initialization", () => { + it("should initialize the Squid SDK", async () => { + expect(routerProvider).toBeDefined(); + expect(routerProvider.getChains()).toBeDefined(); + expect(routerProvider.getTokens()).toBeDefined(); + }); + }); + + describe("getChains", () => { + it("should return a list of chains", () => { + const chains = routerProvider.getChains(); + expect(chains).toBeInstanceOf(Array); + }); + }); + + describe("getTokens", () => { + it("should return a list of tokens", () => { + const tokens = routerProvider.getTokens(); + expect(tokens).toBeInstanceOf(Array); + }); + }); + + describe("getChain", () => { + it("should return the correct chain data for a given chain name", () => { + const chain = routerProvider.getChain("ethereum"); + expect(chain).toBeDefined(); + expect(chain.networkName).toEqual("ethereum"); + }); + }); + + describe("getToken", () => { + it("should return the correct token data for a given chain and token symbol", () => { + const chain = routerProvider.getChain("ethereum"); + const token = routerProvider.getToken(chain, "ETH"); + expect(token).toBeDefined(); + expect(token.symbol).toEqual("ETH"); + }); + }); + + describe("getRoute", () => { + it("should return a route response for a given route request", async () => { + const routeRequest = { + fromChain: "ethereum", + toChain: "polygon", + fromToken: "ETH", + toToken: "MATIC", + amount: "1", + fromAddress: "0xYourAddress", + toAddress: "0xRecipientAddress", + }; + const routeResponse = await routerProvider.getRoute(routeRequest); + expect(routeResponse).toBeDefined(); + }); + }); + + describe("executeRoute", () => { + it("should execute a route and return transaction responses", async () => { + const executeRoute = { + route: { + fromChain: "ethereum", + toChain: "polygon", + fromToken: "ETH", + toToken: "MATIC", + amount: "1", + fromAddress: "0xYourAddress", + toAddress: "0xRecipientAddress", + }, + }; + const transactionResponses = await routerProvider.executeRoute(executeRoute); + expect(transactionResponses).toBeDefined(); + }); + }); + + describe("getEVMSignerForChain", () => { + it("should return an EVM signer for a given chain", async () => { + const chain = routerProvider.getChain("ethereum"); + const signer = await routerProvider.getEVMSignerForChain(chain, mockedRuntime); + expect(signer).toBeDefined(); + }); + }); +}); diff --git a/packages/plugin-squid-router/src/types/index.ts b/packages/plugin-squid-router/src/types/index.ts new file mode 100644 index 000000000000..518eefce05f2 --- /dev/null +++ b/packages/plugin-squid-router/src/types/index.ts @@ -0,0 +1,20 @@ +import {Content} from "@elizaos/core"; + +export const nativeTokenConstant = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; + +export interface XChainSwapContent extends Content { + fromToken: string; + toToken: string; + fromChain: string; + toChain: string; + amount: string | number; + toAddress: string; +} + +export interface SquidToken { + address: string; + isNative: boolean; + symbol: string; + decimals: number; + enabled: boolean; +} diff --git a/packages/plugin-squid-router/tsconfig.json b/packages/plugin-squid-router/tsconfig.json new file mode 100644 index 000000000000..2d8d3fe8181f --- /dev/null +++ b/packages/plugin-squid-router/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "./src", + "typeRoots": [ + "./node_modules/@types", + "./src/types" + ], + "declaration": true + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/packages/plugin-squid-router/tsup.config.ts b/packages/plugin-squid-router/tsup.config.ts new file mode 100644 index 000000000000..299db52c34c6 --- /dev/null +++ b/packages/plugin-squid-router/tsup.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive" + ], +}); diff --git a/packages/plugin-stargaze/README.md b/packages/plugin-stargaze/README.md index d38d708547b0..878e546f520a 100644 --- a/packages/plugin-stargaze/README.md +++ b/packages/plugin-stargaze/README.md @@ -14,7 +14,7 @@ pnpm add @elizaos/plugin-stargaze ## Configuration -Set up your environment with the required Stargaze API endpoint, currently Stargaze offers https://graphql.mainnet.stargaze-apis.com/graphql publically. +Set up your environment with the required Stargaze API endpoint, currently Stargaze offers https://graphql.mainnet.stargaze-apis.com/graphql publicly. | Variable Name | Description | | ------------- | ----------- | diff --git a/packages/plugin-stargaze/package.json b/packages/plugin-stargaze/package.json index 0cc7050f1d29..f479be83c729 100644 --- a/packages/plugin-stargaze/package.json +++ b/packages/plugin-stargaze/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-stargaze", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-starknet/package.json b/packages/plugin-starknet/package.json index 08eba90e0bd7..1b309b743acc 100644 --- a/packages/plugin-starknet/package.json +++ b/packages/plugin-starknet/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-starknet", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-story/package.json b/packages/plugin-story/package.json index f6b36e85b599..f7f6a9492066 100644 --- a/packages/plugin-story/package.json +++ b/packages/plugin-story/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-story", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-sui/package.json b/packages/plugin-sui/package.json index 552f37291675..94db2b750c3f 100644 --- a/packages/plugin-sui/package.json +++ b/packages/plugin-sui/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-sui", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-tee-log/package.json b/packages/plugin-tee-log/package.json index aa0a4592cfcf..1e1b3b66e17f 100644 --- a/packages/plugin-tee-log/package.json +++ b/packages/plugin-tee-log/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-tee-log", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-tee-marlin/package.json b/packages/plugin-tee-marlin/package.json index d7121d410ead..d04bb4c3ad0f 100644 --- a/packages/plugin-tee-marlin/package.json +++ b/packages/plugin-tee-marlin/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-tee-marlin", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-tee-verifiable-log/.npmignore b/packages/plugin-tee-verifiable-log/.npmignore new file mode 100644 index 000000000000..078562eceabb --- /dev/null +++ b/packages/plugin-tee-verifiable-log/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-tee-verifiable-log/README.md b/packages/plugin-tee-verifiable-log/README.md new file mode 100644 index 000000000000..a94e6be1db9c --- /dev/null +++ b/packages/plugin-tee-verifiable-log/README.md @@ -0,0 +1,35 @@ +## Build +Execute the following command to build the code. +``` +pnpm clean +pnpm install or pnpm install --no-frozen-lockfile +pnpm build +``` + +## Configuration +This plugin depends on plugin-tee. +To get a TEE simulator for local testing, use the following commands: +```shell +docker pull phalanetwork/tappd-simulator:latest +# by default the simulator is available in localhost:8090 +docker run --rm -p 8090:8090 phalanetwork/tappd-simulator:latest +``` + +When using the provider through the runtime environment, ensure the following settings are configured: +```shell + # Optional, for simulator purposes if testing on mac or windows. Leave empty for Linux x86 machines. +TEE_MODE="LOCAL" # LOCAL | DOCKER | PRODUCTION +WALLET_SECRET_SALT= "" # ONLY define if you want to use TEE Plugin, otherwise it will throw errors + +VLOG="true" +``` +For detailed configuration of plugin-tee, see the documentation.[docs/docs/advanced/eliza-in-tee.md](/docs/docs/advanced/eliza-in-tee.md) + +## Test + +Test files are located in the `test` folder. To run the tests, execute the following command: + +```shell +pnpm test + +``` diff --git a/packages/plugin-tee-verifiable-log/eslint.config.mjs b/packages/plugin-tee-verifiable-log/eslint.config.mjs new file mode 100644 index 000000000000..92fe5bbebefa --- /dev/null +++ b/packages/plugin-tee-verifiable-log/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-tee-verifiable-log/package.json b/packages/plugin-tee-verifiable-log/package.json new file mode 100644 index 000000000000..72aa5b9c012b --- /dev/null +++ b/packages/plugin-tee-verifiable-log/package.json @@ -0,0 +1,30 @@ +{ + "name": "@elizaos/plugin-tee-verifiable-log", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-tee": "workspace:*", + "dompurify": "3.2.2", + "elliptic": "^6.6.1", + "ethereum-cryptography": "^3.0.0", + "tsup": "8.3.5", + "uuid": "11.0.3", + "vitest": "2.1.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint . --fix" + }, + "devDependencies": { + "@types/dompurify": "3.2.0", + "ts-node": "^10.9.2" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-tee-verifiable-log/src/adapters/sqliteVerifiableDAO.ts b/packages/plugin-tee-verifiable-log/src/adapters/sqliteVerifiableDAO.ts new file mode 100644 index 000000000000..0002b97dfccc --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/adapters/sqliteVerifiableDAO.ts @@ -0,0 +1,209 @@ +import { Database } from "better-sqlite3"; +import { v4 as uuidv4 } from "uuid"; +import { + VerifiableLog, + VerifiableAgent, + VerifiableDAO, + VerifiableLogQuery, + PageQuery, +} from "../types/logTypes.ts"; + +export class SQLite3VerifiableDAO extends VerifiableDAO { + constructor(db: Database) { + super(); + this.db = db; + // load(db); + // check if the tables exist, if not create them + const tables = db + .prepare( + "SELECT name FROM sqlite_master WHERE type='table' AND name IN ('verifiable-logs', 'verifiable-agents');" + ) + .all(); + if (tables.length !== 2) { + this.initializeSchema(); + } + } + + async initializeSchema(): Promise { + this.db.exec(` + CREATE TABLE IF NOT EXISTS "tee_verifiable_logs" + ( + "id" TEXT PRIMARY KEY, + "created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + "agent_id" TEXT NOT NULL, + "room_id" TEXT NOT NULL, + "user_id" TEXT, + "type" TEXT, + "content" TEXT NOT NULL, + "signature" TEXT NOT NULL + ); + `); + + this.db.exec(` + CREATE TABLE IF NOT EXISTS "tee_verifiable_agents" + ( + "id" TEXT PRIMARY KEY, + "created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + "agent_id" TEXT NOT NULL, + "agent_name" TEXT, + "agent_keypair_path" TEXT NOT NULL, + "agent_keypair_vlog_pk" TEXT NOT NULL, + UNIQUE ("agent_id") + ); + `); + } + + async addLog(log: VerifiableLog): Promise { + const sql = ` + INSERT INTO "tee_verifiable_logs" ("id", "created_at", "agent_id", "room_id", "user_id", "type", "content", + "signature") + VALUES (?, ?, ?, ?, ?, ?, ?, ?); + `; + try { + this.db + .prepare(sql) + .run( + log.id || uuidv4(), + log.created_at || new Date().getTime(), + log.agent_id, + log.room_id, + log.user_id, + log.type, + log.content, + log.signature + ); + return true; + } catch (error) { + console.error("SQLite3 Error adding log:", error); + return false; + } + } + + async pageQueryLogs( + query: VerifiableLogQuery, + page: number, + pageSize: number + ): Promise> { + const conditions: string[] = []; + const params: any[] = []; + + if (query.idEq) { + conditions.push(`id = ?`); + params.push(query.idEq); + } + if (query.agentIdEq) { + conditions.push(`agent_id = ?`); + params.push(query.agentIdEq); + } + if (query.roomIdEq) { + conditions.push(`room_id = ?`); + params.push(query.roomIdEq); + } + if (query.userIdEq) { + conditions.push(`user_id = ?`); + params.push(query.userIdEq); + } + if (query.typeEq) { + conditions.push(`type = ?`); + params.push(query.typeEq); + } + if (query.contLike) { + conditions.push(`content LIKE ?`); + params.push(`%${query.contLike}%`); + } + if (query.signatureEq) { + conditions.push(`signature = ?`); + params.push(query.signatureEq); + } + + const whereClause = + conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : ""; + + if (page < 1) { + page = 1; + } + const offset = (page - 1) * pageSize; + const limit = pageSize; + + + try { + const totalQuery = `SELECT COUNT(*) AS total + FROM tee_verifiable_logs ${whereClause}`; + const stmt = this.db.prepare(totalQuery); + const totalResult = stmt.get(params); + const total = totalResult.total; + + const dataQuery = ` + SELECT * + FROM tee_verifiable_logs ${whereClause} + ORDER BY created_at DESC + LIMIT ? OFFSET ? + `; + const dataResult = this.db + .prepare(dataQuery) + .all(...params, limit, offset); + + return { + page: page, + pageSize: pageSize, + total: total, + data: dataResult, + } as PageQuery; + } catch (error) { + console.error("Error querying tee_verifiable_logs:", error); + throw error; + } + } + + async addAgent(agent: VerifiableAgent): Promise { + const sql = ` + INSERT INTO "tee_verifiable_agents" ("id", "created_at", "agent_id","agent_name","agent_keypair_path", "agent_keypair_vlog_pk") + VALUES (?, ?, ?, ?, ?,?); + `; + try { + this.db + .prepare(sql) + .run( + agent.id || uuidv4(), + agent.created_at || new Date().getTime(), + agent.agent_id, + agent.agent_name||"agent bot", + agent.agent_keypair_path, + agent.agent_keypair_vlog_pk + ); + return true; + } catch (error) { + console.error("SQLite3 Error adding agent:", error); + return false; + } + } + + async getAgent(agentId: string): Promise { + const sql = `SELECT * + FROM "tee_verifiable_agents" + WHERE agent_id = ?`; + try { + const agent = this.db.prepare(sql).get(agentId); + if (agent) { + return agent as VerifiableAgent; + } else { + return null; + } + } catch (error) { + console.error("SQLite3 Error getting agent:", error); + throw error; + } + } + + async listAgent(): Promise { + const sql = `SELECT * + FROM "tee_verifiable_agents"`; + try { + const agents = this.db.prepare(sql).all(); + return agents as VerifiableAgent[]; + } catch (error) { + console.error("SQLite3 Error listing agent:", error); + throw error; + } + } +} diff --git a/packages/plugin-tee-verifiable-log/src/index.ts b/packages/plugin-tee-verifiable-log/src/index.ts new file mode 100644 index 000000000000..7670b90fba6a --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/index.ts @@ -0,0 +1,108 @@ +import { IAgentRuntime, type Plugin, Service, ServiceType } from "@elizaos/core"; +import { VerifiableLogProvider } from "./providers/verifiableLogProvider.ts"; +import { SQLite3VerifiableDAO } from "./adapters/sqliteVerifiableDAO.ts"; +import { + PageQuery, + VerifiableAgent, + VerifiableDAO, + VerifiableLog, + VerifiableLogQuery, +} from "./types/logTypes.ts"; + +export { PageQuery, VerifiableAgent, VerifiableLog, VerifiableLogQuery }; +export { DeriveProvider } from "./providers/dreriveProvider.ts" + +export class VerifiableLogService extends Service { + getInstance(): VerifiableLogService { + return this; + } + + static get serviceType(): ServiceType { + return ServiceType.VERIFIABLE_LOGGING; + } + + private verifiableLogProvider: VerifiableLogProvider; + private verifiableDAO: VerifiableDAO; + + private teeMode: string; + private vlogOpen: boolean = false; + + // Add abstract initialize method that must be implemented by derived classes + async initialize(runtime: IAgentRuntime): Promise { + if (runtime.databaseAdapter.db === null) { + throw new Error("Database adapter is not initialized."); + } + if (runtime.getSetting("TEE_MODE") === null) { + throw new Error("TEE_MODE is not set."); + } + if (runtime.getSetting("WALLET_SECRET_SALT") === null) { + throw new Error("WALLET_SECRET_SALT is not set."); + } + this.teeMode = runtime.getSetting("TEE_MODE"); + const value = runtime.getSetting("VLOG"); + const truthyValues = ["yes", "true", "YES", "TRUE", "Yes", "True", "1"]; + this.vlogOpen = truthyValues.includes(value.toLowerCase()); + this.verifiableDAO = new SQLite3VerifiableDAO( + runtime.databaseAdapter.db + ); + this.verifiableLogProvider = new VerifiableLogProvider( + this.verifiableDAO, + this.teeMode + ); + const isOK = await this.verifiableLogProvider.registerAgent( + { agentId: runtime?.agentId, agentName: runtime?.character?.name }, + this.teeMode + ); + if (!isOK) { + throw new Error(`Failed to register agent.${runtime.agentId}`); + } + return; + } + + async log(params: { + agentId: string; + roomId: string; + userId: string; + type: string; + content: string; + }): Promise { + if (this.vlogOpen) { + return this.verifiableLogProvider.log(params, this.teeMode); + } + return false; + } + + async generateAttestation(params: { + agentId: string; + publicKey: string; + }): Promise { + if (this.vlogOpen) { + return this.verifiableLogProvider.generateAttestation( + params, + ); + } + return ""; + } + + async listAgent(): Promise { + return this.verifiableDAO.listAgent(); + } + + async pageQueryLogs( + query: VerifiableLogQuery, + page: number, + pageSize: number + ): Promise> { + return this.verifiableDAO.pageQueryLogs(query, page, pageSize); + } +} + +export const verifiableLogPlugin: Plugin = { + name: "TeeVerifiableLog", + description: + "While Eliza operates within the TEE, it uses a derived key pair to sign its actions, ensuring that these actions are definitively executed by Eliza. Third-party users can remotely verify Eliza's public key to validate these actions", + actions: [], + evaluators: [], + providers: [], + services: [new VerifiableLogService()], +}; diff --git a/packages/plugin-tee-verifiable-log/src/providers/dreriveProvider.ts b/packages/plugin-tee-verifiable-log/src/providers/dreriveProvider.ts new file mode 100644 index 000000000000..750f05a0e670 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/providers/dreriveProvider.ts @@ -0,0 +1,116 @@ +import { DeriveKeyProvider } from "@elizaos/plugin-tee"; +import * as crypto from "crypto"; + +export class DeriveProvider { + private provider: DeriveKeyProvider; + + constructor(teeModel: string) { + this.provider = new DeriveKeyProvider(teeModel); + } + + async deriveKeyPair(params: { + agentId: string; + bizModel: string; + }): Promise { + const keyPath = `/${params.agentId}/tee/keypair/${params.bizModel}`; + const seed = await this.provider.rawDeriveKey(keyPath, params.agentId); + const privateKey = crypto.createPrivateKey({ + key: seed.key, + format: "pem", + }); + const privateKeyDer = privateKey.export({ + format: "der", + type: "pkcs8", + }); + return crypto.createHash("sha256").update(privateKeyDer).digest(); + } + + async encryptAgentData( + params: { + agentId: string; + bizModel: string; + }, + plainText: string + ): Promise<{ + success: boolean; + errorMsg: string; + ivHex: string; + encryptedData: string; + }> { + try { + const rawKey = await this.deriveKeyPair(params); + const { ivHex, encrypted } = this.encrypt(plainText, rawKey); + + return { + success: true, + errorMsg: "", + ivHex: ivHex, + encryptedData: encrypted, + }; + } catch (error) { + return { + success: true, + errorMsg: "encryptAgentData failed:" + error, + ivHex: "", + encryptedData: "", + }; + } + } + + async decryptAgentData( + params: { + agentId: string; + bizModel: string; + }, + ivHex: string, + encryptedData: string + ): Promise<{ + success: boolean; + errorMsg: string; + plainText: string; + }> { + try { + const rawKey = await this.deriveKeyPair(params); + const plainText = this.decrypt(encryptedData, ivHex, rawKey); + return { + success: true, + errorMsg: "", + plainText: plainText, + }; + } catch (error) { + return { + success: false, + errorMsg: "decryptAgentData failed: " + error, + plainText: "", + }; + } + } + + private encrypt( + text: string, + key: Buffer + ): { ivHex: string; encrypted: string } { + // generate a random initialization vector iv + const iv = crypto.randomBytes(16); + + // create cipher object + const cipher = crypto.createCipheriv("aes-256-cbc", key, iv); + + let encrypted = cipher.update(text, "utf8", "hex"); + encrypted += cipher.final("hex"); + + //Return IV and encrypted data (IV needs to be used during decryption) + return { ivHex: iv.toString("hex"), encrypted: encrypted }; + } + + private decrypt(encryptedData: string, ivHex: string, key: Buffer): string { + const decipher = crypto.createDecipheriv( + "aes-256-cbc", + key, + Buffer.from(ivHex, "hex") + ); + let decrypted = decipher.update(encryptedData, "hex", "utf8"); + decrypted += decipher.final("utf8"); + return decrypted; + } +} diff --git a/packages/plugin-tee-verifiable-log/src/providers/verifiableLogProvider.ts b/packages/plugin-tee-verifiable-log/src/providers/verifiableLogProvider.ts new file mode 100644 index 000000000000..248e71ddcf24 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/providers/verifiableLogProvider.ts @@ -0,0 +1,115 @@ +import { elizaLogger } from "@elizaos/core"; +import { + IVerifiableLogProvider, + VerifiableAgent, + VerifiableDAO, + VerifiableLog, +} from "../types/logTypes.ts"; +import { + DeriveKeyProvider, + RemoteAttestationProvider, + RemoteAttestationQuote, +} from "@elizaos/plugin-tee"; + +export class VerifiableLogProvider implements IVerifiableLogProvider { + private dao: VerifiableDAO; + private keyPath: string = "/keys/verifiable_key"; + private remoteAttestationProvider: RemoteAttestationProvider; + private provider: DeriveKeyProvider; + + constructor(dao: VerifiableDAO, teeMode: string) { + this.dao = dao; + this.remoteAttestationProvider = new RemoteAttestationProvider(teeMode); + this.provider = new DeriveKeyProvider(teeMode); + } + + async log( + params: { + agentId: string; + roomId: string; + userId: string; + type: string; + content: string; + }, + subject: string + ): Promise { + let singed: string = ""; + + try { + const evmKeypair = await this.provider.deriveEcdsaKeypair( + this.keyPath, + subject, + params.agentId + ); + const signature = await evmKeypair.keypair.signMessage({ + message: params.content, + }); + singed = signature.toString(); + + // evmKeypair can now be used for Ethereum operations + } catch (error) { + elizaLogger.error("EVM key derivation failed:", error) + return false; + } + return this.dao.addLog({ + agent_id: params.agentId, + room_id: params.roomId, + user_id: params.userId, + type: params.type, + content: params.content, + signature: singed, + }); + } + + async registerAgent( + params: { + agentId: string; + agentName: string; + }, + subject: string + ): Promise { + if (params.agentId === undefined) { + throw new Error("agentId is required"); + } + + const agent = await this.dao.getAgent(params.agentId); + if (agent !== null) { + return true; + } + const evmKeypair = await this.provider.deriveEcdsaKeypair( + this.keyPath, + subject, + params.agentId + ); + + const publicKey = evmKeypair.keypair.publicKey; + + return this.dao.addAgent({ + agent_id: params.agentId, + agent_name: params.agentName, + agent_keypair_path: this.keyPath, + agent_keypair_vlog_pk: publicKey, + }); + } + + async generateAttestation( + params: { + agentId: string; + publicKey: string; + } + ): Promise { + if (params.agentId === undefined || params.publicKey === undefined) { + throw new Error("agentId and publicKey are required"); + } + try { + // Generate 32-byte report data (reportData) containing the hash value of the public key. + const reportData = JSON.stringify(params); + // Call the remote attestation interface. + const quote: RemoteAttestationQuote = await this.remoteAttestationProvider.generateAttestation(reportData); + return JSON.stringify(quote); + } catch (error) { + elizaLogger.error("Failed to generate attestation quote:", error); + throw error; + } + } +} diff --git a/packages/plugin-tee-verifiable-log/src/test/deriveProvider.test.ts b/packages/plugin-tee-verifiable-log/src/test/deriveProvider.test.ts new file mode 100644 index 000000000000..24364a990372 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/test/deriveProvider.test.ts @@ -0,0 +1,54 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { v4 as uuidv4 } from "uuid"; + +import { DeriveProvider } from "../providers/dreriveProvider.ts"; + +describe("DeriveProvider", () => { + let deriveProvider: DeriveProvider; + const teeEndpoint = "LOCAL"; + beforeEach(() => { + deriveProvider = new DeriveProvider(teeEndpoint); + }); + describe("DeriveProvider Management", () => { + it("should deriveKeyPair when available", async () => { + const agentId = uuidv4(); + const { keys } = await deriveProvider.deriveKeyPair({ + agentId: agentId, + bizModel: "test", + }); + expect(keys).not.toBeNull(); + }); + it("should deriveKeyPair when available 2", async () => { + const agentId = uuidv4(); + const plantText = "Helo World"; + const { success, errorMsg, ivHex, encryptedData } = + await deriveProvider.encryptAgentData( + { + agentId: agentId, + bizModel: "test", + }, + plantText + ); + console.log("encryptAgentData:", { + success, + errorMsg, + ivHex, + encryptedData, + }); + expect(success).toBe(true); + expect(errorMsg).toBe(""); + + const result = + await deriveProvider.decryptAgentData( + { + agentId: agentId, + bizModel: "test", + }, + ivHex, + encryptedData + ); + console.log("=====",result) + expect(result.plainText).toBe(plantText); + }); + }); +}); diff --git a/packages/plugin-tee-verifiable-log/src/test/providers.test.ts b/packages/plugin-tee-verifiable-log/src/test/providers.test.ts new file mode 100644 index 000000000000..b3d75200d1a5 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/test/providers.test.ts @@ -0,0 +1,160 @@ +import { describe, it, expect, beforeEach, assert } from "vitest"; +import { SQLite3VerifiableDAO } from "../adapters/sqliteVerifiableDAO.ts"; +import Database from "better-sqlite3"; +import type { Database as DatabaseType } from "better-sqlite3"; +import { v4 as uuidv4 } from "uuid"; +import os from "os"; +import path from "path"; +import { + VerifiableAgent, + VerifiableLog, + VerifiableLogQuery, +} from "../types/logTypes.ts"; +import { VerifiableLogProvider } from "../providers/verifiableLogProvider.ts"; + +describe("SQLite3VerifiableDAO", () => { + let db: DatabaseType; + let sqLite3VerifiableDAO: SQLite3VerifiableDAO; + + let verifiableLogProvider: VerifiableLogProvider; + + const teeEndpoint = "LOCAL"; + beforeEach(() => { + const tempDir = os.tmpdir(); + const filePath = path.join(tempDir, "test2-db.sqlite"); + db = new Database(filePath); + sqLite3VerifiableDAO = new SQLite3VerifiableDAO(db); + verifiableLogProvider = new VerifiableLogProvider(sqLite3VerifiableDAO,"LOCAL"); + }); + describe("VerifiableLogProvider Management", () => { + it("should verifiableLogProvider.log when available", async () => { + const uid = uuidv4(); + await verifiableLogProvider.log( + { + agentId: uid, + roomId: "roomId", + userId: "userId", + type: "type1", + content: "body1", + }, + teeEndpoint + ); + + const pageResult1 = await sqLite3VerifiableDAO.pageQueryLogs( + { + agentIdEq: uid, + }, + 1, + 2 + ); + console.log("pageResult1:", pageResult1); + expect(pageResult1).not.toBeNull(); + assert.equal(pageResult1.data.length, 1); + }); + + it("should registerAgent and getAgent when available", async () => { + const testAgentId = uuidv4(); + await verifiableLogProvider.registerAgent( + { agentId: testAgentId, agentName: "test bot" }, + teeEndpoint + ); + console.log("testAgentId:", testAgentId); + const agentList = await sqLite3VerifiableDAO.listAgent(); + console.log("agentList:", agentList); + + const pageResult1 = await sqLite3VerifiableDAO.getAgent(testAgentId); + console.log("pageResult1:", pageResult1); + expect(pageResult1).not.toBeNull(); + + const stringPromise =await verifiableLogProvider.generateAttestation({ agentId: testAgentId ,publicKey: pageResult1.agent_keypair_vlog_pk}); + console.log("stringPromise:", stringPromise); + expect(stringPromise).not.toBeNull(); + }); + + }); + + describe("SQLite3VerifiableDAO Management", () => { + it("should addLog and pageQueryLogs when available", async () => { + const testId = uuidv4(); + await sqLite3VerifiableDAO.addLog({ + id: testId, + agent_id: "dddd", + room_id: "roomId", + user_id: "userId", + type: "type1", + content: "body1", + signature: "signed1", + }); + + const pageResult1 = await sqLite3VerifiableDAO.pageQueryLogs( + { + idEq: testId, + }, + 1, + 2 + ); + console.log("pageResult1:", pageResult1); + assert.equal(pageResult1.data.length, 1); + + const pageResult2 = await sqLite3VerifiableDAO.pageQueryLogs( + { + roomIdEq: "roomId", + userIdEq: "userId", + typeEq: "type1", + signatureEq: "signed1", + }, + 1, + 10 + ); + expect(pageResult2).not.toBeNull(); + + const pageResult3 = await sqLite3VerifiableDAO.pageQueryLogs( + { + contLike: "ddd", + }, + 1, + 10 + ); + expect(pageResult3.data).not.toBeNull(); + + const pageResult4 = await sqLite3VerifiableDAO.pageQueryLogs( + { + contLike: "body", + }, + 1, + 10 + ); + expect(pageResult4).not.toBeNull(); + }); + }); + + describe("Agent Management", () => { + it("should add agent when available", async () => { + const agentId = uuidv4(); + await sqLite3VerifiableDAO.addAgent({ + agent_id: agentId, + agent_name:"test bot", + agent_keypair_path: "/secretKey/path/", + agent_keypair_vlog_pk: "dddd的的的", + }); + var agent = await sqLite3VerifiableDAO.getAgent(agentId); + expect(agent).not.toBeNull(); + + console.log("get agent:", agent); + }); + + it("should list agent when available", async () => { + const agentId = uuidv4(); + await sqLite3VerifiableDAO.addAgent({ + agent_id: agentId, + agent_name:"test bot", + agent_keypair_path: "/secretKey/path/", + agent_keypair_vlog_pk: "dddd的的的", + }); + const agentList = await sqLite3VerifiableDAO.listAgent(); + // determine if agentlist data is not empty + expect(agentList).not.toBeNull(); + console.log("get agent:", agentList); + }); + }); +}); diff --git a/packages/plugin-tee-verifiable-log/src/types/logTypes.ts b/packages/plugin-tee-verifiable-log/src/types/logTypes.ts new file mode 100644 index 000000000000..32414b0385c3 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/src/types/logTypes.ts @@ -0,0 +1,126 @@ + +export interface VerifiableLog { + id: string; // Primary Key UUID + created_at?: Date; // Default value: CURRENT_TIMESTAMP + agent_id: string; // Not null + room_id: string; // Not null + user_id: string; // Not null + type: string; // Not null + content: string; // Not null + signature: string; // Not null +} +export interface VerifiableLogQuery { + idEq: string; + agentIdEq: string; + roomIdEq: string; + userIdEq: string; + typeEq: string; + contLike: string; + signatureEq: string; +} + +export interface VerifiableAgent { + id: string; // Primary Key + created_at?: Date; // Default value: CURRENT_TIMESTAMP + agent_id: string; // Not null + agent_name: string; // Not null + agent_keypair_path: string; // Not null + agent_keypair_vlog_pk: string; // Not null +} + +export interface PageQuery { + page: number; + pageSize: number; + total?: number; + data?: Result; +} + +export abstract class VerifiableDAO { + protected constructor() {} + + /** + * The database instance. + */ + db: DB; + + /** + * Optional initialization method for the database adapter. + * @returns A Promise that resolves when initialization is complete. + */ + abstract initializeSchema(): Promise; + + /** + * insert log to table + * @param log + */ + abstract addLog(log: VerifiableLog): Promise; + + /** + * Performs a paginated query for VerifiableLogs based on the given criteria. + * + * @param agentQuery - The query parameters to filter the logs. + * @param page - The page number to retrieve (1-based). + * @param pageSize - The number of items per page. + * @returns A Promise that resolves to a PageQuery object containing an array of VerifiableLogs. + */ + abstract pageQueryLogs( + agentQuery: VerifiableLogQuery, + page: number, + pageSize: number + ): Promise>; + + /** + * insert Verifiable Agent info to table + * @param agent + */ + abstract addAgent(agent: VerifiableAgent): Promise; + + /** + * Retrieves a VerifiableAgent by its agentId. + * + * @param agentId - The unique identifier of the agent to retrieve. + * @returns A Promise that resolves to a VerifiableAgent object. + */ + abstract getAgent(agentId: string): Promise; + + /** + * Retrieves a list of all VerifiableAgents. + * + * @returns A Promise that resolves to an array of VerifiableAgent objects. + */ + abstract listAgent(): Promise; +} + +export interface IVerifiableLogProvider { + /** + * Logs a message with the given parameters. + * + * @param params - The parameters for the log message. + * @param endpoint - Tee endpoint. + * @returns A Promise that resolves to a boolean indicating whether the log was successful. + */ + log( + params: { + agentId: string; + roomId: string; + userId: string; + type: string; + content: string; + }, + endpoint: string + ): Promise; + + /** + * Registers a new agent with the given parameters. + * + * @param params - The parameters for the agent registration. + * @param endpoint - Tee endpoint. + * @returns A Promise that resolves to a boolean indicating whether the registration was successful. + */ + registerAgent( + params: { + agentId: string; + }, + endpoint: string + ): Promise; +} diff --git a/packages/plugin-tee-verifiable-log/tsconfig.json b/packages/plugin-tee-verifiable-log/tsconfig.json new file mode 100644 index 000000000000..73993deaaf7c --- /dev/null +++ b/packages/plugin-tee-verifiable-log/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-tee-verifiable-log/tsup.config.ts b/packages/plugin-tee-verifiable-log/tsup.config.ts new file mode 100644 index 000000000000..1a55f7a745f6 --- /dev/null +++ b/packages/plugin-tee-verifiable-log/tsup.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [], +}); diff --git a/packages/plugin-tee/package.json b/packages/plugin-tee/package.json index 58e2d94b7d35..616233692c3e 100644 --- a/packages/plugin-tee/package.json +++ b/packages/plugin-tee/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-tee", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", @@ -32,7 +32,8 @@ "scripts": { "build": "tsup --format esm --dts", "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." + "lint": "eslint --fix --cache .", + "test": "vitest run" }, "peerDependencies": { "whatwg-url": "7.1.0" diff --git a/packages/plugin-tee/src/actions/remoteAttestation.ts b/packages/plugin-tee/src/actions/remoteAttestation.ts index f1fddbdd9091..40f05b901fc2 100644 --- a/packages/plugin-tee/src/actions/remoteAttestation.ts +++ b/packages/plugin-tee/src/actions/remoteAttestation.ts @@ -1,6 +1,7 @@ import type { IAgentRuntime, Memory, State, HandlerCallback } from "@elizaos/core"; import { RemoteAttestationProvider } from "../providers/remoteAttestationProvider"; import { fetch, type BodyInit } from "undici"; +import { RemoteAttestationMessage } from "../types/tee"; function hexToUint8Array(hex: string) { hex = hex.trim(); @@ -42,23 +43,33 @@ export const remoteAttestationAction = { description: "Generate a remote attestation to prove that the agent is running in a TEE", handler: async ( runtime: IAgentRuntime, - _message: Memory, + message: Memory, _state: State, _options: { [key: string]: unknown }, callback: HandlerCallback, ) => { try { + // Attestation will be generated based on the message info + const attestationMessage: RemoteAttestationMessage = { + agentId: runtime.agentId, + timestamp: Date.now(), + message: { + userId: message.userId, + roomId: message.roomId, + content: message.content.text, + }, + }; // Get the remote attestation of the agentId - const agentId = runtime.agentId; const teeMode = runtime.getSetting("TEE_MODE"); const provider = new RemoteAttestationProvider(teeMode); - const attestation = await provider.generateAttestation(agentId, 'raw'); + + const attestation = await provider.generateAttestation(JSON.stringify(attestationMessage)); const attestationData = hexToUint8Array(attestation.quote); const response = await uploadUint8Array(attestationData); const data = await response.json(); callback({ text: `Here's my 🧾 RA Quote 🫡 - https://proof.t16z.com/reports/${data.checksum}`, +https://proof.t16z.com/reports/${data.checksum}`, action: "NONE", }); return true; @@ -76,15 +87,15 @@ export const remoteAttestationAction = { user: "{{user1}}", content: { text: "If you are running in a TEE, generate a remote attestation", + action: "REMOTE_ATTESTATION", }, }, { user: "{{user2}}", content: { text: "Of course, one second...", - action: "REMOTE_ATTESTATION", }, } ], ], -}; \ No newline at end of file +}; diff --git a/packages/plugin-tee/src/providers/deriveKeyProvider.ts b/packages/plugin-tee/src/providers/deriveKeyProvider.ts index 96430f23586e..cf6cfd459298 100644 --- a/packages/plugin-tee/src/providers/deriveKeyProvider.ts +++ b/packages/plugin-tee/src/providers/deriveKeyProvider.ts @@ -11,12 +11,7 @@ import { DeriveKeyResponse, TappdClient } from "@phala/dstack-sdk"; import { privateKeyToAccount } from "viem/accounts"; import { PrivateKeyAccount, keccak256 } from "viem"; import { RemoteAttestationProvider } from "./remoteAttestationProvider"; -import { TEEMode, RemoteAttestationQuote } from "../types/tee"; - -interface DeriveKeyAttestationData { - agentId: string; - publicKey: string; -} +import { TEEMode, RemoteAttestationQuote, DeriveKeyAttestationData } from "../types/tee"; class DeriveKeyProvider { private client: TappdClient; @@ -57,11 +52,13 @@ class DeriveKeyProvider { private async generateDeriveKeyAttestation( agentId: string, - publicKey: string + publicKey: string, + subject?: string ): Promise { const deriveKeyData: DeriveKeyAttestationData = { agentId, publicKey, + subject, }; const reportdata = JSON.stringify(deriveKeyData); elizaLogger.log( @@ -72,6 +69,12 @@ class DeriveKeyProvider { return quote; } + /** + * Derives a raw key from the given path and subject. + * @param path - The path to derive the key from. This is used to derive the key from the root of trust. + * @param subject - The subject to derive the key from. This is used for the certificate chain. + * @returns The derived key. + */ async rawDeriveKey( path: string, subject: string @@ -94,6 +97,13 @@ class DeriveKeyProvider { } } + /** + * Derives an Ed25519 keypair from the given path and subject. + * @param path - The path to derive the key from. This is used to derive the key from the root of trust. + * @param subject - The subject to derive the key from. This is used for the certificate chain. + * @param agentId - The agent ID to generate an attestation for. + * @returns An object containing the derived keypair and attestation. + */ async deriveEd25519Keypair( path: string, subject: string, @@ -130,6 +140,13 @@ class DeriveKeyProvider { } } + /** + * Derives an ECDSA keypair from the given path and subject. + * @param path - The path to derive the key from. This is used to derive the key from the root of trust. + * @param subject - The subject to derive the key from. This is used for the certificate chain. + * @param agentId - The agent ID to generate an attestation for. This is used for the certificate chain. + * @returns An object containing the derived keypair and attestation. + */ async deriveEcdsaKeypair( path: string, subject: string, @@ -184,13 +201,13 @@ const deriveKeyProvider: Provider = { const secretSalt = runtime.getSetting("WALLET_SECRET_SALT") || "secret_salt"; const solanaKeypair = await provider.deriveEd25519Keypair( - "/", secretSalt, + "solana", agentId ); const evmKeypair = await provider.deriveEcdsaKeypair( - "/", secretSalt, + "evm", agentId ); return JSON.stringify({ diff --git a/packages/plugin-tee/src/providers/remoteAttestationProvider.ts b/packages/plugin-tee/src/providers/remoteAttestationProvider.ts index 262b58c34f52..fb9c174713d9 100644 --- a/packages/plugin-tee/src/providers/remoteAttestationProvider.ts +++ b/packages/plugin-tee/src/providers/remoteAttestationProvider.ts @@ -6,7 +6,7 @@ import { elizaLogger, } from "@elizaos/core"; import { TdxQuoteResponse, TappdClient, TdxQuoteHashAlgorithms } from "@phala/dstack-sdk"; -import { RemoteAttestationQuote, TEEMode } from "../types/tee"; +import { RemoteAttestationQuote, TEEMode, RemoteAttestationMessage } from "../types/tee"; class RemoteAttestationProvider { private client: TappdClient; @@ -74,14 +74,23 @@ class RemoteAttestationProvider { // Keep the original provider for backwards compatibility const remoteAttestationProvider: Provider = { - get: async (runtime: IAgentRuntime, _message: Memory, _state?: State) => { + get: async (runtime: IAgentRuntime, message: Memory, _state?: State) => { const teeMode = runtime.getSetting("TEE_MODE"); const provider = new RemoteAttestationProvider(teeMode); const agentId = runtime.agentId; try { - elizaLogger.log("Generating attestation for: ", agentId); - const attestation = await provider.generateAttestation(agentId, 'raw'); + const attestationMessage: RemoteAttestationMessage = { + agentId: agentId, + timestamp: Date.now(), + message: { + userId: message.userId, + roomId: message.roomId, + content: message.content.text, + } + }; + elizaLogger.log("Generating attestation for: ", JSON.stringify(attestationMessage)); + const attestation = await provider.generateAttestation(JSON.stringify(attestationMessage)); return `Your Agent's remote attestation is: ${JSON.stringify(attestation)}`; } catch (error) { console.error("Error in remote attestation provider:", error); diff --git a/packages/plugin-tee/src/providers/walletProvider.ts b/packages/plugin-tee/src/providers/walletProvider.ts index a31cc65ceac7..0d08c0e07bf2 100644 --- a/packages/plugin-tee/src/providers/walletProvider.ts +++ b/packages/plugin-tee/src/providers/walletProvider.ts @@ -299,8 +299,8 @@ const walletProvider: Provider = { keypair: Keypair; attestation: RemoteAttestationQuote; } = await deriveKeyProvider.deriveEd25519Keypair( - "/", runtime.getSetting("WALLET_SECRET_SALT"), + "solana", agentId ); publicKey = derivedKeyPair.keypair.publicKey; diff --git a/packages/plugin-tee/src/tests/deriveKey.test.ts b/packages/plugin-tee/src/tests/deriveKey.test.ts new file mode 100644 index 000000000000..4611f1e307b4 --- /dev/null +++ b/packages/plugin-tee/src/tests/deriveKey.test.ts @@ -0,0 +1,133 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { DeriveKeyProvider } from '../providers/deriveKeyProvider'; +import { TappdClient } from '@phala/dstack-sdk'; +import { TEEMode } from '../types/tee'; + +// Mock dependencies +vi.mock('@phala/dstack-sdk', () => ({ + TappdClient: vi.fn().mockImplementation(() => ({ + deriveKey: vi.fn().mockResolvedValue({ + asUint8Array: () => new Uint8Array([1, 2, 3, 4, 5]) + }), + tdxQuote: vi.fn().mockResolvedValue({ + quote: 'mock-quote-data', + replayRtmrs: () => ['rtmr0', 'rtmr1', 'rtmr2', 'rtmr3'] + }), + rawDeriveKey: vi.fn() + })) +})); + +vi.mock('@solana/web3.js', () => ({ + Keypair: { + fromSeed: vi.fn().mockReturnValue({ + publicKey: { + toBase58: () => 'mock-solana-public-key' + } + }) + } +})); + +vi.mock('viem/accounts', () => ({ + privateKeyToAccount: vi.fn().mockReturnValue({ + address: 'mock-evm-address' + }) +})); + +describe('DeriveKeyProvider', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe('constructor', () => { + it('should initialize with LOCAL mode', () => { + const _provider = new DeriveKeyProvider(TEEMode.LOCAL); + expect(TappdClient).toHaveBeenCalledWith('http://localhost:8090'); + }); + + it('should initialize with DOCKER mode', () => { + const _provider = new DeriveKeyProvider(TEEMode.DOCKER); + expect(TappdClient).toHaveBeenCalledWith('http://host.docker.internal:8090'); + }); + + it('should initialize with PRODUCTION mode', () => { + const _provider = new DeriveKeyProvider(TEEMode.PRODUCTION); + expect(TappdClient).toHaveBeenCalledWith(); + }); + + it('should throw error for invalid mode', () => { + expect(() => new DeriveKeyProvider('INVALID_MODE')).toThrow('Invalid TEE_MODE'); + }); + }); + + describe('rawDeriveKey', () => { + let _provider: DeriveKeyProvider; + + beforeEach(() => { + _provider = new DeriveKeyProvider(TEEMode.LOCAL); + }); + + it('should derive raw key successfully', async () => { + const path = 'test-path'; + const subject = 'test-subject'; + const result = await _provider.rawDeriveKey(path, subject); + + const client = TappdClient.mock.results[0].value; + expect(client.deriveKey).toHaveBeenCalledWith(path, subject); + expect(result.asUint8Array()).toEqual(new Uint8Array([1, 2, 3, 4, 5])); + }); + + it('should handle errors during raw key derivation', async () => { + const mockError = new Error('Key derivation failed'); + vi.mocked(TappdClient).mockImplementationOnce(() => { + const instance = new TappdClient(); + instance.deriveKey = vi.fn().mockRejectedValueOnce(mockError); + instance.tdxQuote = vi.fn(); + instance.rawDeriveKey = vi.fn(); + return instance; + }); + + const provider = new DeriveKeyProvider(TEEMode.LOCAL); + await expect(provider.rawDeriveKey('path', 'subject')).rejects.toThrow(mockError); + }); + }); + + describe('deriveEd25519Keypair', () => { + let provider: DeriveKeyProvider; + + beforeEach(() => { + provider = new DeriveKeyProvider(TEEMode.LOCAL); + }); + + it('should derive Ed25519 keypair successfully', async () => { + const path = 'test-path'; + const subject = 'test-subject'; + const agentId = 'test-agent'; + + const result = await provider.deriveEd25519Keypair(path, subject, agentId); + + expect(result).toHaveProperty('keypair'); + expect(result).toHaveProperty('attestation'); + expect(result.keypair.publicKey.toBase58()).toBe('mock-solana-public-key'); + }); + }); + + describe('deriveEcdsaKeypair', () => { + let provider: DeriveKeyProvider; + + beforeEach(() => { + provider = new DeriveKeyProvider(TEEMode.LOCAL); + }); + + it('should derive ECDSA keypair successfully', async () => { + const path = 'test-path'; + const subject = 'test-subject'; + const agentId = 'test-agent'; + + const result = await provider.deriveEcdsaKeypair(path, subject, agentId); + + expect(result).toHaveProperty('keypair'); + expect(result).toHaveProperty('attestation'); + expect(result.keypair.address).toBe('mock-evm-address'); + }); + }); +}); \ No newline at end of file diff --git a/packages/plugin-tee/src/tests/remoteAttestation.test.ts b/packages/plugin-tee/src/tests/remoteAttestation.test.ts new file mode 100644 index 000000000000..d9c401f25684 --- /dev/null +++ b/packages/plugin-tee/src/tests/remoteAttestation.test.ts @@ -0,0 +1,81 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { RemoteAttestationProvider } from '../providers/remoteAttestationProvider'; +import { TappdClient } from '@phala/dstack-sdk'; +import { TEEMode } from '../types/tee'; + +// Mock TappdClient +vi.mock('@phala/dstack-sdk', () => ({ + TappdClient: vi.fn().mockImplementation(() => ({ + tdxQuote: vi.fn().mockResolvedValue({ + quote: 'mock-quote-data', + replayRtmrs: () => ['rtmr0', 'rtmr1', 'rtmr2', 'rtmr3'] + }), + deriveKey: vi.fn() + })) +})); + +describe('RemoteAttestationProvider', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe('constructor', () => { + it('should initialize with LOCAL mode', () => { + const _provider = new RemoteAttestationProvider(TEEMode.LOCAL); + expect(TappdClient).toHaveBeenCalledWith('http://localhost:8090'); + }); + + it('should initialize with DOCKER mode', () => { + const _provider = new RemoteAttestationProvider(TEEMode.DOCKER); + expect(TappdClient).toHaveBeenCalledWith('http://host.docker.internal:8090'); + }); + + it('should initialize with PRODUCTION mode', () => { + const _provider = new RemoteAttestationProvider(TEEMode.PRODUCTION); + expect(TappdClient).toHaveBeenCalledWith(); + }); + + it('should throw error for invalid mode', () => { + expect(() => new RemoteAttestationProvider('INVALID_MODE')).toThrow('Invalid TEE_MODE'); + }); + }); + + describe('generateAttestation', () => { + let provider: RemoteAttestationProvider; + + beforeEach(() => { + provider = new RemoteAttestationProvider(TEEMode.LOCAL); + }); + + it('should generate attestation successfully', async () => { + const reportData = 'test-report-data'; + const quote = await provider.generateAttestation(reportData); + + expect(quote).toEqual({ + quote: 'mock-quote-data', + timestamp: expect.any(Number) + }); + }); + + it('should handle errors during attestation generation', async () => { + const mockError = new Error('TDX Quote generation failed'); + const mockTdxQuote = vi.fn().mockRejectedValue(mockError); + vi.mocked(TappdClient).mockImplementationOnce(() => ({ + tdxQuote: mockTdxQuote, + deriveKey: vi.fn() + })); + + const provider = new RemoteAttestationProvider(TEEMode.LOCAL); + await expect(provider.generateAttestation('test-data')).rejects.toThrow('Failed to generate TDX Quote'); + }); + + it('should pass hash algorithm to tdxQuote when provided', async () => { + const reportData = 'test-report-data'; + const hashAlgorithm = 'raw'; + await provider.generateAttestation(reportData, hashAlgorithm); + + const client = TappdClient.mock.results[0].value; + expect(client.tdxQuote).toHaveBeenCalledWith(reportData, hashAlgorithm); + }); + }); +}); \ No newline at end of file diff --git a/packages/plugin-tee/src/tests/remoteAttestationAction.test.ts b/packages/plugin-tee/src/tests/remoteAttestationAction.test.ts new file mode 100644 index 000000000000..3cec5f7d3b97 --- /dev/null +++ b/packages/plugin-tee/src/tests/remoteAttestationAction.test.ts @@ -0,0 +1,103 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { remoteAttestationAction } from '../actions/remoteAttestation'; +import { RemoteAttestationProvider } from '../providers/remoteAttestationProvider'; + +// Mock dependencies +vi.mock('../providers/remoteAttestationProvider'); +vi.mock('undici', () => ({ + fetch: vi.fn().mockResolvedValue({ + json: () => Promise.resolve({ checksum: 'mock-checksum' }) + }) +})); + +describe('remoteAttestationAction', () => { + const mockRuntime = { + agentId: 'test-agent-id', + getSetting: vi.fn().mockReturnValue('LOCAL'), + getState: vi.fn(), + setState: vi.fn(), + message:{ userId: 'user', roomId: 'room', content: { text: 'If you are running in a TEE, generate a remote attestation' } }, + setConversation: vi.fn() + }; + + const mockCallback = vi.fn(); + + beforeEach(() => { + vi.clearAllMocks(); + vi.mocked(RemoteAttestationProvider).mockImplementation(() => ({ + generateAttestation: vi.fn().mockResolvedValue({ + quote: '0x1234', + timestamp: Date.now() + }) + })); + }); + + it('should have correct name and similes', () => { + expect(remoteAttestationAction.name).toBe('REMOTE_ATTESTATION'); + expect(remoteAttestationAction.similes).toContain('REMOTE_ATTESTATION'); + expect(remoteAttestationAction.similes).toContain('TEE_REMOTE_ATTESTATION'); + expect(remoteAttestationAction.similes).toContain('TEE_ATTESTATION'); + }); + + describe('handler', () => { + it('should generate and upload attestation successfully', async () => { + const result = await remoteAttestationAction.handler( + mockRuntime, + mockRuntime.message, + {}, + {}, + mockCallback + ); + + expect(result).toBe(true); + expect(mockCallback).toHaveBeenCalledWith({ + text: expect.stringContaining('https://proof.t16z.com/reports/mock-checksum'), + action: 'NONE' + }); + }); + + it('should handle errors during attestation generation', async () => { + const mockError = new Error('Attestation generation failed'); + vi.mocked(RemoteAttestationProvider).mockImplementation(() => ({ + generateAttestation: vi.fn().mockRejectedValueOnce(mockError), + client: { + tdxQuote: vi.fn(), + deriveKey: vi.fn() + } + })); + + const result = await remoteAttestationAction.handler( + mockRuntime, + {}, + {}, + {}, + mockCallback + ); + + expect(result).toBe(false); + }); + + }); + + describe('validate', () => { + it('should always return true', async () => { + const result = await remoteAttestationAction.validate(mockRuntime); + expect(result).toBe(true); + }); + }); + + describe('examples', () => { + it('should have valid example conversations', () => { + expect(remoteAttestationAction.examples).toBeInstanceOf(Array); + expect(remoteAttestationAction.examples[0]).toBeInstanceOf(Array); + + const [userMessage, agentMessage] = remoteAttestationAction.examples[0]; + expect(userMessage.user).toBe('{{user1}}'); + expect(userMessage.content.text).toBe('If you are running in a TEE, generate a remote attestation'); + + expect(agentMessage.user).toBe('{{user2}}'); + expect(agentMessage.content.text).toBe('Of course, one second...'); + expect(agentMessage.content.action).toBe('REMOTE_ATTESTATION'); + }); + }); +}); \ No newline at end of file diff --git a/packages/plugin-tee/src/types/tee.ts b/packages/plugin-tee/src/types/tee.ts index de974c39243f..9e3ae1fed5c9 100644 --- a/packages/plugin-tee/src/types/tee.ts +++ b/packages/plugin-tee/src/types/tee.ts @@ -9,3 +9,19 @@ export interface RemoteAttestationQuote { quote: string; timestamp: number; } + +export interface DeriveKeyAttestationData { + agentId: string; + publicKey: string; + subject?: string; +} + +export interface RemoteAttestationMessage { + agentId: string; + timestamp: number; + message: { + userId: string; + roomId: string; + content: string; + } +} \ No newline at end of file diff --git a/packages/plugin-thirdweb/package.json b/packages/plugin-thirdweb/package.json index 5192c448737e..1165fd389a72 100644 --- a/packages/plugin-thirdweb/package.json +++ b/packages/plugin-thirdweb/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-thirdweb", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "main": "dist/index.js", "type": "module", "types": "dist/index.d.ts", diff --git a/packages/plugin-ton/package.json b/packages/plugin-ton/package.json index eeb664490bb4..b6019d53aa59 100644 --- a/packages/plugin-ton/package.json +++ b/packages/plugin-ton/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-ton", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-trustdb/package.json b/packages/plugin-trustdb/package.json index 99b5b34a1aa6..fbc877abde1d 100644 --- a/packages/plugin-trustdb/package.json +++ b/packages/plugin-trustdb/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-trustdb", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-tts/package.json b/packages/plugin-tts/package.json index 0924a1ef2ea2..d8b03daaf6dc 100644 --- a/packages/plugin-tts/package.json +++ b/packages/plugin-tts/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-tts", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-twitter/package.json b/packages/plugin-twitter/package.json index 73eea3da1b96..db75ec0b694d 100644 --- a/packages/plugin-twitter/package.json +++ b/packages/plugin-twitter/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-twitter", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-twitter/src/templates.ts b/packages/plugin-twitter/src/templates.ts index 4578396bce01..09b0267a8946 100644 --- a/packages/plugin-twitter/src/templates.ts +++ b/packages/plugin-twitter/src/templates.ts @@ -19,4 +19,6 @@ Generate a tweet that: 4. Must be UNDER 180 characters (this is a strict requirement) 5. Speaks from the perspective of {{agentName}} -Generate only the tweet text, no other commentary.`; +Generate only the tweet text, no other commentary. + +Return the tweet in JSON format like: {"text": "your tweet here"}`; diff --git a/packages/plugin-video-generation/package.json b/packages/plugin-video-generation/package.json index 9a83d0aa68ab..97423e37d0c3 100644 --- a/packages/plugin-video-generation/package.json +++ b/packages/plugin-video-generation/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-video-generation", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/plugin-web-search/README.MD b/packages/plugin-web-search/README.MD index 4fbd27dad035..7445498813fa 100644 --- a/packages/plugin-web-search/README.MD +++ b/packages/plugin-web-search/README.MD @@ -28,7 +28,7 @@ TAVILY_API_KEY=your_api_key # Required: API key for search service ## Usage -Import and register the plugin in your Eliza configuration: +Import and register the plugin in your Eliza configuration. ```typescript import { webSearchPlugin } from "@elizaos/plugin-web-search"; @@ -39,6 +39,28 @@ export default { }; ``` +**Custom Usage** +If you want custom usage, for example, twitter-client to search the web before posting a tweet, you can also import the webSearchService and use it directly. Here's how you can do it: + +```typescript +// packages/client-twitter/src/post.ts +const webSearchService = new WebSearchService(); +await webSearchService.initialize(runtime); +const latestNews = await webSearchService.search( + "latest news on AI Agents", + // searchOptions +); + +const state = await this.runtime.composeState( + { } // memory, + { // additional keys + latestNews: latestNews, + } +); + +// Then modify the tweet template to include the {{latestNews}} and however you need +``` + ## Features ### Web Search diff --git a/packages/plugin-web-search/package.json b/packages/plugin-web-search/package.json index ce97be8a5fd4..d17e2e62e7a2 100644 --- a/packages/plugin-web-search/package.json +++ b/packages/plugin-web-search/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-web-search", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", @@ -20,7 +20,9 @@ ], "dependencies": { "@elizaos/core": "workspace:*", - "tsup": "8.3.5" + "@tavily/core": "^0.0.2", + "tsup": "8.3.5", + "js-tiktoken": "1.0.15" }, "scripts": { "build": "tsup --format esm --dts", diff --git a/packages/plugin-web-search/src/actions/webSearch.ts b/packages/plugin-web-search/src/actions/webSearch.ts new file mode 100644 index 000000000000..1cee2215090b --- /dev/null +++ b/packages/plugin-web-search/src/actions/webSearch.ts @@ -0,0 +1,201 @@ +import { + Action, + HandlerCallback, + IAgentRuntime, + Memory, + State, + elizaLogger +} from "@elizaos/core"; +import { encodingForModel, TiktokenModel } from "js-tiktoken"; +import { WebSearchService } from "../services/webSearchService"; +import { SearchResult } from "../types"; + +const DEFAULT_MAX_WEB_SEARCH_TOKENS = 4000; +const DEFAULT_MODEL_ENCODING = "gpt-3.5-turbo"; + +function getTotalTokensFromString( + str: string, + encodingName: TiktokenModel = DEFAULT_MODEL_ENCODING +) { + const encoding = encodingForModel(encodingName); + return encoding.encode(str).length; +} + +function MaxTokens( + data: string, + maxTokens: number = DEFAULT_MAX_WEB_SEARCH_TOKENS +): string { + if (getTotalTokensFromString(data) >= maxTokens) { + return data.slice(0, maxTokens); + } + return data; +} + +export const webSearch: Action = { + name: "WEB_SEARCH", + similes: [ + "SEARCH_WEB", + "INTERNET_SEARCH", + "LOOKUP", + "QUERY_WEB", + "FIND_ONLINE", + "SEARCH_ENGINE", + "WEB_LOOKUP", + "ONLINE_SEARCH", + "FIND_INFORMATION", + ], + suppressInitialMessage: true, + description: + "Perform a web search to find information related to the message.", + validate: async (runtime: IAgentRuntime, message: Memory) => { + const tavilyApiKeyOk = !!runtime.getSetting("TAVILY_API_KEY"); + + return tavilyApiKeyOk; + }, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + elizaLogger.log("Composing state for message:", message); + state = (await runtime.composeState(message)) as State; + const userId = runtime.agentId; + elizaLogger.log("User ID:", userId); + + const webSearchPrompt = message.content.text; + elizaLogger.log("web search prompt received:", webSearchPrompt); + + const webSearchService = new WebSearchService(); + await webSearchService.initialize(runtime); + const searchResponse = await webSearchService.search( + webSearchPrompt, + ); + + if (searchResponse && searchResponse.results.length) { + const responseList = searchResponse.answer + ? `${searchResponse.answer}${ + Array.isArray(searchResponse.results) && + searchResponse.results.length > 0 + ? `\n\nFor more details, you can check out these resources:\n${searchResponse.results + .map( + (result: SearchResult, index: number) => + `${index + 1}. [${result.title}](${result.url})` + ) + .join("\n")}` + : "" + }` + : ""; + + callback({ + text: MaxTokens(responseList, DEFAULT_MAX_WEB_SEARCH_TOKENS), + }); + } else { + elizaLogger.error("search failed or returned no data."); + } + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Find the latest news about SpaceX launches.", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is the latest news about SpaceX launches:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you find details about the iPhone 16 release?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the details I found about the iPhone 16 release:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "What is the schedule for the next FIFA World Cup?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is the schedule for the next FIFA World Cup:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Check the latest stock price of Tesla." }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is the latest stock price of Tesla I found:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "What are the current trending movies in the US?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the current trending movies in the US:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "What is the latest score in the NBA finals?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is the latest score from the NBA finals:", + action: "WEB_SEARCH", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "When is the next Apple keynote event?" }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is the information about the next Apple keynote event:", + action: "WEB_SEARCH", + }, + }, + ], + ], +} as Action; \ No newline at end of file diff --git a/packages/plugin-web-search/src/index.ts b/packages/plugin-web-search/src/index.ts index 528e26090457..7d412611ec6a 100644 --- a/packages/plugin-web-search/src/index.ts +++ b/packages/plugin-web-search/src/index.ts @@ -1,211 +1,15 @@ -import { elizaLogger } from "@elizaos/core"; -import { - Action, - HandlerCallback, - IAgentRuntime, - Memory, - Plugin, - State, -} from "@elizaos/core"; -import { generateWebSearch } from "@elizaos/core"; -import { SearchResult } from "@elizaos/core"; -import { encodingForModel, TiktokenModel } from "js-tiktoken"; - -const DEFAULT_MAX_WEB_SEARCH_TOKENS = 4000; -const DEFAULT_MODEL_ENCODING = "gpt-3.5-turbo"; - -function getTotalTokensFromString( - str: string, - encodingName: TiktokenModel = DEFAULT_MODEL_ENCODING -) { - const encoding = encodingForModel(encodingName); - return encoding.encode(str).length; -} - -function MaxTokens( - data: string, - maxTokens: number = DEFAULT_MAX_WEB_SEARCH_TOKENS -): string { - if (getTotalTokensFromString(data) >= maxTokens) { - return data.slice(0, maxTokens); - } - return data; -} - -const webSearch: Action = { - name: "WEB_SEARCH", - similes: [ - "SEARCH_WEB", - "INTERNET_SEARCH", - "LOOKUP", - "QUERY_WEB", - "FIND_ONLINE", - "SEARCH_ENGINE", - "WEB_LOOKUP", - "ONLINE_SEARCH", - "FIND_INFORMATION", - ], - description: - "Perform a web search to find information related to the message.", - validate: async (runtime: IAgentRuntime, message: Memory) => { - const tavilyApiKeyOk = !!runtime.getSetting("TAVILY_API_KEY"); - - return tavilyApiKeyOk; - }, - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - options: any, - callback: HandlerCallback - ) => { - elizaLogger.log("Composing state for message:", message); - state = (await runtime.composeState(message)) as State; - const userId = runtime.agentId; - elizaLogger.log("User ID:", userId); - - const webSearchPrompt = message.content.text; - elizaLogger.log("web search prompt received:", webSearchPrompt); - - elizaLogger.log("Generating image with prompt:", webSearchPrompt); - const searchResponse = await generateWebSearch( - webSearchPrompt, - runtime - ); - - if (searchResponse && searchResponse.results.length) { - const responseList = searchResponse.answer - ? `${searchResponse.answer}${ - Array.isArray(searchResponse.results) && - searchResponse.results.length > 0 - ? `\n\nFor more details, you can check out these resources:\n${searchResponse.results - .map( - (result: SearchResult, index: number) => - `${index + 1}. [${result.title}](${result.url})` - ) - .join("\n")}` - : "" - }` - : ""; - - callback({ - text: MaxTokens(responseList, DEFAULT_MAX_WEB_SEARCH_TOKENS), - }); - } else { - elizaLogger.error("search failed or returned no data."); - } - }, - examples: [ - [ - { - user: "{{user1}}", - content: { - text: "Find the latest news about SpaceX launches.", - }, - }, - { - user: "{{agentName}}", - content: { - text: "Here is the latest news about SpaceX launches:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Can you find details about the iPhone 16 release?", - }, - }, - { - user: "{{agentName}}", - content: { - text: "Here are the details I found about the iPhone 16 release:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "What is the schedule for the next FIFA World Cup?", - }, - }, - { - user: "{{agentName}}", - content: { - text: "Here is the schedule for the next FIFA World Cup:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { text: "Check the latest stock price of Tesla." }, - }, - { - user: "{{agentName}}", - content: { - text: "Here is the latest stock price of Tesla I found:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "What are the current trending movies in the US?", - }, - }, - { - user: "{{agentName}}", - content: { - text: "Here are the current trending movies in the US:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "What is the latest score in the NBA finals?", - }, - }, - { - user: "{{agentName}}", - content: { - text: "Here is the latest score from the NBA finals:", - action: "WEB_SEARCH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { text: "When is the next Apple keynote event?" }, - }, - { - user: "{{agentName}}", - content: { - text: "Here is the information about the next Apple keynote event:", - action: "WEB_SEARCH", - }, - }, - ], - ], -} as Action; +import { webSearch } from "./actions/webSearch"; +import { Plugin } from "@elizaos/core"; +import { WebSearchService } from "./services/webSearchService"; export const webSearchPlugin: Plugin = { name: "webSearch", - description: "Search web", + description: "Search the web and get news", actions: [webSearch], evaluators: [], providers: [], + services: [new WebSearchService()], + clients: [], }; export default webSearchPlugin; diff --git a/packages/plugin-web-search/src/services/webSearchService.ts b/packages/plugin-web-search/src/services/webSearchService.ts new file mode 100644 index 000000000000..bf55329ba88b --- /dev/null +++ b/packages/plugin-web-search/src/services/webSearchService.ts @@ -0,0 +1,50 @@ +import { + Service, + IAgentRuntime, + ServiceType, +} from "@elizaos/core"; +import { tavily } from "@tavily/core"; +import { IWebSearchService, SearchOptions, SearchResponse } from "../types"; + +export type TavilyClient = ReturnType; // declaring manually because orginal package does not export its types + +export class WebSearchService extends Service implements IWebSearchService { + public tavilyClient: TavilyClient + + async initialize(_runtime: IAgentRuntime): Promise { + const apiKey = _runtime.getSetting("TAVILY_API_KEY") as string; + if (!apiKey) { + throw new Error("TAVILY_API_KEY is not set"); + } + this.tavilyClient = tavily({ apiKey }); + } + + getInstance(): IWebSearchService { + return WebSearchService.getInstance(); + } + + static get serviceType(): ServiceType { + return ServiceType.WEB_SEARCH; + } + + async search( + query: string, + options?: SearchOptions, + ): Promise { + try { + const response = await this.tavilyClient.search(query, { + includeAnswer: options?.includeAnswer || true, + maxResults: options?.limit || 3, + topic: options?.type || "general", + searchDepth: options?.searchDepth || "basic", + includeImages: options?.includeImages || false, + days: options?.days || 3, + }); + + return response; + } catch (error) { + console.error("Web search error:", error); + throw error; + } + } +} diff --git a/packages/plugin-web-search/src/types.ts b/packages/plugin-web-search/src/types.ts new file mode 100644 index 000000000000..e782b9979a34 --- /dev/null +++ b/packages/plugin-web-search/src/types.ts @@ -0,0 +1,40 @@ +import { Service } from "@elizaos/core"; + +export interface IWebSearchService extends Service { + search( + query: string, + options?: SearchOptions, + ): Promise; +} + +export type SearchResult = { + title: string; + url: string; + content: string; + rawContent?: string; + score: number; + publishedDate?: string; +}; + +export type SearchImage = { + url: string; + description?: string; +}; + + +export type SearchResponse = { + answer?: string; + query: string; + responseTime: number; + images: SearchImage[]; + results: SearchResult[]; +}; + +export interface SearchOptions { + limit?: number; + type?: "news" | "general"; + includeAnswer?: boolean; + searchDepth?: "basic" | "advanced"; + includeImages?: boolean; + days?: number; // 1 means current day, 2 means last 2 days +} diff --git a/packages/plugin-whatsapp/__tests__/client.test.ts b/packages/plugin-whatsapp/__tests__/client.test.ts new file mode 100644 index 000000000000..d930c68a0d32 --- /dev/null +++ b/packages/plugin-whatsapp/__tests__/client.test.ts @@ -0,0 +1,120 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import axios from 'axios'; +import { WhatsAppClient } from '../src/client'; +import { WhatsAppConfig, WhatsAppMessage } from '../src/types'; + +vi.mock('axios', () => { + const mockPost = vi.fn(); + return { + default: { + create: () => ({ + post: mockPost + }) + } + }; +}); + +describe('WhatsAppClient', () => { + let client; + let mockPost; + + const mockConfig = { + accessToken: 'test-token', + phoneNumberId: 'test-phone-id', + webhookVerifyToken: 'test-webhook-token', + businessAccountId: 'test-business-id' + }; + + beforeEach(() => { + vi.clearAllMocks(); + client = new WhatsAppClient(mockConfig); + mockPost = (axios.create()).post; + }); + + describe('sendMessage', () => { + it('should send a text message correctly', async () => { + const mockMessage = { + type: 'text', + to: '1234567890', + content: 'Hello, World!' + }; + + const expectedPayload = { + messaging_product: 'whatsapp', + recipient_type: 'individual', + to: mockMessage.to, + type: mockMessage.type, + text: { body: mockMessage.content } + }; + + const mockResponse = { data: { message_id: 'test-id' } }; + mockPost.mockResolvedValue(mockResponse); + + const response = await client.sendMessage(mockMessage); + + expect(mockPost).toHaveBeenCalledWith(`/${mockConfig.phoneNumberId}/messages`, expectedPayload); + expect(response).toEqual(mockResponse); + }); + + it('should send a template message correctly', async () => { + const mockMessage = { + type: 'template', + to: '1234567890', + content: { + name: 'test_template', + language: { + code: 'en' + }, + components: [{ + type: 'body', + parameters: [{ + type: 'text', + text: 'Test Parameter' + }] + }] + } + }; + + const expectedPayload = { + messaging_product: 'whatsapp', + recipient_type: 'individual', + to: mockMessage.to, + type: mockMessage.type, + template: mockMessage.content + }; + + const mockResponse = { data: { message_id: 'test-id' } }; + mockPost.mockResolvedValue(mockResponse); + + const response = await client.sendMessage(mockMessage); + + expect(mockPost).toHaveBeenCalledWith(`/${mockConfig.phoneNumberId}/messages`, expectedPayload); + expect(response).toEqual(mockResponse); + }); + + it('should handle API errors correctly', async () => { + const mockMessage = { + type: 'text', + to: '1234567890', + content: 'Hello, World!' + }; + + const mockError = new Error('API Error'); + mockPost.mockRejectedValue(mockError); + + await expect(client.sendMessage(mockMessage)).rejects.toThrow('API Error'); + }); + }); + + describe('verifyWebhook', () => { + it('should verify webhook token correctly', async () => { + const result = await client.verifyWebhook(mockConfig.webhookVerifyToken); + expect(result).toBe(true); + }); + + it('should reject invalid webhook token', async () => { + const result = await client.verifyWebhook('invalid-token'); + expect(result).toBe(false); + }); + }); +}); diff --git a/packages/plugin-whatsapp/__tests__/handlers/message.handler.test.ts b/packages/plugin-whatsapp/__tests__/handlers/message.handler.test.ts new file mode 100644 index 000000000000..1a8f61851b07 --- /dev/null +++ b/packages/plugin-whatsapp/__tests__/handlers/message.handler.test.ts @@ -0,0 +1,67 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { MessageHandler } from '../../src/handlers/message.handler'; +import { WhatsAppClient } from '../../src/client'; +import { WhatsAppMessage } from '../../src/types'; + +describe('MessageHandler', () => { + let messageHandler; + let mockClient; + + beforeEach(() => { + mockClient = { + sendMessage: vi.fn(), + }; + + messageHandler = new MessageHandler(mockClient); + }); + + it('should successfully send a message', async () => { + const mockMessage = { + type: 'text', + to: '1234567890', + content: 'Test message' + }; + + const mockResponse = { + messaging_product: 'whatsapp', + contacts: [{ input: '1234567890', wa_id: 'WHATSAPP_ID' }], + messages: [{ id: 'MESSAGE_ID' }] + }; + + (mockClient.sendMessage).mockResolvedValue({ data: mockResponse }); + + const result = await messageHandler.send(mockMessage); + + expect(mockClient.sendMessage).toHaveBeenCalledWith(mockMessage); + expect(result).toEqual(mockResponse); + }); + + it('should handle client errors with error message', async () => { + const mockMessage = { + type: 'text', + to: '1234567890', + content: 'Test message' + }; + + const errorMessage = 'API Error'; + (mockClient.sendMessage).mockRejectedValue(new Error(errorMessage)); + + await expect(messageHandler.send(mockMessage)) + .rejects + .toThrow(`Failed to send WhatsApp message: ${errorMessage}`); + }); + + it('should handle unknown errors', async () => { + const mockMessage = { + type: 'text', + to: '1234567890', + content: 'Test message' + }; + + (mockClient.sendMessage).mockRejectedValue('Unknown error'); + + await expect(messageHandler.send(mockMessage)) + .rejects + .toThrow('Failed to send WhatsApp message'); + }); +}); diff --git a/packages/plugin-whatsapp/__tests__/handlers/webhook.handler.test.ts b/packages/plugin-whatsapp/__tests__/handlers/webhook.handler.test.ts new file mode 100644 index 000000000000..2e2275803916 --- /dev/null +++ b/packages/plugin-whatsapp/__tests__/handlers/webhook.handler.test.ts @@ -0,0 +1,134 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { WebhookHandler } from '../../src/handlers/webhook.handler'; +import { WhatsAppClient } from '../../src/client'; +import { WhatsAppWebhookEvent } from '../../src/types'; + +describe('WebhookHandler', () => { + let webhookHandler; + let mockClient; + let consoleSpy; + + beforeEach(() => { + mockClient = {}; + webhookHandler = new WebhookHandler(mockClient); + consoleSpy = vi.spyOn(console, 'log'); + }); + + afterEach(() => { + consoleSpy.mockRestore(); + }); + + it('should handle message events correctly', async () => { + const mockMessage = { + from: '1234567890', + id: 'msg_id', + timestamp: '1234567890', + text: { + body: 'Test message' + } + }; + + const mockEvent = { + object: 'whatsapp_business_account', + entry: [{ + id: 'BUSINESS_ID', + changes: [{ + value: { + messaging_product: 'whatsapp', + metadata: { + display_phone_number: '1234567890', + phone_number_id: 'PHONE_ID' + }, + messages: [mockMessage] + } + }] + }] + }; + + await webhookHandler.handle(mockEvent); + + expect(consoleSpy).toHaveBeenCalledWith('Received message:', mockMessage); + }); + + it('should handle status updates correctly', async () => { + const mockStatus = { + id: 'status_id', + status: 'delivered', + timestamp: '1234567890', + recipient_id: '1234567890' + }; + + const mockEvent = { + object: 'whatsapp_business_account', + entry: [{ + id: 'BUSINESS_ID', + changes: [{ + value: { + messaging_product: 'whatsapp', + metadata: { + display_phone_number: '1234567890', + phone_number_id: 'PHONE_ID' + }, + statuses: [mockStatus] + }, + field: '' + }] + }] + }; + + await webhookHandler.handle(mockEvent); + + expect(consoleSpy).toHaveBeenCalledWith('Received status update:', mockStatus); + }); + + it('should handle events with both messages and statuses', async () => { + const mockMessage = { + from: '1234567890', + id: 'msg_id', + timestamp: '1234567890', + text: { + body: 'Test message' + } + }; + + const mockStatus = { + id: 'status_id', + status: 'delivered', + timestamp: '1234567890', + recipient_id: '1234567890' + }; + + const mockEvent = { + object: 'whatsapp_business_account', + entry: [{ + id: 'BUSINESS_ID', + changes: [{ + value: { + messaging_product: 'whatsapp', + metadata: { + display_phone_number: '1234567890', + phone_number_id: 'PHONE_ID' + }, + messages: [mockMessage], + statuses: [mockStatus] + } + }] + }] + }; + + await webhookHandler.handle(mockEvent); + + expect(consoleSpy).toHaveBeenCalledWith('Received message:', mockMessage); + expect(consoleSpy).toHaveBeenCalledWith('Received status update:', mockStatus); + }); + + it('should handle errors correctly', async () => { + const mockEvent = {}; + + // The handler should not throw an error for an empty event + await expect(webhookHandler.handle(mockEvent)).resolves.not.toThrow(); + + // Verify that no messages or statuses were processed + expect(consoleSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/plugin-whatsapp/package.json b/packages/plugin-whatsapp/package.json index cf237cb4911b..29eceae404b3 100644 --- a/packages/plugin-whatsapp/package.json +++ b/packages/plugin-whatsapp/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-whatsapp", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "description": "WhatsApp Cloud API plugin", "type": "module", "main": "dist/index.js", @@ -22,7 +22,8 @@ "scripts": { "build": "tsup --format esm --dts", "dev": "tsup --format esm --dts --watch", - "test": "jest", + "test": "vitest run", + "coverage": "vitest run --coverage", "lint": "eslint --fix --cache ." }, "dependencies": { @@ -30,12 +31,10 @@ "axios": "1.7.8" }, "devDependencies": { - "@types/jest": "29.5.14", "@types/node": "20.17.9", "@typescript-eslint/eslint-plugin": "8.16.0", "@typescript-eslint/parser": "8.16.0", - "jest": "29.7.0", - "ts-jest": "29.2.5", - "typescript": "5.6.3" + "typescript": "5.6.3", + "vitest": "^1.2.1" } } diff --git a/packages/plugin-zksync-era/package.json b/packages/plugin-zksync-era/package.json index 9edbc19c6ab2..2a6bb3b1bd34 100644 --- a/packages/plugin-zksync-era/package.json +++ b/packages/plugin-zksync-era/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-zksync-era", - "version": "0.1.8+build.1", + "version": "0.1.9-alpha.1", "type": "module", "main": "dist/index.js", "module": "dist/index.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index ea169999520d..000000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,52017 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - onnxruntime-node: 1.20.1 - viem: 2.21.58 - -importers: - - .: - dependencies: - '@0glabs/0g-ts-sdk': - specifier: 0.2.1 - version: 0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5) - '@coinbase/coinbase-sdk': - specifier: 0.10.0 - version: 0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) - '@deepgram/sdk': - specifier: ^3.9.0 - version: 3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@vitest/eslint-plugin': - specifier: 1.0.1 - version: 1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - amqplib: - specifier: 0.10.5 - version: 0.10.5 - csv-parse: - specifier: 5.6.0 - version: 5.6.0 - ollama-ai-provider: - specifier: 0.16.1 - version: 0.16.1(zod@3.24.1) - optional: - specifier: 0.1.4 - version: 0.1.4 - pnpm: - specifier: 9.14.4 - version: 9.14.4 - sharp: - specifier: 0.33.5 - version: 0.33.5 - tslog: - specifier: 4.9.3 - version: 4.9.3 - devDependencies: - '@commitlint/cli': - specifier: 18.6.1 - version: 18.6.1(@types/node@20.17.9)(typescript@5.6.3) - '@commitlint/config-conventional': - specifier: 18.6.3 - version: 18.6.3 - '@types/jest': - specifier: ^29.5.11 - version: 29.5.14 - '@typescript-eslint/eslint-plugin': - specifier: 8.16.0 - version: 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: 8.16.0 - version: 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - concurrently: - specifier: 9.1.0 - version: 9.1.0 - cross-env: - specifier: 7.0.3 - version: 7.0.3 - eslint: - specifier: 9.16.0 - version: 9.16.0(jiti@2.4.2) - eslint-config-prettier: - specifier: 9.1.0 - version: 9.1.0(eslint@9.16.0(jiti@2.4.2)) - husky: - specifier: 9.1.7 - version: 9.1.7 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - lerna: - specifier: 8.1.5 - version: 8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(babel-plugin-macros@3.1.0)(encoding@0.1.13) - only-allow: - specifier: 1.2.1 - version: 1.2.1 - prettier: - specifier: 3.4.1 - version: 3.4.1 - ts-jest: - specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(typescript@5.6.3) - turbo: - specifier: 2.3.3 - version: 2.3.3 - typedoc: - specifier: 0.26.11 - version: 0.26.11(typescript@5.6.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) - vite: - specifier: 5.4.11 - version: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vitest: - specifier: 2.1.5 - version: 2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - agent: - dependencies: - '@elizaos/adapter-pglite': - specifier: workspace:* - version: link:../packages/adapter-pglite - '@elizaos/adapter-postgres': - specifier: workspace:* - version: link:../packages/adapter-postgres - '@elizaos/adapter-redis': - specifier: workspace:* - version: link:../packages/adapter-redis - '@elizaos/adapter-sqlite': - specifier: workspace:* - version: link:../packages/adapter-sqlite - '@elizaos/adapter-supabase': - specifier: workspace:* - version: link:../packages/adapter-supabase - '@elizaos/client-auto': - specifier: workspace:* - version: link:../packages/client-auto - '@elizaos/client-direct': - specifier: workspace:* - version: link:../packages/client-direct - '@elizaos/client-discord': - specifier: workspace:* - version: link:../packages/client-discord - '@elizaos/client-farcaster': - specifier: workspace:* - version: link:../packages/client-farcaster - '@elizaos/client-lens': - specifier: workspace:* - version: link:../packages/client-lens - '@elizaos/client-slack': - specifier: workspace:* - version: link:../packages/client-slack - '@elizaos/client-telegram': - specifier: workspace:* - version: link:../packages/client-telegram - '@elizaos/client-twitter': - specifier: workspace:* - version: link:../packages/client-twitter - '@elizaos/core': - specifier: workspace:* - version: link:../packages/core - '@elizaos/plugin-0g': - specifier: workspace:* - version: link:../packages/plugin-0g - '@elizaos/plugin-3d-generation': - specifier: workspace:* - version: link:../packages/plugin-3d-generation - '@elizaos/plugin-abstract': - specifier: workspace:* - version: link:../packages/plugin-abstract - '@elizaos/plugin-akash': - specifier: workspace:* - version: link:../packages/plugin-akash - '@elizaos/plugin-allora': - specifier: workspace:* - version: link:../packages/plugin-allora - '@elizaos/plugin-aptos': - specifier: workspace:* - version: link:../packages/plugin-aptos - '@elizaos/plugin-arthera': - specifier: workspace:* - version: link:../packages/plugin-arthera - '@elizaos/plugin-autonome': - specifier: workspace:* - version: link:../packages/plugin-autonome - '@elizaos/plugin-avail': - specifier: workspace:* - version: link:../packages/plugin-avail - '@elizaos/plugin-avalanche': - specifier: workspace:* - version: link:../packages/plugin-avalanche - '@elizaos/plugin-binance': - specifier: workspace:* - version: link:../packages/plugin-binance - '@elizaos/plugin-bootstrap': - specifier: workspace:* - version: link:../packages/plugin-bootstrap - '@elizaos/plugin-coinbase': - specifier: workspace:* - version: link:../packages/plugin-coinbase - '@elizaos/plugin-coingecko': - specifier: workspace:* - version: link:../packages/plugin-coingecko - '@elizaos/plugin-coinmarketcap': - specifier: workspace:* - version: link:../packages/plugin-coinmarketcap - '@elizaos/plugin-conflux': - specifier: workspace:* - version: link:../packages/plugin-conflux - '@elizaos/plugin-cosmos': - specifier: workspace:* - version: link:../packages/plugin-cosmos - '@elizaos/plugin-cronoszkevm': - specifier: workspace:* - version: link:../packages/plugin-cronoszkevm - '@elizaos/plugin-depin': - specifier: workspace:* - version: link:../packages/plugin-depin - '@elizaos/plugin-echochambers': - specifier: workspace:* - version: link:../packages/plugin-echochambers - '@elizaos/plugin-evm': - specifier: workspace:* - version: link:../packages/plugin-evm - '@elizaos/plugin-flow': - specifier: workspace:* - version: link:../packages/plugin-flow - '@elizaos/plugin-fuel': - specifier: workspace:* - version: link:../packages/plugin-fuel - '@elizaos/plugin-genlayer': - specifier: workspace:* - version: link:../packages/plugin-genlayer - '@elizaos/plugin-giphy': - specifier: workspace:* - version: link:../packages/plugin-giphy - '@elizaos/plugin-gitbook': - specifier: workspace:* - version: link:../packages/plugin-gitbook - '@elizaos/plugin-goat': - specifier: workspace:* - version: link:../packages/plugin-goat - '@elizaos/plugin-hyperliquid': - specifier: workspace:* - version: link:../packages/plugin-hyperliquid - '@elizaos/plugin-icp': - specifier: workspace:* - version: link:../packages/plugin-icp - '@elizaos/plugin-image-generation': - specifier: workspace:* - version: link:../packages/plugin-image-generation - '@elizaos/plugin-intiface': - specifier: workspace:* - version: link:../packages/plugin-intiface - '@elizaos/plugin-lensNetwork': - specifier: workspace:* - version: link:../packages/plugin-lensNetwork - '@elizaos/plugin-letzai': - specifier: workspace:* - version: link:../packages/plugin-letzai - '@elizaos/plugin-massa': - specifier: workspace:* - version: link:../packages/plugin-massa - '@elizaos/plugin-movement': - specifier: workspace:* - version: link:../packages/plugin-movement - '@elizaos/plugin-multiversx': - specifier: workspace:* - version: link:../packages/plugin-multiversx - '@elizaos/plugin-near': - specifier: workspace:* - version: link:../packages/plugin-near - '@elizaos/plugin-nft-generation': - specifier: workspace:* - version: link:../packages/plugin-nft-generation - '@elizaos/plugin-node': - specifier: workspace:* - version: link:../packages/plugin-node - '@elizaos/plugin-obsidian': - specifier: workspace:* - version: link:../packages/plugin-obsidian - '@elizaos/plugin-opacity': - specifier: workspace:* - version: link:../packages/plugin-opacity - '@elizaos/plugin-open-weather': - specifier: workspace:* - version: link:../packages/plugin-open-weather - '@elizaos/plugin-primus': - specifier: workspace:* - version: link:../packages/plugin-primus - '@elizaos/plugin-pyth-data': - specifier: workspace:* - version: link:../packages/plugin-pyth-data - '@elizaos/plugin-quai': - specifier: workspace:* - version: link:../packages/plugin-quai - '@elizaos/plugin-sgx': - specifier: workspace:* - version: link:../packages/plugin-sgx - '@elizaos/plugin-solana': - specifier: workspace:* - version: link:../packages/plugin-solana - '@elizaos/plugin-solana-agentkit': - specifier: workspace:* - version: link:../packages/plugin-solana-agentkit - '@elizaos/plugin-stargaze': - specifier: workspace:* - version: link:../packages/plugin-stargaze - '@elizaos/plugin-starknet': - specifier: workspace:* - version: link:../packages/plugin-starknet - '@elizaos/plugin-story': - specifier: workspace:* - version: link:../packages/plugin-story - '@elizaos/plugin-sui': - specifier: workspace:* - version: link:../packages/plugin-sui - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../packages/plugin-tee - '@elizaos/plugin-tee-log': - specifier: workspace:* - version: link:../packages/plugin-tee-log - '@elizaos/plugin-tee-marlin': - specifier: workspace:* - version: link:../packages/plugin-tee-marlin - '@elizaos/plugin-thirdweb': - specifier: workspace:* - version: link:../packages/plugin-thirdweb - '@elizaos/plugin-ton': - specifier: workspace:* - version: link:../packages/plugin-ton - '@elizaos/plugin-twitter': - specifier: workspace:* - version: link:../packages/plugin-twitter - '@elizaos/plugin-video-generation': - specifier: workspace:* - version: link:../packages/plugin-video-generation - '@elizaos/plugin-web-search': - specifier: workspace:* - version: link:../packages/plugin-web-search - '@elizaos/plugin-zksync-era': - specifier: workspace:* - version: link:../packages/plugin-zksync-era - readline: - specifier: 1.3.0 - version: 1.3.0 - ws: - specifier: 8.18.0 - version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - yargs: - specifier: 17.7.2 - version: 17.7.2 - devDependencies: - '@types/jest': - specifier: ^29.5.14 - version: 29.5.14 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - ts-jest: - specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)))(typescript@5.7.3) - ts-node: - specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - client: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../packages/core - '@radix-ui/react-avatar': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-collapsible': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-dialog': - specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-label': - specifier: ^2.1.1 - version: 2.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-separator': - specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': - specifier: ^1.1.1 - version: 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-tabs': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-toast': - specifier: ^1.2.4 - version: 1.2.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-tooltip': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@react-spring/web': - specifier: ^9.7.5 - version: 9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.1(react@19.0.0) - '@uidotdev/usehooks': - specifier: ^2.4.1 - version: 2.4.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: 2.1.1 - version: 2.1.1 - dayjs: - specifier: ^1.11.13 - version: 1.11.13 - lucide-react: - specifier: ^0.469.0 - version: 0.469.0(react@19.0.0) - react: - specifier: ^19.0.0 - version: 19.0.0 - react-aiwriter: - specifier: ^1.0.0 - version: 1.0.0 - react-dom: - specifier: ^19.0.0 - version: 19.0.0(react@19.0.0) - react-router: - specifier: ^7.1.1 - version: 7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router-dom: - specifier: ^7.1.1 - version: 7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - semver: - specifier: ^7.6.3 - version: 7.6.3 - tailwind-merge: - specifier: ^2.6.0 - version: 2.6.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3))) - vite-plugin-compression: - specifier: ^0.5.1 - version: 0.5.1(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) - devDependencies: - '@eslint/js': - specifier: ^9.17.0 - version: 9.18.0 - '@types/node': - specifier: ^22.10.5 - version: 22.10.7 - '@types/react': - specifier: ^19.0.3 - version: 19.0.7 - '@types/react-dom': - specifier: ^19.0.2 - version: 19.0.3(@types/react@19.0.7) - '@types/semver': - specifier: ^7.5.8 - version: 7.5.8 - '@typescript-eslint/eslint-plugin': - specifier: ^8.19.1 - version: 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^8.19.1 - version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@vitejs/plugin-react-swc': - specifier: ^3.5.0 - version: 3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) - autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.5.1) - eslint: - specifier: ^9.17.0 - version: 9.18.0(jiti@2.4.2) - eslint-import-resolver-typescript: - specifier: ^3.6.1 - version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-import: - specifier: ^2.28.1 - version: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-jsx-a11y: - specifier: ^6.7.1 - version: 6.10.2(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-react: - specifier: ^7.33.2 - version: 7.37.4(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-react-hooks: - specifier: ^5.0.0 - version: 5.1.0(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.16 - version: 0.4.18(eslint@9.18.0(jiti@2.4.2)) - globals: - specifier: ^15.14.0 - version: 15.14.0 - postcss: - specifier: ^8.4.38 - version: 8.5.1 - rollup-plugin-visualizer: - specifier: ^5.14.0 - version: 5.14.0(rollup@4.30.1) - tailwindcss: - specifier: ^3.4.4 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) - typescript: - specifier: ~5.6.3 - version: 5.6.3 - typescript-eslint: - specifier: ^8.18.2 - version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - vite: - specifier: ^6.0.5 - version: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) - - docs: - dependencies: - '@docusaurus/core': - specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-blog': - specifier: 3.6.3 - version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': - specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-ideal-image': - specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/preset-classic': - specifier: 3.6.3 - version: 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': - specifier: 3.6.3 - version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/theme-mermaid': - specifier: 3.6.3 - version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@mdx-js/react': - specifier: 3.0.1 - version: 3.0.1(@types/react@19.0.7)(react@18.3.1) - clsx: - specifier: 2.1.1 - version: 2.1.1 - docusaurus-lunr-search: - specifier: 3.5.0 - version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - dotenv: - specifier: ^16.4.7 - version: 16.4.7 - lunr: - specifier: 2.3.9 - version: 2.3.9 - prism-react-renderer: - specifier: 2.3.1 - version: 2.3.1(react@18.3.1) - react: - specifier: 18.3.1 - version: 18.3.1 - react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) - react-router-dom: - specifier: 6.22.1 - version: 6.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - devDependencies: - '@docusaurus/module-type-aliases': - specifier: 3.6.3 - version: 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': - specifier: 3.6.3 - version: 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - docusaurus-plugin-typedoc: - specifier: 1.0.5 - version: 1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3))) - typedoc: - specifier: 0.26.11 - version: 0.26.11(typescript@5.7.3) - typedoc-plugin-markdown: - specifier: 4.2.10 - version: 4.2.10(typedoc@0.26.11(typescript@5.7.3)) - - packages/adapter-pglite: - dependencies: - '@electric-sql/pglite': - specifier: ^0.2.15 - version: 0.2.15 - '@elizaos/core': - specifier: workspace:* - version: link:../core - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/adapter-postgres: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/pg': - specifier: 8.11.10 - version: 8.11.10 - pg: - specifier: 8.13.1 - version: 8.13.1 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/adapter-redis: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - ioredis: - specifier: 5.4.2 - version: 5.4.2 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - '@types/ioredis': - specifier: ^5.0.0 - version: 5.0.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/adapter-sqlite: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/better-sqlite3': - specifier: 7.6.12 - version: 7.6.12 - better-sqlite3: - specifier: 11.6.0 - version: 11.6.0 - sqlite-vec: - specifier: 0.1.6 - version: 0.1.6 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/adapter-sqljs: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/sql.js': - specifier: 1.4.9 - version: 1.4.9 - sql.js: - specifier: 1.12.0 - version: 1.12.0 - uuid: - specifier: 11.0.3 - version: 11.0.3 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/adapter-supabase: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@supabase/supabase-js': - specifier: 2.46.2 - version: 2.46.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-auto: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/body-parser': - specifier: 1.19.5 - version: 1.19.5 - '@types/cors': - specifier: 2.8.17 - version: 2.8.17 - '@types/express': - specifier: 5.0.0 - version: 5.0.0 - body-parser: - specifier: 1.20.3 - version: 1.20.3 - cors: - specifier: 2.8.5 - version: 2.8.5 - multer: - specifier: 1.4.5-lts.1 - version: 1.4.5-lts.1 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-direct: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-image-generation': - specifier: workspace:* - version: link:../plugin-image-generation - '@elizaos/plugin-tee-log': - specifier: workspace:* - version: link:../plugin-tee-log - '@types/body-parser': - specifier: 1.19.5 - version: 1.19.5 - '@types/cors': - specifier: 2.8.17 - version: 2.8.17 - '@types/express': - specifier: 5.0.0 - version: 5.0.0 - body-parser: - specifier: 1.20.3 - version: 1.20.3 - cors: - specifier: 2.8.5 - version: 2.8.5 - discord.js: - specifier: 14.16.3 - version: 14.16.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - express: - specifier: 4.21.1 - version: 4.21.1 - multer: - specifier: 1.4.5-lts.1 - version: 1.4.5-lts.1 - openai: - specifier: 4.73.0 - version: 4.73.0(encoding@0.1.13)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - '@types/multer': - specifier: ^1.4.12 - version: 1.4.12 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-discord: - dependencies: - '@discordjs/opus': - specifier: github:discordjs/opus - version: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13) - '@discordjs/rest': - specifier: 2.4.0 - version: 2.4.0 - '@discordjs/voice': - specifier: 0.17.0 - version: 0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.9)(ffmpeg-static@5.2.0)(utf-8-validate@6.0.5) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-node': - specifier: workspace:* - version: link:../plugin-node - discord.js: - specifier: 14.16.3 - version: 14.16.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - libsodium-wrappers: - specifier: 0.7.15 - version: 0.7.15 - prism-media: - specifier: 1.3.5 - version: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 1.2.1 - version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/client-farcaster: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@neynar/nodejs-sdk': - specifier: ^2.0.3 - version: 2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - devDependencies: - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-github: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@octokit/rest': - specifier: 20.1.1 - version: 20.1.1 - '@octokit/types': - specifier: 12.6.0 - version: 12.6.0 - glob: - specifier: 10.4.5 - version: 10.4.5 - simple-git: - specifier: 3.27.0 - version: 3.27.0 - devDependencies: - '@types/glob': - specifier: 8.1.0 - version: 8.1.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-lens: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@lens-protocol/client': - specifier: 2.2.0 - version: 2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - '@lens-protocol/metadata': - specifier: 1.2.0 - version: 1.2.0(zod@3.23.8) - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - devDependencies: - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/client-slack: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@ffmpeg-installer/ffmpeg': - specifier: ^1.1.0 - version: 1.1.0 - '@slack/events-api': - specifier: ^3.0.1 - version: 3.0.1 - '@slack/web-api': - specifier: ^6.8.1 - version: 6.13.0 - body-parser: - specifier: ^1.20.2 - version: 1.20.3 - dotenv: - specifier: ^16.0.3 - version: 16.4.7 - express: - specifier: ^4.18.2 - version: 4.21.1 - fluent-ffmpeg: - specifier: ^2.1.2 - version: 2.1.3 - node-fetch: - specifier: ^2.6.9 - version: 2.7.0(encoding@0.1.13) - devDependencies: - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/fluent-ffmpeg': - specifier: ^2.1.24 - version: 2.1.27 - '@types/jest': - specifier: ^29.5.0 - version: 29.5.14 - '@types/node': - specifier: ^18.15.11 - version: 18.19.71 - jest: - specifier: ^29.5.0 - version: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - rimraf: - specifier: ^5.0.0 - version: 5.0.10 - ts-jest: - specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)))(typescript@5.6.3) - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: ^5.0.0 - version: 5.6.3 - - packages/client-telegram: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@telegraf/types': - specifier: 7.1.0 - version: 7.1.0 - telegraf: - specifier: 4.16.3 - version: 4.16.3(encoding@0.1.13) - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 1.2.1 - version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/client-twitter: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - agent-twitter-client: - specifier: 0.0.18 - version: 0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5) - discord.js: - specifier: 14.16.3 - version: 14.16.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - glob: - specifier: 11.0.0 - version: 11.0.0 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - '@vitest/coverage-v8': - specifier: 1.1.3 - version: 1.1.3(vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 1.1.3 - version: 1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/core: - dependencies: - '@ai-sdk/anthropic': - specifier: 0.0.56 - version: 0.0.56(zod@3.23.8) - '@ai-sdk/google': - specifier: 0.0.55 - version: 0.0.55(zod@3.23.8) - '@ai-sdk/google-vertex': - specifier: 0.0.43 - version: 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) - '@ai-sdk/groq': - specifier: 0.0.3 - version: 0.0.3(zod@3.23.8) - '@ai-sdk/mistral': - specifier: ^1.0.8 - version: 1.0.8(zod@3.23.8) - '@ai-sdk/openai': - specifier: 1.0.5 - version: 1.0.5(zod@3.23.8) - '@anthropic-ai/sdk': - specifier: 0.30.1 - version: 0.30.1(encoding@0.1.13) - '@fal-ai/client': - specifier: 1.2.0 - version: 1.2.0 - '@types/uuid': - specifier: 10.0.0 - version: 10.0.0 - ai: - specifier: 3.4.33 - version: 3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) - anthropic-vertex-ai: - specifier: 1.0.2 - version: 1.0.2(encoding@0.1.13)(zod@3.23.8) - fastembed: - specifier: 1.14.1 - version: 1.14.1 - fastestsmallesttextencoderdecoder: - specifier: 1.0.22 - version: 1.0.22 - gaxios: - specifier: 6.7.1 - version: 6.7.1(encoding@0.1.13) - glob: - specifier: 11.0.0 - version: 11.0.0 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 - js-sha1: - specifier: 0.7.0 - version: 0.7.0 - js-tiktoken: - specifier: 1.0.15 - version: 1.0.15 - langchain: - specifier: 0.3.6 - version: 0.3.6(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - ollama-ai-provider: - specifier: 0.16.1 - version: 0.16.1(zod@3.23.8) - openai: - specifier: 4.73.0 - version: 4.73.0(encoding@0.1.13)(zod@3.23.8) - tinyld: - specifier: 1.3.4 - version: 1.3.4 - together-ai: - specifier: 0.7.0 - version: 0.7.0(encoding@0.1.13) - unique-names-generator: - specifier: 4.7.1 - version: 4.7.1 - uuid: - specifier: 11.0.3 - version: 11.0.3 - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 - '@rollup/plugin-commonjs': - specifier: 25.0.8 - version: 25.0.8(rollup@2.79.2) - '@rollup/plugin-json': - specifier: 6.1.0 - version: 6.1.0(rollup@2.79.2) - '@rollup/plugin-node-resolve': - specifier: 15.3.0 - version: 15.3.0(rollup@2.79.2) - '@rollup/plugin-replace': - specifier: 5.0.7 - version: 5.0.7(rollup@2.79.2) - '@rollup/plugin-terser': - specifier: 0.1.0 - version: 0.1.0(rollup@2.79.2) - '@rollup/plugin-typescript': - specifier: 11.1.6 - version: 11.1.6(rollup@2.79.2)(tslib@2.8.1)(typescript@5.6.3) - '@solana/web3.js': - specifier: 1.95.8 - version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@tavily/core': - specifier: ^0.0.2 - version: 0.0.2 - '@types/fluent-ffmpeg': - specifier: 2.1.27 - version: 2.1.27 - '@types/jest': - specifier: 29.5.14 - version: 29.5.14 - '@types/mocha': - specifier: 10.0.10 - version: 10.0.10 - '@types/node': - specifier: 22.8.4 - version: 22.8.4 - '@types/pdfjs-dist': - specifier: 2.10.378 - version: 2.10.378(encoding@0.1.13) - '@types/tar': - specifier: 6.1.13 - version: 6.1.13 - '@types/wav-encoder': - specifier: 1.3.3 - version: 1.3.3 - '@typescript-eslint/eslint-plugin': - specifier: 8.16.0 - version: 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: 8.16.0 - version: 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@vitest/coverage-v8': - specifier: 2.1.5 - version: 2.1.5(vitest@2.1.8(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - dotenv: - specifier: 16.4.5 - version: 16.4.5 - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - lint-staged: - specifier: 15.2.10 - version: 15.2.10 - nodemon: - specifier: 3.1.7 - version: 3.1.7 - pm2: - specifier: 5.4.3 - version: 5.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - rimraf: - specifier: 6.0.1 - version: 6.0.1 - rollup: - specifier: 2.79.2 - version: 2.79.2 - ts-jest: - specifier: 29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3) - ts-node: - specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) - tslib: - specifier: 2.8.1 - version: 2.8.1 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: 5.6.3 - version: 5.6.3 - - packages/create-eliza-app: - dependencies: - citty: - specifier: 0.1.6 - version: 0.1.6 - giget: - specifier: 1.2.3 - version: 1.2.3 - devDependencies: - automd: - specifier: 0.3.12 - version: 0.3.12(magicast@0.3.5) - jiti: - specifier: 2.4.0 - version: 2.4.0 - unbuild: - specifier: 2.0.0 - version: 2.0.0(typescript@5.7.3) - - packages/plugin-0g: - dependencies: - '@0glabs/0g-ts-sdk': - specifier: 0.2.1 - version: 0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5) - '@elizaos/core': - specifier: workspace:* - version: link:../core - ethers: - specifier: 6.13.4 - version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-3d-generation: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-abstract: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-akash: - dependencies: - '@akashnetwork/akash-api': - specifier: ^1.4.0 - version: 1.4.0(@grpc/grpc-js@1.12.5) - '@akashnetwork/akashjs': - specifier: 0.10.1 - version: 0.10.1(@grpc/grpc-js@1.12.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@cosmjs/proto-signing': - specifier: ^0.31.3 - version: 0.31.3 - '@cosmjs/stargate': - specifier: 0.31.3 - version: 0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/js-yaml': - specifier: ^4.0.9 - version: 4.0.9 - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - dotenv: - specifier: ^16.4.1 - version: 16.4.7 - jsrsasign: - specifier: ^11.1.0 - version: 11.1.0 - node-fetch: - specifier: ^2.7.0 - version: 2.7.0(encoding@0.1.13) - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@types/dotenv': - specifier: ^8.2.0 - version: 8.2.3 - '@types/jest': - specifier: ^29.5.11 - version: 29.5.14 - '@types/node': - specifier: ^20.10.5 - version: 20.17.9 - '@typescript-eslint/eslint-plugin': - specifier: ^6.15.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^6.15.0 - version: 6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@vitest/coverage-v8': - specifier: ^0.34.6 - version: 0.34.6(vitest@0.34.6) - '@vitest/ui': - specifier: ^0.34.6 - version: 0.34.7(vitest@0.34.6) - eslint: - specifier: ^9.16.0 - version: 9.18.0(jiti@2.4.2) - tsup: - specifier: ^8.0.1 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: ^5.3.3 - version: 5.6.3 - vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vite-tsconfig-paths: - specifier: ^4.2.2 - version: 4.3.2(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0)) - vitest: - specifier: ^0.34.6 - version: 0.34.6(@vitest/ui@0.34.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(playwright@1.48.2)(terser@5.37.0) - - packages/plugin-allora: - dependencies: - '@alloralabs/allora-sdk': - specifier: 0.0.4 - version: 0.0.4 - '@elizaos/core': - specifier: workspace:* - version: link:../core - node-cache: - specifier: 5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-anyone: - dependencies: - '@anyone-protocol/anyone-client': - specifier: ^0.4.3 - version: 0.4.3 - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-aptos: - dependencies: - '@aptos-labs/ts-sdk': - specifier: ^1.26.0 - version: 1.33.1 - '@elizaos/core': - specifier: workspace:* - version: link:../core - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - form-data: - specifier: 4.0.1 - version: 4.0.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-arthera: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - devDependencies: - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-asterai: - dependencies: - '@asterai/client': - specifier: 0.1.6 - version: 0.1.6 - '@elizaos/core': - specifier: workspace:* - version: link:../core - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - bs58: - specifier: 6.0.0 - version: 6.0.0 - elliptic: - specifier: 6.6.1 - version: 6.6.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - sha3: - specifier: 2.1.4 - version: 2.1.4 - uuid: - specifier: 11.0.3 - version: 11.0.3 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - '@types/elliptic': - specifier: 6.4.18 - version: 6.4.18 - '@types/uuid': - specifier: 10.0.0 - version: 10.0.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-autonome: - dependencies: - '@coral-xyz/anchor': - specifier: 0.30.1 - version: 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../plugin-tee - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - form-data: - specifier: 4.0.1 - version: 4.0.1 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-avail: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - avail-js-sdk: - specifier: ^0.3.0 - version: 0.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-avalanche: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-binance: - dependencies: - '@binance/connector': - specifier: ^3.6.0 - version: 3.6.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@elizaos/core': - specifier: workspace:* - version: link:../core - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-bootstrap: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-coinbase: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@types/jsonwebtoken': - specifier: ^9.0.7 - version: 9.0.7 - coinbase-advanced-sdk: - specifier: file:../../packages/plugin-coinbase/advanced-sdk-ts - version: '@coinbase-samples/advanced-sdk-ts@file:packages/plugin-coinbase/advanced-sdk-ts(encoding@0.1.13)' - coinbase-api: - specifier: 1.0.5 - version: 1.0.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) - jsonwebtoken: - specifier: ^9.0.2 - version: 9.0.2 - node-fetch: - specifier: ^2.6.1 - version: 2.7.0(encoding@0.1.13) - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: ^1.0.0 - version: 1.2.1(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) - - packages/plugin-coingecko: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.6.7 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-coinmarketcap: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.6.7 - version: 1.7.9(debug@4.4.0) - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-conflux: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - cive: - specifier: 0.7.1 - version: 0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) - - packages/plugin-cosmos: - dependencies: - '@chain-registry/utils': - specifier: ^1.51.41 - version: 1.51.50 - '@cosmjs/cosmwasm-stargate': - specifier: ^0.32.4 - version: 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/proto-signing': - specifier: ^0.32.4 - version: 0.32.4 - '@cosmjs/stargate': - specifier: ^0.32.4 - version: 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@elizaos/core': - specifier: workspace:* - version: link:../core - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - chain-registry: - specifier: ^1.69.68 - version: 1.69.94 - interchain: - specifier: ^1.10.4 - version: 1.10.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - '@chain-registry/types': - specifier: ^0.50.44 - version: 0.50.50 - - packages/plugin-cronoszkevm: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-depin: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-echochambers: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-node': - specifier: workspace:* - version: link:../plugin-node - - packages/plugin-evm: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../plugin-tee - '@lifi/data-types': - specifier: 5.15.5 - version: 5.15.5 - '@lifi/sdk': - specifier: 3.4.1 - version: 3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.7.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - '@lifi/types': - specifier: 16.3.0 - version: 16.3.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-flow: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@onflow/config': - specifier: 1.5.1 - version: 1.5.1 - '@onflow/fcl': - specifier: 1.13.1 - version: 1.13.1(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) - '@onflow/typedefs': - specifier: 1.4.0 - version: 1.4.0 - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - bs58: - specifier: 6.0.0 - version: 6.0.0 - elliptic: - specifier: 6.6.1 - version: 6.6.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - sha3: - specifier: 2.1.4 - version: 2.1.4 - uuid: - specifier: 11.0.3 - version: 11.0.3 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zod: - specifier: 3.23.8 - version: 3.23.8 - devDependencies: - '@types/elliptic': - specifier: 6.4.18 - version: 6.4.18 - '@types/uuid': - specifier: 10.0.0 - version: 10.0.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/plugin-fuel: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - form-data: - specifier: 4.0.1 - version: 4.0.1 - fuels: - specifier: 0.97.2 - version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-genlayer: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - genlayer-js: - specifier: 0.4.7 - version: 0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-giphy: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.6.7 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - zod: - specifier: ^3.22.4 - version: 3.23.8 - - packages/plugin-gitbook: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-goat: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@goat-sdk/adapter-vercel-ai': - specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.38(react@19.0.0)(zod@3.23.8)) - '@goat-sdk/core': - specifier: 0.4.0 - version: 0.4.0 - '@goat-sdk/plugin-erc20': - specifier: 0.2.2 - version: 0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8)) - '@goat-sdk/plugin-kim': - specifier: 0.1.2 - version: 0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8)) - '@goat-sdk/wallet-evm': - specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) - '@goat-sdk/wallet-viem': - specifier: 0.2.0 - version: 0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8)) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-goplus: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - ws: - specifier: ^8.18.0 - version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - devDependencies: - '@types/ws': - specifier: ^8.5.13 - version: 8.5.13 - tsx: - specifier: ^4.19.2 - version: 4.19.2 - - packages/plugin-hyperliquid: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - hyperliquid: - specifier: ^1.5.6 - version: 1.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5) - zod: - specifier: ^3.23.8 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-icp: - dependencies: - '@dfinity/agent': - specifier: 2.1.3 - version: 2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3) - '@dfinity/candid': - specifier: 2.1.3 - version: 2.1.3(@dfinity/principal@2.1.3) - '@dfinity/identity': - specifier: 2.1.3 - version: 2.1.3(@dfinity/agent@2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3)(@peculiar/webcrypto@1.5.0) - '@dfinity/principal': - specifier: 2.1.3 - version: 2.1.3 - '@elizaos/core': - specifier: workspace:* - version: link:../core - devDependencies: - '@types/jest': - specifier: 29.5.14 - version: 29.5.14 - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: 5.6.3 - version: 5.6.3 - - packages/plugin-image-generation: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-intiface: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - buttplug: - specifier: 3.2.2 - version: 3.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - net: - specifier: 1.0.2 - version: 1.0.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-irys: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@irys/upload': - specifier: ^0.0.14 - version: 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-ethereum': - specifier: ^0.0.14 - version: 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - graphql-request: - specifier: ^4.0.0 - version: 4.3.0(encoding@0.1.13)(graphql@16.10.0) - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-lensNetwork: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@lens-network/sdk': - specifier: ^0.0.0-canary-20241203140504 - version: 0.0.0-canary-20241203140504(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1))(zksync-ethers@6.15.3(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))) - dotenv: - specifier: ^16.0.3 - version: 16.4.7 - ethers: - specifier: ^6.0.0 - version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - web3: - specifier: ^4.15.0 - version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zksync-ethers: - specifier: ^6.0.0 - version: 6.15.3(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - - packages/plugin-letzai: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-massa: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@massalabs/massa-web3': - specifier: ^5.0.1-dev - version: 5.1.1 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-movement: - dependencies: - '@aptos-labs/ts-sdk': - specifier: ^1.26.0 - version: 1.33.1 - '@elizaos/core': - specifier: workspace:* - version: link:../core - bignumber: - specifier: 1.1.0 - version: 1.1.0 - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - form-data: - specifier: 4.0.1 - version: 4.0.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: ^5.0.0 - version: 5.6.3 - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/plugin-multiversx: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@multiversx/sdk-core': - specifier: 13.15.0 - version: 13.15.0(bignumber.js@9.1.2)(protobufjs@7.4.0) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - browserify: - specifier: ^17.0.1 - version: 17.0.1 - esbuild-plugin-polyfill-node: - specifier: ^0.3.0 - version: 0.3.0(esbuild@0.24.2) - esmify: - specifier: ^2.1.1 - version: 2.1.1 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-near: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@ref-finance/ref-sdk': - specifier: ^1.4.6 - version: 1.4.6(encoding@0.1.13)(react@19.0.0) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - form-data: - specifier: 4.0.1 - version: 4.0.1 - near-api-js: - specifier: 5.0.1 - version: 5.0.1(encoding@0.1.13) - node-cache: - specifier: 5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-nft-generation: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-image-generation': - specifier: workspace:* - version: link:../plugin-image-generation - '@elizaos/plugin-node': - specifier: workspace:* - version: link:../plugin-node - '@metaplex-foundation/mpl-token-metadata': - specifier: ^3.3.0 - version: 3.3.0(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/mpl-toolbox': - specifier: ^0.9.4 - version: 0.9.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi': - specifier: ^0.9.2 - version: 0.9.2 - '@metaplex-foundation/umi-bundle-defaults': - specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) - '@openzeppelin/contracts': - specifier: ^5.1.0 - version: 5.2.0 - '@solana-developers/helpers': - specifier: ^2.5.6 - version: 2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: 1.95.5 - version: 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - bs58: - specifier: 6.0.0 - version: 6.0.0 - express: - specifier: 4.21.1 - version: 4.21.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - solc: - specifier: ^0.8.28 - version: 0.8.28 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-node: - dependencies: - '@aws-sdk/client-s3': - specifier: ^3.705.0 - version: 3.729.0 - '@aws-sdk/s3-request-presigner': - specifier: ^3.705.0 - version: 3.729.0 - '@cliqz/adblocker-playwright': - specifier: 1.34.0 - version: 1.34.0(playwright@1.48.2) - '@echogarden/espeak-ng-emscripten': - specifier: 0.3.3 - version: 0.3.3 - '@echogarden/kissfft-wasm': - specifier: 0.2.0 - version: 0.2.0 - '@echogarden/speex-resampler-wasm': - specifier: 0.2.1 - version: 0.2.1 - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@huggingface/transformers': - specifier: 3.0.2 - version: 3.0.2 - '@opendocsg/pdf2md': - specifier: 0.1.32 - version: 0.1.32(encoding@0.1.13) - '@types/uuid': - specifier: 10.0.0 - version: 10.0.0 - alawmulaw: - specifier: 6.0.0 - version: 6.0.0 - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - capsolver-npm: - specifier: 2.0.2 - version: 2.0.2 - cldr-segmentation: - specifier: 2.2.1 - version: 2.2.1 - command-exists: - specifier: 1.2.9 - version: 1.2.9 - csv-writer: - specifier: 1.6.0 - version: 1.6.0 - echogarden: - specifier: 2.0.7 - version: 2.0.7(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(encoding@0.1.13)(utf-8-validate@5.0.10)(zod@3.24.1) - espeak-ng: - specifier: 1.0.2 - version: 1.0.2 - ffmpeg-static: - specifier: 5.2.0 - version: 5.2.0 - fluent-ffmpeg: - specifier: 2.1.3 - version: 2.1.3 - formdata-node: - specifier: 6.0.3 - version: 6.0.3 - fs-extra: - specifier: 11.2.0 - version: 11.2.0 - gaxios: - specifier: 6.7.1 - version: 6.7.1(encoding@0.1.13) - gif-frames: - specifier: 0.4.1 - version: 0.4.1 - glob: - specifier: 11.0.0 - version: 11.0.0 - graceful-fs: - specifier: 4.2.11 - version: 4.2.11 - html-escaper: - specifier: 3.0.3 - version: 3.0.3 - html-to-text: - specifier: 9.0.5 - version: 9.0.5 - import-meta-resolve: - specifier: 4.1.0 - version: 4.1.0 - jieba-wasm: - specifier: 2.2.0 - version: 2.2.0 - json5: - specifier: 2.2.3 - version: 2.2.3 - kuromoji: - specifier: 0.1.2 - version: 0.1.2 - libsodium-wrappers: - specifier: 0.7.15 - version: 0.7.15 - multer: - specifier: 1.4.5-lts.1 - version: 1.4.5-lts.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - node-llama-cpp: - specifier: 3.1.1 - version: 3.1.1(typescript@5.7.3) - nodejs-whisper: - specifier: 0.1.18 - version: 0.1.18 - onnxruntime-node: - specifier: 1.20.1 - version: 1.20.1 - pdfjs-dist: - specifier: 4.7.76 - version: 4.7.76(encoding@0.1.13) - playwright: - specifier: 1.48.2 - version: 1.48.2 - pm2: - specifier: 5.4.3 - version: 5.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - puppeteer-extra: - specifier: 3.3.6 - version: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) - puppeteer-extra-plugin-capsolver: - specifier: 2.0.1 - version: 2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(typescript@5.7.3)(utf-8-validate@5.0.10) - sharp: - specifier: 0.33.5 - version: 0.33.5 - srt: - specifier: 0.0.3 - version: 0.0.3 - systeminformation: - specifier: 5.23.5 - version: 5.23.5 - tar: - specifier: 7.4.3 - version: 7.4.3 - tinyld: - specifier: 1.3.4 - version: 1.3.4 - uuid: - specifier: 11.0.3 - version: 11.0.3 - wav: - specifier: 1.0.2 - version: 1.0.2 - wav-encoder: - specifier: 1.3.0 - version: 1.3.0 - wavefile: - specifier: 11.0.0 - version: 11.0.0 - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - yargs: - specifier: 17.7.2 - version: 17.7.2 - youtube-dl-exec: - specifier: 3.0.10 - version: 3.0.10 - devDependencies: - '@types/node': - specifier: 22.8.4 - version: 22.8.4 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-obsidian: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - file-type-checker: - specifier: ^1.1.2 - version: 1.1.2 - mrmime: - specifier: ^2.0.0 - version: 2.0.0 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-opacity: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - dotenv: - specifier: ^16.4.5 - version: 16.4.7 - devDependencies: - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-open-weather: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - zod: - specifier: ^3.22.4 - version: 3.23.8 - - packages/plugin-primus: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@primuslabs/zktls-core-sdk': - specifier: ^0.1.0 - version: 0.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - agent-twitter-client: - specifier: 0.0.18 - version: 0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-pyth-data: - dependencies: - '@elizaos/core': - specifier: ^0.1.7 - version: 0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3)) - '@pythnetwork/client': - specifier: ^2.22.0 - version: 2.22.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/hermes-client': - specifier: ^1.3.0 - version: 1.3.0(axios@1.7.9) - '@solana/web3.js': - specifier: ^1.98.0 - version: 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@zodios/core': - specifier: ^10.9.6 - version: 10.9.6(axios@1.7.9)(zod@3.23.8) - ajv: - specifier: ^8.12.0 - version: 8.17.1 - buffer: - specifier: 6.0.3 - version: 6.0.3 - chalk: - specifier: ^5.4.1 - version: 5.4.1 - cli-table3: - specifier: ^0.6.5 - version: 0.6.5 - cross-fetch: - specifier: ^4.0.0 - version: 4.1.0(encoding@0.1.13) - eventsource: - specifier: ^3.0.2 - version: 3.0.2 - jstat: - specifier: ^1.9.6 - version: 1.9.6 - ora: - specifier: ^8.1.1 - version: 8.1.1 - zod: - specifier: ^3.23.8 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20.8.2 - version: 20.17.9 - '@typescript-eslint/eslint-plugin': - specifier: ^6.7.4 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^6.7.4 - version: 6.21.0(eslint@8.57.1)(typescript@5.6.3) - eslint: - specifier: ^8.50.0 - version: 8.57.1 - openapi-zod-client: - specifier: ^1.18.1 - version: 1.18.2(react@19.0.0) - rimraf: - specifier: ^5.0.5 - version: 5.0.10 - tsup: - specifier: ^8.0.0 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - typescript: - specifier: ^5.2.2 - version: 5.6.3 - vitest: - specifier: ^1.0.0 - version: 1.2.1(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) - - packages/plugin-quai: - dependencies: - '@avnu/avnu-sdk': - specifier: ^2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13)) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - quais: - specifier: 1.0.0-alpha.25 - version: 1.0.0-alpha.25(bufferutil@4.0.9)(utf-8-validate@6.0.5) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: ^2.1.4 - version: 2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-rabbi-trader: - dependencies: - '@elizaos/client-twitter': - specifier: workspace:* - version: link:../client-twitter - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-solana': - specifier: workspace:* - version: link:../plugin-solana - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - '@goat-sdk/core': - specifier: 0.3.8 - version: 0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@goat-sdk/plugin-coingecko': - specifier: 0.1.4 - version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) - '@goat-sdk/plugin-erc20': - specifier: 0.1.7 - version: 0.1.7(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) - '@goat-sdk/wallet-viem': - specifier: 0.1.3 - version: 0.1.3(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) - '@solana/web3.js': - specifier: ^1.87.6 - version: 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber: - specifier: 1.1.0 - version: 1.1.0 - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - node-cache: - specifier: ^5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - ws: - specifier: ^8.0.0 - version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - zod: - specifier: 3.23.8 - version: 3.23.8 - - packages/plugin-sgx: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-solana: - dependencies: - '@coral-xyz/anchor': - specifier: 0.30.1 - version: 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../plugin-tee - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - '@solana/spl-token': - specifier: 0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: 1.95.8 - version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - bs58: - specifier: 6.0.0 - version: 6.0.0 - fomo-sdk-solana: - specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - form-data: - specifier: 4.0.1 - version: 4.0.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - pumpdotfun-sdk: - specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-solana-agentkit: - dependencies: - '@coral-xyz/anchor': - specifier: 0.30.1 - version: 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../plugin-tee - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - '@solana/spl-token': - specifier: 0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: 1.95.8 - version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber: - specifier: 1.1.0 - version: 1.1.0 - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - bs58: - specifier: 6.0.0 - version: 6.0.0 - fomo-sdk-solana: - specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - form-data: - specifier: 4.0.1 - version: 4.0.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - pumpdotfun-sdk: - specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - solana-agent-kit: - specifier: ^1.2.0 - version: 1.4.0(@noble/hashes@1.7.0)(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(handlebars@4.7.8)(react@19.0.0)(sodium-native@3.4.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-spheron: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@spheron/protocol-sdk': - specifier: ^1.0.0 - version: 1.2.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - typescript: - specifier: ^5.0.0 - version: 5.6.3 - - packages/plugin-stargaze: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.6.7 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - zod: - specifier: ^3.22.4 - version: 3.23.8 - - packages/plugin-starknet: - dependencies: - '@avnu/avnu-sdk': - specifier: 2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13)) - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-trustdb': - specifier: workspace:* - version: link:../plugin-trustdb - '@uniswap/sdk-core': - specifier: 6.0.0 - version: 6.0.0 - '@unruggable_starknet/core': - specifier: 0.1.0 - version: 0.1.0(starknet@6.18.0(encoding@0.1.13)) - starknet: - specifier: 6.18.0 - version: 6.18.0(encoding@0.1.13) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - unruggable-sdk: - specifier: 1.4.0 - version: 1.4.0(starknet@6.18.0(encoding@0.1.13)) - vitest: - specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-story: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@pinata/sdk': - specifier: ^2.1.0 - version: 2.1.0 - '@story-protocol/core-sdk': - specifier: 1.2.0-rc.3 - version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - '@types/node': - specifier: ^22.10.1 - version: 22.10.7 - - packages/plugin-sui: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@mysten/sui': - specifier: ^1.16.0 - version: 1.19.0(typescript@5.7.3) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - form-data: - specifier: 4.0.1 - version: 4.0.1 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - vitest: - specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-tee: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@phala/dstack-sdk': - specifier: 0.1.7 - version: 0.1.7(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@solana/spl-token': - specifier: 0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: 1.95.8 - version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - bs58: - specifier: 6.0.0 - version: 6.0.0 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - pumpdotfun-sdk: - specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-tee-log: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-sgx': - specifier: workspace:* - version: link:../plugin-sgx - '@elizaos/plugin-tee': - specifier: workspace:* - version: link:../plugin-tee - better-sqlite3: - specifier: 11.6.0 - version: 11.6.0 - elliptic: - specifier: 6.6.1 - version: 6.6.1 - devDependencies: - '@types/node': - specifier: ^20.0.0 - version: 20.17.9 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - - packages/plugin-tee-marlin: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-thirdweb: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - thirdweb: - specifier: ^5.80.0 - version: 5.84.0(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-ton: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@ton/crypto': - specifier: 3.3.0 - version: 3.3.0 - '@ton/ton': - specifier: 15.1.0 - version: 15.1.0(@ton/core@0.59.1(@ton/crypto@3.3.0))(@ton/crypto@3.3.0) - bignumber.js: - specifier: 9.1.2 - version: 9.1.2 - node-cache: - specifier: 5.1.2 - version: 5.1.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-trustdb: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - dompurify: - specifier: 3.2.2 - version: 3.2.2 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - uuid: - specifier: 11.0.3 - version: 11.0.3 - vitest: - specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - devDependencies: - '@types/dompurify': - specifier: 3.2.0 - version: 3.2.0 - - packages/plugin-tts: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - langdetect: - specifier: 0.2.1 - version: 0.2.1 - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-twitter: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - agent-twitter-client: - specifier: 0.0.18 - version: 0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - devDependencies: - vitest: - specifier: ^1.0.0 - version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - packages/plugin-video-generation: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-web-search: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - - packages/plugin-whatsapp: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: 1.7.8 - version: 1.7.8 - devDependencies: - '@types/jest': - specifier: 29.5.14 - version: 29.5.14 - '@types/node': - specifier: 20.17.9 - version: 20.17.9 - '@typescript-eslint/eslint-plugin': - specifier: 8.16.0 - version: 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: 8.16.0 - version: 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - ts-jest: - specifier: 29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.6.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - - packages/plugin-zksync-era: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - viem: - specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - -packages: - - '@0glabs/0g-ts-sdk@0.2.1': - resolution: {integrity: sha512-IJRD3D+5flNZIl32k/7D45yYvn9AjMeDdkhMr4Y/qo6nFE40HqYRaSlk6ZNI+MjaRzbDxMErrFzQcVkYH/DARg==} - peerDependencies: - ethers: 6.13.1 - - '@0no-co/graphql.web@1.0.13': - resolution: {integrity: sha512-jqYxOevheVTU1S36ZdzAkJIdvRp2m3OYIG5SEoKDw5NI8eVwkoI0D/Q3DYNGmXCxkA6CQuoa7zvMiDPTLqUNuw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - peerDependenciesMeta: - graphql: - optional: true - - '@0no-co/graphqlsp@1.12.16': - resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 - - '@3land/listings-sdk@0.0.4': - resolution: {integrity: sha512-Ljq8R4e7y+wl4m8BGhiInFPCHEzHZZFz1qghnbc8B3bLEKXWM9+2gZOCAa84rdUKuLfzenEdeS2LclTKhdKTFQ==} - - '@acuminous/bitsyntax@0.1.2': - resolution: {integrity: sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==} - engines: {node: '>=0.8'} - - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - - '@adraffy/ens-normalize@1.11.0': - resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} - - '@ai-sdk/anthropic@0.0.56': - resolution: {integrity: sha512-FC/XbeFANFp8rHH+zEZF34cvRu9T42rQxw9QnUzJ1LXTi1cWjxYOx2Zo4vfg0iofxxqgOe4fT94IdT2ERQ89bA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/google-vertex@0.0.43': - resolution: {integrity: sha512-lmZukH74m6MUl4fbyfz3T4qs5ukDUJ6YB5Dedtu+aK+Mdp05k9qTHAXxWiB8i/VdZqWlS+DEo/+b7pOPX0V7wA==} - engines: {node: '>=18'} - peerDependencies: - '@google-cloud/vertexai': ^1.6.0 - zod: ^3.0.0 - - '@ai-sdk/google@0.0.55': - resolution: {integrity: sha512-dvEMS8Ex2H0OeuFBiT4Q1Kfrxi1ckjooy/PazNLjRQ3w9o9VQq4O24eMQGCuW1Z47qgMdXjhDzsH6qD0HOX6Cw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/groq@0.0.3': - resolution: {integrity: sha512-Iyj2p7/M0TVhoPrQfSiwfvjTpZFfc17a6qY/2s22+VgpT0yyfai9dVyLbfUAdnNlpGGrjDpxPHqK1L03r4KlyA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/mistral@1.0.8': - resolution: {integrity: sha512-jWH4HHK4cYvXaac9UprMiSUBwOVb3e0hpbiL1wPb+2bF75pqQQKFQWQyfmoLFrh1oXlMOGn+B6IzwUDSFHLanA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/openai@1.0.19': - resolution: {integrity: sha512-7qmLgppWpGUhSgrH0a6CtgD9hZeRh2hARppl1B7fNhVbekYftSMucsdCiVlKbQzSKPxox0vkNMmwjKa/7xf8bQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/openai@1.0.5': - resolution: {integrity: sha512-JDCPBJQx9o3LgboBPaA55v+9EZ7Vm/ozy0+J5DIr2jJF8WETjeCnigdxixyzEy/Od4wX871jOTSuGffwNIi0kA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/provider-utils@1.0.20': - resolution: {integrity: sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@1.0.22': - resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@2.0.2': - resolution: {integrity: sha512-IAvhKhdlXqiSmvx/D4uNlFYCl8dWT+M9K+IuEcSgnE2Aj27GWu8sDIpAf4r4Voc+wOUkOECVKQhFo8g9pozdjA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@2.0.7': - resolution: {integrity: sha512-4sfPlKEALHPXLmMFcPlYksst3sWBJXmCDZpIBJisRrmwGG6Nn3mq0N1Zu/nZaGcrWZoOY+HT2Wbxla1oTElYHQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider@0.0.24': - resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==} - engines: {node: '>=18'} - - '@ai-sdk/provider@0.0.26': - resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} - engines: {node: '>=18'} - - '@ai-sdk/provider@1.0.1': - resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==} - engines: {node: '>=18'} - - '@ai-sdk/provider@1.0.4': - resolution: {integrity: sha512-lJi5zwDosvvZER3e/pB8lj1MN3o3S7zJliQq56BRr4e9V3fcRyFtwP0JRxaRS5vHYX3OJ154VezVoQNrk0eaKw==} - engines: {node: '>=18'} - - '@ai-sdk/react@0.0.70': - resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - '@ai-sdk/react@1.0.11': - resolution: {integrity: sha512-ndBPA7dx2DqUr7s4zO1cRAPkFGS+wWvSri6OWfCuhfyTAADQ4vdd56vFP9zdTZl4cyL27Vh0hKLfFJMGx83MUQ==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - '@ai-sdk/solid@0.0.54': - resolution: {integrity: sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ==} - engines: {node: '>=18'} - peerDependencies: - solid-js: ^1.7.7 - peerDependenciesMeta: - solid-js: - optional: true - - '@ai-sdk/svelte@0.0.57': - resolution: {integrity: sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw==} - engines: {node: '>=18'} - peerDependencies: - svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - svelte: - optional: true - - '@ai-sdk/ui-utils@0.0.50': - resolution: {integrity: sha512-Z5QYJVW+5XpSaJ4jYCCAVG7zIAuKOOdikhgpksneNmKvx61ACFaf98pmOd+xnjahl0pIlc/QIe6O4yVaJ1sEaw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/ui-utils@1.0.10': - resolution: {integrity: sha512-wZfZNH2IloTx5b1O8CU7/R/icm8EsmURElPckYwNYj2YZrKk9X5XeYSDBF/1/J83obzsn0i7VKkIf40qhRzVVA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/vue@0.0.59': - resolution: {integrity: sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw==} - engines: {node: '>=18'} - peerDependencies: - vue: ^3.3.4 - peerDependenciesMeta: - vue: - optional: true - - '@akashnetwork/akash-api@1.4.0': - resolution: {integrity: sha512-xJTHjkSLHQRk2z1s+pk/fSTXQrJCTyzUzWHn+TvvJapjEsDPT0+AW2YhrmYLOpS0n4s/8GnoGB9swRuzgYYLbg==} - peerDependencies: - '@grpc/grpc-js': ^1.10.6 - - '@akashnetwork/akashjs@0.10.1': - resolution: {integrity: sha512-OrlVYjgzthHrNuBfjaiXp/0GRutop+rYOCI+e8p+Js6jSO7PxH8VbYHDVa3cpCADHEUJ+yl7GLG9HjK1U2VRyg==} - engines: {node: '>18.0.0'} - - '@algolia/autocomplete-core@1.17.7': - resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} - - '@algolia/autocomplete-plugin-algolia-insights@1.17.7': - resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} - peerDependencies: - search-insights: '>= 1 < 3' - - '@algolia/autocomplete-preset-algolia@1.17.7': - resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/autocomplete-shared@1.17.7': - resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/cache-browser-local-storage@4.24.0': - resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} - - '@algolia/cache-common@4.24.0': - resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} - - '@algolia/cache-in-memory@4.24.0': - resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - - '@algolia/client-abtesting@5.19.0': - resolution: {integrity: sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-account@4.24.0': - resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - - '@algolia/client-analytics@4.24.0': - resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - - '@algolia/client-analytics@5.19.0': - resolution: {integrity: sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-common@4.24.0': - resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - - '@algolia/client-common@5.19.0': - resolution: {integrity: sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-insights@5.19.0': - resolution: {integrity: sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-personalization@4.24.0': - resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - - '@algolia/client-personalization@5.19.0': - resolution: {integrity: sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-query-suggestions@5.19.0': - resolution: {integrity: sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-search@4.24.0': - resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - - '@algolia/client-search@5.19.0': - resolution: {integrity: sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q==} - engines: {node: '>= 14.0.0'} - - '@algolia/events@4.0.1': - resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - - '@algolia/ingestion@1.19.0': - resolution: {integrity: sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg==} - engines: {node: '>= 14.0.0'} - - '@algolia/logger-common@4.24.0': - resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - - '@algolia/logger-console@4.24.0': - resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - - '@algolia/monitoring@1.19.0': - resolution: {integrity: sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA==} - engines: {node: '>= 14.0.0'} - - '@algolia/recommend@4.24.0': - resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - - '@algolia/recommend@5.19.0': - resolution: {integrity: sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@4.24.0': - resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - - '@algolia/requester-browser-xhr@5.19.0': - resolution: {integrity: sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-common@4.24.0': - resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - - '@algolia/requester-fetch@5.19.0': - resolution: {integrity: sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-node-http@4.24.0': - resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - - '@algolia/requester-node-http@5.19.0': - resolution: {integrity: sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/transporter@4.24.0': - resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@alloralabs/allora-sdk@0.0.4': - resolution: {integrity: sha512-QlpXJAnN5I6QHnNP+j96Cim05ztBfsKV/Ecn79+2KE2Wt71PJQj3ZGJ5SmbICJdQe5FrkpgthBkK0xOoYMYhWQ==} - engines: {node: '>=18'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@antfu/install-pkg@0.4.1': - resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} - - '@antfu/utils@0.7.10': - resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - - '@anthropic-ai/sdk@0.30.1': - resolution: {integrity: sha512-nuKvp7wOIz6BFei8WrTdhmSsx5mwnArYyJgh4+vYu3V4J0Ltb8Xm3odPm51n1aSI0XxNCrDl7O88cxCtUdAkaw==} - - '@anush008/tokenizers-darwin-universal@0.0.0': - resolution: {integrity: sha512-SACpWEooTjFX89dFKRVUhivMxxcZRtA3nJGVepdLyrwTkQ1TZQ8581B5JoXp0TcTMHfgnDaagifvVoBiFEdNCQ==} - engines: {node: '>= 10'} - os: [darwin] - - '@anush008/tokenizers-linux-x64-gnu@0.0.0': - resolution: {integrity: sha512-TLjByOPWUEq51L3EJkS+slyH57HKJ7lAz/aBtEt7TIPq4QsE2owOPGovByOLIq1x5Wgh9b+a4q2JasrEFSDDhg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@anush008/tokenizers-win32-x64-msvc@0.0.0': - resolution: {integrity: sha512-/5kP0G96+Cr6947F0ZetXnmL31YCaN15dbNbh2NHg7TXXRwfqk95+JtPP5Q7v4jbR2xxAmuseBqB4H/V7zKWuw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@anush008/tokenizers@0.0.0': - resolution: {integrity: sha512-IQD9wkVReKAhsEAbDjh/0KrBGTEXelqZLpOBRDaIRvlzZ9sjmUP+gKbpvzyJnei2JHQiE8JAgj7YcNloINbGBw==} - engines: {node: '>= 10'} - - '@anyone-protocol/anyone-client@0.4.3': - resolution: {integrity: sha512-+JfuYFmjh2Yz3E3tPgoCXJAz5LoRUGq30eJOiCQBvXWwz3agjS2pwX4L4T+uvcWNFlRCjUHsmbsqKVDa7kf3Rw==} - hasBin: true - - '@apidevtools/json-schema-ref-parser@11.7.2': - resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} - engines: {node: '>= 16'} - - '@apidevtools/openapi-schemas@2.1.0': - resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} - engines: {node: '>=10'} - - '@apidevtools/swagger-methods@3.0.2': - resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} - - '@apidevtools/swagger-parser@10.1.1': - resolution: {integrity: sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==} - peerDependencies: - openapi-types: '>=7' - - '@aptos-labs/aptos-cli@1.0.2': - resolution: {integrity: sha512-PYPsd0Kk3ynkxNfe3S4fanI3DiUICCoh4ibQderbvjPFL5A0oK6F4lPEO2t0MDsQySTk2t4vh99Xjy6Bd9y+aQ==} - hasBin: true - - '@aptos-labs/aptos-client@0.1.1': - resolution: {integrity: sha512-kJsoy4fAPTOhzVr7Vwq8s/AUg6BQiJDa7WOqRzev4zsuIS3+JCuIZ6vUd7UBsjnxtmguJJulMRs9qWCzVBt2XA==} - engines: {node: '>=15.10.0'} - - '@aptos-labs/ts-sdk@1.33.1': - resolution: {integrity: sha512-d6nWtUI//fyEN8DeLjm3+ro87Ad6+IKwR9pCqfrs/Azahso1xR1Llxd/O6fj/m1DDsuDj/HAsCsy5TC/aKD6Eg==} - engines: {node: '>=11.0.0'} - - '@asamuzakjp/css-color@2.8.3': - resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} - - '@asterai/client@0.1.6': - resolution: {integrity: sha512-Kz2FEg9z3U8G9F8F/87h7szE9i8gHdIM2dCgl2gtqTgiLdgtqaDEk3cGnbL4D67Q9bsciPb/toHFWIUv/QNRJQ==} - - '@avnu/avnu-sdk@2.1.1': - resolution: {integrity: sha512-y/r/pVT2pU33fGHNVE7A5UIAqQhjEXYQhUh7EodY1s5H7mhRd5U8zHOtI5z6vmpuSnUv0hSvOmmgz8HTuwZ7ew==} - engines: {node: '>=18'} - peerDependencies: - ethers: ^6.11.1 - qs: ^6.12.0 - starknet: ^6.6.0 - - '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} - - '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} - - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - - '@aws-sdk/client-polly@3.726.1': - resolution: {integrity: sha512-Q4ZoSmCXskIQ3T5AdO0OyH3vCeoKCed9AjqNIZ5Bxo7T1aBLaIb0VmjKOEubsYrfl+0Ot++FRmy7G45UUHSs4Q==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/client-s3@3.729.0': - resolution: {integrity: sha512-hpagpazcfOYtxE4nDlR/6JcaIdZ3T2BUt2Ev11Zyz2B5G8eC1dWJgvFsW7ws35252Nb6HTLkJajtnM3v9KtXGw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/client-sso-oidc@3.726.0': - resolution: {integrity: sha512-5JzTX9jwev7+y2Jkzjz0pd1wobB5JQfPOQF3N2DrJ5Pao0/k6uRYwE4NqB0p0HlGrMTDm7xNq7OSPPIPG575Jw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.726.0 - - '@aws-sdk/client-sso@3.726.0': - resolution: {integrity: sha512-NM5pjv2qglEc4XN3nnDqtqGsSGv1k5YTmzDo3W3pObItHmpS8grSeNfX9zSH+aVl0Q8hE4ZIgvTPNZ+GzwVlqg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/client-sts@3.726.1': - resolution: {integrity: sha512-qh9Q9Vu1hrM/wMBOBIaskwnE4GTFaZu26Q6WHwyWNfj7J8a40vBxpW16c2vYXHLBtwRKM1be8uRLkmDwghpiNw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/client-transcribe-streaming@3.726.1': - resolution: {integrity: sha512-A1FtcvFi0SnY193SEnhHVEGB8xaMKHJdioE6/TcW0oka2ezvfZkl6EsmKEP30vLov+NRRzzoHUjitdiYKOpVzg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/core@3.723.0': - resolution: {integrity: sha512-UraXNmvqj3vScSsTkjMwQkhei30BhXlW5WxX6JacMKVtl95c7z0qOXquTWeTalYkFfulfdirUhvSZrl+hcyqTw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-env@3.723.0': - resolution: {integrity: sha512-OuH2yULYUHTVDUotBoP/9AEUIJPn81GQ/YBtZLoo2QyezRJ2QiO/1epVtbJlhNZRwXrToLEDmQGA2QfC8c7pbA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-http@3.723.0': - resolution: {integrity: sha512-DTsKC6xo/kz/ZSs1IcdbQMTgiYbpGTGEd83kngFc1bzmw7AmK92DBZKNZpumf8R/UfSpTcj9zzUUmrWz1kD0eQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-ini@3.726.0': - resolution: {integrity: sha512-seTtcKL2+gZX6yK1QRPr5mDJIBOatrpoyrO8D5b8plYtV/PDbDW3mtDJSWFHet29G61ZmlNElyXRqQCXn9WX+A==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.726.0 - - '@aws-sdk/credential-provider-node@3.726.0': - resolution: {integrity: sha512-jjsewBcw/uLi24x8JbnuDjJad4VA9ROCE94uVRbEnGmUEsds75FWOKp3fWZLQlmjLtzsIbJOZLALkZP86liPaw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-process@3.723.0': - resolution: {integrity: sha512-fgupvUjz1+jeoCBA7GMv0L6xEk92IN6VdF4YcFhsgRHlHvNgm7ayaoKQg7pz2JAAhG/3jPX6fp0ASNy+xOhmPA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-sso@3.726.0': - resolution: {integrity: sha512-WxkN76WeB08j2yw7jUH9yCMPxmT9eBFd9ZA/aACG7yzOIlsz7gvG3P2FQ0tVg25GHM0E4PdU3p/ByTOawzcOAg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-web-identity@3.723.0': - resolution: {integrity: sha512-tl7pojbFbr3qLcOE6xWaNCf1zEfZrIdSJtOPeSXfV/thFMMAvIjgf3YN6Zo1a6cxGee8zrV/C8PgOH33n+Ev/A==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.723.0 - - '@aws-sdk/eventstream-handler-node@3.723.0': - resolution: {integrity: sha512-CekxhxMH1GQe/kuoZsNFE8eonvmHVifyDK1MWfePyEp82/XvqPFWSnKlhT+SqoC6JfsMLmhsyCP/qqr9Du0SbQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-bucket-endpoint@3.726.0': - resolution: {integrity: sha512-vpaP80rZqwu0C3ELayIcRIW84/nd1tadeoqllT+N9TDshuEvq4UJ+w47OBHB7RkHFJoc79lXXNYle0fdQdaE/A==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-eventstream@3.723.0': - resolution: {integrity: sha512-cL50YsgYSlAdAZf02iNwdHJuJHlgPyv/sePpt2PW5ZYSiE6A9/vqqptjDrUmUbpEw+ixmLD215OnyrnHN/MhEg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-expect-continue@3.723.0': - resolution: {integrity: sha512-w/O0EkIzkiqvGu7U8Ke7tue0V0HYM5dZQrz6nVU+R8T2LddWJ+njEIHU4Wh8aHPLQXdZA5NQumv0xLPdEutykw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-flexible-checksums@3.729.0': - resolution: {integrity: sha512-GY92MQ7Pr8hK2rwKmOYSGMmfPQRCWRJ3s1aAIyJBpOHUejWdaNAi78vxeUzVkmGdVjUfF6hRTRAxqV7MnHwe/g==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-host-header@3.723.0': - resolution: {integrity: sha512-LLVzLvk299pd7v4jN9yOSaWDZDfH0SnBPb6q+FDPaOCMGBY8kuwQso7e/ozIKSmZHRMGO3IZrflasHM+rI+2YQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-location-constraint@3.723.0': - resolution: {integrity: sha512-inp9tyrdRWjGOMu1rzli8i2gTo0P4X6L7nNRXNTKfyPNZcBimZ4H0H1B671JofSI5isaklVy5r4pvv2VjjLSHw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-logger@3.723.0': - resolution: {integrity: sha512-chASQfDG5NJ8s5smydOEnNK7N0gDMyuPbx7dYYcm1t/PKtnVfvWF+DHCTrRC2Ej76gLJVCVizlAJKM8v8Kg3cg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.723.0': - resolution: {integrity: sha512-7usZMtoynT9/jxL/rkuDOFQ0C2mhXl4yCm67Rg7GNTstl67u7w5WN1aIRImMeztaKlw8ExjoTyo6WTs1Kceh7A==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.723.0': - resolution: {integrity: sha512-wfjOvNJVp8LDWhq4wO5jtSMb8Vgf4tNlR7QTEQfoYc6AGU3WlK5xyUQcpfcpwytEhQTN9u0cJLQpSyXDO+qSCw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-sdk-transcribe-streaming@3.723.0': - resolution: {integrity: sha512-0j1iix2wthdNTGtG1oFBH3vqhBeIpw+9IRiPA0xXE8xOsqhLBHVbLtqC8/7eMdDWJHNVQdOLlMlGAbcFo6/4Jw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-ssec@3.723.0': - resolution: {integrity: sha512-Bs+8RAeSMik6ZYCGSDJzJieGsDDh2fRbh1HQG94T8kpwBXVxMYihm6e9Xp2cyl+w9fyyCnh0IdCKChP/DvrdhA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-user-agent@3.726.0': - resolution: {integrity: sha512-hZvzuE5S0JmFie1r68K2wQvJbzyxJFdzltj9skgnnwdvLe8F/tz7MqLkm28uV0m4jeHk0LpiBo6eZaPkQiwsZQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-websocket@3.723.0': - resolution: {integrity: sha512-dmp1miRv3baZgRKRlgsfpghUMFx1bHDVPW39caKVVOQLxMWtDt8a6JKGnYm19ew2JmSe+p9h/khdq073bPFslw==} - engines: {node: '>= 14.0.0'} - - '@aws-sdk/region-config-resolver@3.723.0': - resolution: {integrity: sha512-tGF/Cvch3uQjZIj34LY2mg8M2Dr4kYG8VU8Yd0dFnB1ybOEOveIK/9ypUo9ycZpB9oO6q01KRe5ijBaxNueUQg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/s3-request-presigner@3.729.0': - resolution: {integrity: sha512-5jfIFi/rygbUzyCY3PjcehXJRxwqqP3SS3klKxxR3p+fbZcKoV5sknn8hhYnfSPteCmOLqELNP+EG/9I+F3a2w==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.723.0': - resolution: {integrity: sha512-lJlVAa5Sl589qO8lwMLVUtnlF1Q7I+6k1Iomv2goY9d1bRl4q2N5Pit2qJVr2AMW0sceQXeh23i2a/CKOqVAdg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/token-providers@3.723.0': - resolution: {integrity: sha512-hniWi1x4JHVwKElANh9afKIMUhAutHVBRD8zo6usr0PAoj+Waf220+1ULS74GXtLXAPCiNXl5Og+PHA7xT8ElQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.723.0 - - '@aws-sdk/types@3.723.0': - resolution: {integrity: sha512-LmK3kwiMZG1y5g3LGihT9mNkeNOmwEyPk6HGcJqh0wOSV4QpWoKu2epyKE4MLQNUUlz2kOVbVbOrwmI6ZcteuA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-arn-parser@3.723.0': - resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-endpoints@3.726.0': - resolution: {integrity: sha512-sLd30ASsPMoPn3XBK50oe/bkpJ4N8Bpb7SbhoxcY3Lk+fSASaWxbbXE81nbvCnkxrZCvkPOiDHzJCp1E2im71A==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-format-url@3.723.0': - resolution: {integrity: sha512-70+xUrdcnencPlCdV9XkRqmgj0vLDb8vm4mcEsgabg5QQ3S80KM0GEuhBAIGMkBWwNQTzCgQy2s7xOUlJPbu+g==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-locate-window@3.723.0': - resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-user-agent-browser@3.723.0': - resolution: {integrity: sha512-Wh9I6j2jLhNFq6fmXydIpqD1WyQLyTfSxjW9B+PXSnPyk3jtQW8AKQur7p97rO8LAUzVI0bv8kb3ZzDEVbquIg==} - - '@aws-sdk/util-user-agent-node@3.726.0': - resolution: {integrity: sha512-iEj6KX9o6IQf23oziorveRqyzyclWai95oZHDJtYav3fvLJKStwSjygO4xSF7ycHcTYeCHSLO1FFOHgGVs4Viw==} - engines: {node: '>=18.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/xml-builder@3.723.0': - resolution: {integrity: sha512-5xK2SqGU1mzzsOeemy7cy3fGKxR1sEpUs4pEiIjaT0OIvU+fZaDVUEYWOqsgns6wI90XZEQJlXtI8uAHX/do5Q==} - engines: {node: '>=18.0.0'} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.26.5': - resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.0': - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.26.5': - resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.25.9': - resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.26.3': - resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.3': - resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.25.9': - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.26.0': - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.5': - resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.25.9': - resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.25.9': - resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.25.9': - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.25.9': - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.25.9': - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.25.9': - resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.25.9': - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.25.9': - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.25.9': - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.9': - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-constant-elements@7.25.9': - resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.25.9': - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.25.9': - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.25.9': - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.25.9': - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.25.9': - resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.25.9': - resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.25.9': - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.25.9': - resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.25.9': - resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.26.5': - resolution: {integrity: sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.26.0': - resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.26.3': - resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.26.0': - resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime-corejs3@7.26.0': - resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@babel/standalone@7.26.6': - resolution: {integrity: sha512-h1mkoNFYCqDkS+vTLGzsQYvp1v1qbuugk4lOtb/oyjArZ+EtreAaxcSYg3rSIzWZRQOjx4iqGe7A8NRYIMSTTw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.25.9': - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.26.5': - resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.5': - resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@bigmi/core@0.0.4': - resolution: {integrity: sha512-PtLwVOtKXeFNm9mk3gcoo5YmmUSSGxZFjBSX7Wh+5ubRlPAq40D8VqngO0R3/gnFflopQJ4y+igPOz+0J2cQ3A==} - peerDependencies: - bitcoinjs-lib: ^7.0.0-rc.0 - bs58: ^6.0.0 - viem: 2.21.58 - - '@binance/connector@3.6.1': - resolution: {integrity: sha512-qWswMYRywaYOzH3ISVsvk2V0nkcpJT91sRohln2isPryMtHqxXPqiJ4GU8G9fKVL0Pcz8CfctKvqQx4gB3DGHA==} - engines: {node: '>=12.22.3', npm: '>=6.14.13'} - - '@bitcoinerlab/secp256k1@1.2.0': - resolution: {integrity: sha512-jeujZSzb3JOZfmJYI0ph1PVpCRV5oaexCgy+RvCXV8XlY+XFB/2n3WOcvBsKLsOw78KYgnQrQWb2HrKE4be88Q==} - - '@bonfida/sns-records@0.0.1': - resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} - peerDependencies: - '@solana/web3.js': ^1.87.3 - - '@bonfida/spl-name-service@3.0.7': - resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} - peerDependencies: - '@solana/web3.js': ^1.87.3 - - '@braintree/sanitize-url@7.1.1': - resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} - - '@brandonblack/musig@0.0.1-alpha.1': - resolution: {integrity: sha512-00RbByQG85lSzrkDjCblzrUc2n1LJAPPrEMHS4oMg+QckE0kzjd26JytT6yx6tNU2+aOXfK7O4kGW/sKVL67cw==} - - '@cfworker/json-schema@4.1.0': - resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} - - '@chain-registry/types@0.50.50': - resolution: {integrity: sha512-H+sGuL8HTr0iFO4PJlBC9MLfrFR+NsD6sFSoFh2+4+obBCVuc3tp5tz/CSfLy04tIySgLlbmqMxkMNkgv1ZpXg==} - - '@chain-registry/utils@1.51.50': - resolution: {integrity: sha512-IkJKGelpCQko20KVXT4iTslF54iUSmcnJTM2cByvTRPN8q9/oeSVHSyYcAWVI2iiUAwbMZJhNeUQxu+i0+OPow==} - - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} - - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - - '@cks-systems/manifest-sdk@0.1.59': - resolution: {integrity: sha512-ZYTwwDxrC2u74kF30iWZPZPYXB9MtOydLd4/SQdlMXrb6bj1OooMtZxukSCu/Tlkp+KR26bEr6gYuErFHdUFjg==} - - '@cliqz/adblocker-content@1.34.0': - resolution: {integrity: sha512-5LcV8UZv49RWwtpom9ve4TxJIFKd+bjT59tS/2Z2c22Qxx5CW1ncO/T+ybzk31z422XplQfd0ZE6gMGGKs3EMg==} - deprecated: This project has been renamed to @ghostery/adblocker-content. Install using @ghostery/adblocker-content instead - - '@cliqz/adblocker-extended-selectors@1.34.0': - resolution: {integrity: sha512-lNrgdUPpsBWHjrwXy2+Z5nX/Gy5YAvNwFMLqkeMdjzrybwPIalJJN2e+YtkS1I6mVmOMNppF5cv692OAVoI74g==} - deprecated: This project has been renamed to @ghostery/adblocker-extended-selectors. Install using @ghostery/adblocker-extended-selectors instead - - '@cliqz/adblocker-playwright@1.34.0': - resolution: {integrity: sha512-YMedgiz9LR5VW6ocKoC1P3cSsj1T9Ibinp14beXxvpydMmneX+fQB0Hq4bqWvuuL3CNl7fENMgiCDDMTgMLqww==} - deprecated: This project has been renamed to @ghostery/adblocker-playwright. Install using @ghostery/adblocker-playwright instead - peerDependencies: - playwright: ^1.x - - '@cliqz/adblocker@1.34.0': - resolution: {integrity: sha512-d7TeUl5t+TOMJe7/CRYtf+x6hbd8N25DtH7guQTIjjr3AFVortxiAIgNejGvVqy0by4eNByw+oVil15oqxz2Eg==} - deprecated: This project has been renamed to @ghostery/adblocker. Install using @ghostery/adblocker instead - - '@coinbase-samples/advanced-sdk-ts@file:packages/plugin-coinbase/advanced-sdk-ts': - resolution: {directory: packages/plugin-coinbase/advanced-sdk-ts, type: directory} - - '@coinbase/coinbase-sdk@0.10.0': - resolution: {integrity: sha512-sqLH7dE/0XSn5jHddjVrC1PR77sQUEytYcQAlH2d8STqRARcvddxVAByECUIL32MpbdJY7Wca3KfSa6qo811Mg==} - - '@coinbase/wallet-sdk@4.2.4': - resolution: {integrity: sha512-wJ9QOXOhRdGermKAoJSr4JgGqZm/Um0m+ecywzEC9qSOu3TXuVcG3k0XXTXW11UBgjdoPRuf5kAwRX3T9BynFA==} - - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@commitlint/cli@18.6.1': - resolution: {integrity: sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw==} - engines: {node: '>=v18'} - hasBin: true - - '@commitlint/config-conventional@18.6.3': - resolution: {integrity: sha512-8ZrRHqF6je+TRaFoJVwszwnOXb/VeYrPmTwPhf0WxpzpGTcYy1p0SPyZ2eRn/sRi/obnWAcobtDAq6+gJQQNhQ==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@18.6.1': - resolution: {integrity: sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==} - engines: {node: '>=v18'} - - '@commitlint/ensure@18.6.1': - resolution: {integrity: sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@18.6.1': - resolution: {integrity: sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==} - engines: {node: '>=v18'} - - '@commitlint/format@18.6.1': - resolution: {integrity: sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@18.6.1': - resolution: {integrity: sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA==} - engines: {node: '>=v18'} - - '@commitlint/lint@18.6.1': - resolution: {integrity: sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ==} - engines: {node: '>=v18'} - - '@commitlint/load@18.6.1': - resolution: {integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==} - engines: {node: '>=v18'} - - '@commitlint/message@18.6.1': - resolution: {integrity: sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw==} - engines: {node: '>=v18'} - - '@commitlint/parse@18.6.1': - resolution: {integrity: sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==} - engines: {node: '>=v18'} - - '@commitlint/read@18.6.1': - resolution: {integrity: sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@18.6.1': - resolution: {integrity: sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==} - engines: {node: '>=v18'} - - '@commitlint/rules@18.6.1': - resolution: {integrity: sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@18.6.1': - resolution: {integrity: sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q==} - engines: {node: '>=v18'} - - '@commitlint/top-level@18.6.1': - resolution: {integrity: sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw==} - engines: {node: '>=v18'} - - '@commitlint/types@18.6.1': - resolution: {integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==} - engines: {node: '>=v18'} - - '@confio/ics23@0.6.8': - resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} - deprecated: Unmaintained. The codebase for this package was moved to https://github.com/cosmos/ics23 but then the JS implementation was removed in https://github.com/cosmos/ics23/pull/353. Please consult the maintainers of https://github.com/cosmos for further assistance. - - '@coral-xyz/anchor-errors@0.30.1': - resolution: {integrity: sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ==} - engines: {node: '>=10'} - - '@coral-xyz/anchor@0.26.0': - resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} - engines: {node: '>=11'} - - '@coral-xyz/anchor@0.27.0': - resolution: {integrity: sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==} - engines: {node: '>=11'} - - '@coral-xyz/anchor@0.29.0': - resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} - engines: {node: '>=11'} - - '@coral-xyz/anchor@0.30.1': - resolution: {integrity: sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ==} - engines: {node: '>=11'} - - '@coral-xyz/borsh@0.26.0': - resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@coral-xyz/borsh@0.27.0': - resolution: {integrity: sha512-tJKzhLukghTWPLy+n8K8iJKgBq1yLT/AxaNd10yJrX8mI56ao5+OFAKAqW/h0i79KCvb4BK0VGO5ECmmolFz9A==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@coral-xyz/borsh@0.28.0': - resolution: {integrity: sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@coral-xyz/borsh@0.29.0': - resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@coral-xyz/borsh@0.30.1': - resolution: {integrity: sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@cosmjs/amino@0.27.1': - resolution: {integrity: sha512-w56ar/nK9+qlvWDpBPRmD0Blk2wfkkLqRi1COs1x7Ll1LF0AtkIBUjbRKplENLbNovK0T3h+w8bHiFm+GBGQOA==} - - '@cosmjs/amino@0.31.3': - resolution: {integrity: sha512-36emtUq895sPRX8PTSOnG+lhJDCVyIcE0Tr5ct59sUbgQiI14y43vj/4WAlJ/utSOxy+Zhj9wxcs4AZfu0BHsw==} - - '@cosmjs/amino@0.32.2': - resolution: {integrity: sha512-lcK5RCVm4OfdAooxKcF2+NwaDVVpghOq6o/A40c2mHXDUzUoRZ33VAHjVJ9Me6vOFxshrw/XEFn1f4KObntjYA==} - - '@cosmjs/amino@0.32.4': - resolution: {integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==} - - '@cosmjs/cosmwasm-stargate@0.32.4': - resolution: {integrity: sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==} - - '@cosmjs/crypto@0.27.1': - resolution: {integrity: sha512-vbcxwSt99tIYJg8Spp00wc3zx72qx+pY3ozGuBN8gAvySnagK9dQ/jHwtWQWdammmdD6oW+75WfIHZ+gNa+Ybg==} - - '@cosmjs/crypto@0.31.3': - resolution: {integrity: sha512-vRbvM9ZKR2017TO73dtJ50KxoGcFzKtKI7C8iO302BQ5p+DuB+AirUg1952UpSoLfv5ki9O416MFANNg8UN/EQ==} - - '@cosmjs/crypto@0.32.4': - resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} - - '@cosmjs/encoding@0.27.1': - resolution: {integrity: sha512-rayLsA0ojHeniaRfWWcqSsrE/T1rl1gl0OXVNtXlPwLJifKBeLEefGbOUiAQaT0wgJ8VNGBazVtAZBpJidfDhw==} - - '@cosmjs/encoding@0.31.3': - resolution: {integrity: sha512-6IRtG0fiVYwyP7n+8e54uTx2pLYijO48V3t9TLiROERm5aUAIzIlz6Wp0NYaI5he9nh1lcEGJ1lkquVKFw3sUg==} - - '@cosmjs/encoding@0.32.4': - resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} - - '@cosmjs/json-rpc@0.31.3': - resolution: {integrity: sha512-7LVYerXjnm69qqYR3uA6LGCrBW2EO5/F7lfJxAmY+iII2C7xO3a0vAjMSt5zBBh29PXrJVS6c2qRP22W1Le2Wg==} - - '@cosmjs/json-rpc@0.32.4': - resolution: {integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==} - - '@cosmjs/launchpad@0.27.1': - resolution: {integrity: sha512-DcFwGD/z5PK8CzO2sojDxa+Be9EIEtRZb2YawgVnw2Ht/p5FlNv+OVo8qlishpBdalXEN7FvQ1dVeDFEe9TuJw==} - - '@cosmjs/math@0.27.1': - resolution: {integrity: sha512-cHWVjmfIjtRc7f80n7x+J5k8pe+vTVTQ0lA82tIxUgqUvgS6rogPP/TmGtTiZ4+NxWxd11DUISY6gVpr18/VNQ==} - - '@cosmjs/math@0.31.3': - resolution: {integrity: sha512-kZ2C6glA5HDb9hLz1WrftAjqdTBb3fWQsRR+Us2HsjAYdeE6M3VdXMsYCP5M3yiihal1WDwAY2U7HmfJw7Uh4A==} - - '@cosmjs/math@0.32.4': - resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} - - '@cosmjs/proto-signing@0.31.3': - resolution: {integrity: sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==} - - '@cosmjs/proto-signing@0.32.2': - resolution: {integrity: sha512-UV4WwkE3W3G3s7wwU9rizNcUEz2g0W8jQZS5J6/3fiN0mRPwtPKQ6EinPN9ASqcAJ7/VQH4/9EPOw7d6XQGnqw==} - - '@cosmjs/proto-signing@0.32.4': - resolution: {integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==} - - '@cosmjs/socket@0.31.3': - resolution: {integrity: sha512-aqrDGGi7os/hsz5p++avI4L0ZushJ+ItnzbqA7C6hamFSCJwgOkXaOUs+K9hXZdX4rhY7rXO4PH9IH8q09JkTw==} - - '@cosmjs/socket@0.32.4': - resolution: {integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==} - - '@cosmjs/stargate@0.31.3': - resolution: {integrity: sha512-53NxnzmB9FfXpG4KjOUAYAvWLYKdEmZKsutcat/u2BrDXNZ7BN8jim/ENcpwXfs9/Og0K24lEIdvA4gsq3JDQw==} - - '@cosmjs/stargate@0.32.2': - resolution: {integrity: sha512-AsJa29fT7Jd4xt9Ai+HMqhyj7UQu7fyYKdXj/8+/9PD74xe6lZSYhQPcitUmMLJ1ckKPgXSk5Dd2LbsQT0IhZg==} - - '@cosmjs/stargate@0.32.4': - resolution: {integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==} - - '@cosmjs/stream@0.31.3': - resolution: {integrity: sha512-8keYyI7X0RjsLyVcZuBeNjSv5FA4IHwbFKx7H60NHFXszN8/MvXL6aZbNIvxtcIHHsW7K9QSQos26eoEWlAd+w==} - - '@cosmjs/stream@0.32.4': - resolution: {integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==} - - '@cosmjs/tendermint-rpc@0.31.3': - resolution: {integrity: sha512-s3TiWkPCW4QceTQjpYqn4xttUJH36mTPqplMl+qyocdqk5+X5mergzExU/pHZRWQ4pbby8bnR7kMvG4OC1aZ8g==} - - '@cosmjs/tendermint-rpc@0.32.2': - resolution: {integrity: sha512-DXyJHDmcAfCix4H/7/dKR0UMdshP01KxJOXHdHxBCbLIpck94BsWD3B2ZTXwfA6sv98so9wOzhp7qGQa5malxg==} - - '@cosmjs/tendermint-rpc@0.32.4': - resolution: {integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==} - - '@cosmjs/utils@0.27.1': - resolution: {integrity: sha512-VG7QPDiMUzVPxRdJahDV8PXxVdnuAHiIuG56hldV4yPnOz/si/DLNd7VAUUA5923b6jS1Hhev0Hr6AhEkcxBMg==} - - '@cosmjs/utils@0.31.3': - resolution: {integrity: sha512-VBhAgzrrYdIe0O5IbKRqwszbQa7ZyQLx9nEQuHQ3HUplQW7P44COG/ye2n6AzCudtqxmwdX7nyX8ta1J07GoqA==} - - '@cosmjs/utils@0.32.4': - resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} - - '@cosmology/lcd@0.13.5': - resolution: {integrity: sha512-CI8KFsJcgp0RINF8wHpv3Y9yR4Fb9ZnGucyoUICjtX2XT4NVBK+fvZuRFj5TP34km8TpEOb+WV2T7IN/pZsD7Q==} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@csstools/cascade-layer-name-parser@2.0.4': - resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/color-helpers@5.0.1': - resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} - engines: {node: '>=18'} - - '@csstools/css-calc@2.1.1': - resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-color-parser@3.0.7': - resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} - engines: {node: '>=18'} - - '@csstools/media-query-list-parser@4.0.2': - resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/postcss-cascade-layers@5.0.1': - resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-color-function@4.0.7': - resolution: {integrity: sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-color-mix-function@3.0.7': - resolution: {integrity: sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-content-alt-text@2.0.4': - resolution: {integrity: sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-exponential-functions@2.0.6': - resolution: {integrity: sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-font-format-keywords@4.0.0': - resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-gamut-mapping@2.0.7': - resolution: {integrity: sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-gradients-interpolation-method@5.0.7': - resolution: {integrity: sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-hwb-function@4.0.7': - resolution: {integrity: sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-ic-unit@4.0.0': - resolution: {integrity: sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-initial@2.0.0': - resolution: {integrity: sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-is-pseudo-class@5.0.1': - resolution: {integrity: sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-light-dark-function@2.0.7': - resolution: {integrity: sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-logical-float-and-clear@3.0.0': - resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-logical-overflow@2.0.0': - resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-logical-overscroll-behavior@2.0.0': - resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-logical-resize@3.0.0': - resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-logical-viewport-units@3.0.3': - resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-media-minmax@2.0.6': - resolution: {integrity: sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4': - resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-nested-calc@4.0.0': - resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-normalize-display-values@4.0.0': - resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-oklab-function@4.0.7': - resolution: {integrity: sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-progressive-custom-properties@4.0.0': - resolution: {integrity: sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-random-function@1.0.2': - resolution: {integrity: sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-relative-color-syntax@3.0.7': - resolution: {integrity: sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-scope-pseudo-class@4.0.1': - resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-sign-functions@1.1.1': - resolution: {integrity: sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-stepped-value-functions@4.0.6': - resolution: {integrity: sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-text-decoration-shorthand@4.0.1': - resolution: {integrity: sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-trigonometric-functions@4.0.6': - resolution: {integrity: sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/postcss-unset-value@4.0.0': - resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@csstools/selector-resolve-nested@3.0.0': - resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - - '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - - '@csstools/utilities@2.0.0': - resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - '@deepgram/captions@1.2.0': - resolution: {integrity: sha512-8B1C/oTxTxyHlSFubAhNRgCbQ2SQ5wwvtlByn8sDYZvdDtdn/VE2yEPZ4BvUnrKWmsbTQY6/ooLV+9Ka2qmDSQ==} - engines: {node: '>=18.0.0'} - - '@deepgram/sdk@3.9.0': - resolution: {integrity: sha512-X/7JzoYjCObyEaPb2Dgnkwk2LwRe4bw0FJJCLdkjpnFfJCFgA9IWgRD8FEUI6/hp8dW/CqqXkGPA2Q3DIsVG8A==} - engines: {node: '>=18.0.0'} - - '@derhuerst/http-basic@8.2.4': - resolution: {integrity: sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==} - engines: {node: '>=6.0.0'} - - '@dfinity/agent@2.1.3': - resolution: {integrity: sha512-4XmqhFR3GQSUrmx7lMFx7DyHEhFkM6nz4O9FeYJ/WpkmPe8tulKaAfgWbWdTSCjbd8meCgKVHo+QYj+JHXagcw==} - peerDependencies: - '@dfinity/candid': ^2.1.3 - '@dfinity/principal': ^2.1.3 - - '@dfinity/candid@2.1.3': - resolution: {integrity: sha512-Asn7AfydLhhk7E5z9oW+5UL6ne11gxFlYTxHuhrIc7FdqYlM5Flcq1Wfg9EzRa6Btdol3w58Bcph7Brwh1bcIQ==} - peerDependencies: - '@dfinity/principal': ^2.1.3 - - '@dfinity/identity@2.1.3': - resolution: {integrity: sha512-qII0V91S1YeIz5/XRHomwrUhTME+C3oqdTnb99tBitXA2Gq6LU2JaCLbKbN7ehhSyW6EjO4tySJxANz6hYENcQ==} - peerDependencies: - '@dfinity/agent': ^2.1.3 - '@dfinity/principal': ^2.1.3 - '@peculiar/webcrypto': ^1.4.0 - - '@dfinity/principal@2.1.3': - resolution: {integrity: sha512-HtiAfZcs+ToPYFepVJdFlorIfPA56KzC6J97ZuH2lGNMTAfJA+NEBzLe476B4wVCAwZ0TiGJ27J4ks9O79DFEg==} - - '@discordjs/builders@1.10.0': - resolution: {integrity: sha512-ikVZsZP+3shmVJ5S1oM+7SveUCK3L9fTyfA8aJ7uD9cNQlTqF+3Irbk2Y22KXTb3C3RNUahRkSInClJMkHrINg==} - engines: {node: '>=16.11.0'} - - '@discordjs/collection@1.5.3': - resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==} - engines: {node: '>=16.11.0'} - - '@discordjs/collection@2.1.1': - resolution: {integrity: sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==} - engines: {node: '>=18'} - - '@discordjs/formatters@0.5.0': - resolution: {integrity: sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==} - engines: {node: '>=18'} - - '@discordjs/formatters@0.6.0': - resolution: {integrity: sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==} - engines: {node: '>=16.11.0'} - - '@discordjs/node-pre-gyp@0.4.5': - resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} - hasBin: true - - '@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02': - resolution: {tarball: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02} - version: 0.9.0 - engines: {node: '>=12.0.0'} - - '@discordjs/rest@2.4.0': - resolution: {integrity: sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==} - engines: {node: '>=18'} - - '@discordjs/util@1.1.1': - resolution: {integrity: sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==} - engines: {node: '>=18'} - - '@discordjs/voice@0.17.0': - resolution: {integrity: sha512-hArn9FF5ZYi1IkxdJEVnJi+OxlwLV0NJYWpKXsmNOojtGtAZHxmsELA+MZlu2KW1F/K1/nt7lFOfcMXNYweq9w==} - version: 0.17.0 - engines: {node: '>=16.11.0'} - deprecated: This version uses deprecated encryption modes. Please use a newer version. - - '@discordjs/ws@1.1.1': - resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==} - engines: {node: '>=16.11.0'} - - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@docsearch/css@3.8.2': - resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} - - '@docsearch/react@3.8.2': - resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true - - '@docusaurus/babel@3.6.3': - resolution: {integrity: sha512-7dW9Hat9EHYCVicFXYA4hjxBY38+hPuCURL8oRF9fySRm7vzNWuEOghA1TXcykuXZp0HLG2td4RhDxCvGG7tNw==} - engines: {node: '>=18.0'} - - '@docusaurus/bundler@3.6.3': - resolution: {integrity: sha512-47JLuc8D4wA+6VOvmMd5fUC9rFppBQpQOnxDYiVXffm/DeV/wmm3sbpNd5Y+O+G2+nevLTRnvCm/qyancv0Y3A==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/faster': '*' - peerDependenciesMeta: - '@docusaurus/faster': - optional: true - - '@docusaurus/core@3.6.3': - resolution: {integrity: sha512-xL7FRY9Jr5DWqB6pEnqgKqcMPJOX5V0pgWXi5lCiih11sUBmcFKM7c3+GyxcVeeWFxyYSDP3grLTWqJoP4P9Vw==} - engines: {node: '>=18.0'} - hasBin: true - peerDependencies: - '@mdx-js/react': ^3.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/cssnano-preset@3.6.3': - resolution: {integrity: sha512-qP7SXrwZ+23GFJdPN4aIHQrZW+oH/7tzwEuc/RNL0+BdZdmIjYQqUxdXsjE4lFxLNZjj0eUrSNYIS6xwfij+5Q==} - engines: {node: '>=18.0'} - - '@docusaurus/logger@3.6.3': - resolution: {integrity: sha512-xSubJixcNyMV9wMV4q0s47CBz3Rlc5jbcCCuij8pfQP8qn/DIpt0ks8W6hQWzHAedg/J/EwxxUOUrnEoKzJo8g==} - engines: {node: '>=18.0'} - - '@docusaurus/lqip-loader@3.6.3': - resolution: {integrity: sha512-GlQIhVpskcD7T1Lm/eYR+T0ZurEly3291t/KIJCRZcl3ggVcpRlPDXVx3X2o6O5ESClEt5V5ev0i1J9UaCw8IQ==} - engines: {node: '>=18.0'} - - '@docusaurus/mdx-loader@3.6.3': - resolution: {integrity: sha512-3iJdiDz9540ppBseeI93tWTDtUGVkxzh59nMq4ignylxMuXBLK8dFqVeaEor23v1vx6TrGKZ2FuLaTB+U7C0QQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/module-type-aliases@3.6.3': - resolution: {integrity: sha512-MjaXX9PN/k5ugNvfRZdWyKWq4FsrhN4LEXaj0pEmMebJuBNlFeGyKQUa9DRhJHpadNaiMLrbo9m3U7Ig5YlsZg==} - peerDependencies: - react: '*' - react-dom: '*' - - '@docusaurus/plugin-content-blog@3.6.3': - resolution: {integrity: sha512-k0ogWwwJU3pFRFfvW1kRVHxzf2DutLGaaLjAnHVEU6ju+aRP0Z5ap/13DHyPOfHeE4WKpn/M0TqjdwZAcY3kAw==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/plugin-content-docs': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-content-docs@3.6.3': - resolution: {integrity: sha512-r2wS8y/fsaDcxkm20W5bbYJFPzdWdEaTWVYjNxlHlcmX086eqQR1Fomlg9BHTJ0dLXPzAlbC8EN4XqMr3QzNCQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-content-pages@3.6.3': - resolution: {integrity: sha512-eHrmTgjgLZsuqfsYr5X2xEwyIcck0wseSofWrjTwT9FLOWp+KDmMAuVK+wRo7sFImWXZk3oV/xX/g9aZrhD7OA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-debug@3.6.3': - resolution: {integrity: sha512-zB9GXfIZNPRfzKnNjU6xGVrqn9bPXuGhpjgsuc/YtcTDjnjhasg38NdYd5LEqXex5G/zIorQgWB3n6x/Ut62vQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-analytics@3.6.3': - resolution: {integrity: sha512-rCDNy1QW8Dag7nZq67pcum0bpFLrwvxJhYuVprhFh8BMBDxV0bY+bAkGHbSf68P3Bk9C3hNOAXX1srGLIDvcTA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-gtag@3.6.3': - resolution: {integrity: sha512-+OyDvhM6rqVkQOmLVkQWVJAizEEfkPzVWtIHXlWPOCFGK9X4/AWeBSrU0WG4iMg9Z4zD4YDRrU+lvI4s6DSC+w==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-tag-manager@3.6.3': - resolution: {integrity: sha512-1M6UPB13gWUtN2UHX083/beTn85PlRI9ABItTl/JL1FJ5dJTWWFXXsHf9WW/6hrVwthwTeV/AGbGKvLKV+IlCA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-ideal-image@3.6.3': - resolution: {integrity: sha512-y5Pi4UH8wsFUEFPzjzo1GEtb9vfi5VfWTH/ONifDW84ldYaZBPzVM4AIVWcuNPlYG+p4eYwHE4eTuJFe2iupKQ==} - engines: {node: '>=18.0'} - peerDependencies: - jimp: '*' - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - jimp: - optional: true - - '@docusaurus/plugin-sitemap@3.6.3': - resolution: {integrity: sha512-94qOO4M9Fwv9KfVQJsgbe91k+fPJ4byf1L3Ez8TUa6TAFPo/BrLwQ80zclHkENlL1824TuxkcMKv33u6eydQCg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/preset-classic@3.6.3': - resolution: {integrity: sha512-VHSYWROT3flvNNI1SrnMOtW1EsjeHNK9dhU6s9eY5hryZe79lUqnZJyze/ymDe2LXAqzyj6y5oYvyBoZZk6ErA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/react-loadable@6.0.0': - resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==} - peerDependencies: - react: '*' - - '@docusaurus/responsive-loader@1.7.0': - resolution: {integrity: sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==} - engines: {node: '>=12'} - peerDependencies: - jimp: '*' - sharp: '*' - peerDependenciesMeta: - jimp: - optional: true - sharp: - optional: true - - '@docusaurus/theme-classic@3.6.3': - resolution: {integrity: sha512-1RRLK1tSArI2c00qugWYO3jRocjOZwGF1mBzPPylDVRwWCS/rnWWR91ChdbbaxIupRJ+hX8ZBYrwr5bbU0oztQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-common@3.6.3': - resolution: {integrity: sha512-b8ZkhczXHDxWWyvz+YJy4t/PlPbEogTTbgnHoflYnH7rmRtyoodTsu8WVM12la5LmlMJBclBXFl29OH8kPE7gg==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/plugin-content-docs': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-mermaid@3.6.3': - resolution: {integrity: sha512-kIqpjNCP/9R2GGf8UmiDxD3CkOAEJuJIEFlaKMgQtjVxa/vH+9PLI1+DFbArGoG4+0ENTYUq8phHPW7SeL36uQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-search-algolia@3.6.3': - resolution: {integrity: sha512-rt+MGCCpYgPyWCGXtbxlwFbTSobu15jWBTPI2LHsHNa5B0zSmOISX6FWYAPt5X1rNDOqMGM0FATnh7TBHRohVA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-translations@3.6.3': - resolution: {integrity: sha512-Gb0regclToVlngSIIwUCtBMQBq48qVUaN1XQNKW4XwlsgUyk0vP01LULdqbem7czSwIeBAFXFoORJ0RPX7ht/w==} - engines: {node: '>=18.0'} - - '@docusaurus/types@3.6.3': - resolution: {integrity: sha512-xD9oTGDrouWzefkhe9ogB2fDV96/82cRpNGx2HIvI5L87JHNhQVIWimQ/3JIiiX/TEd5S9s+VO6FFguwKNRVow==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/utils-common@3.6.3': - resolution: {integrity: sha512-v4nKDaANLgT3pMBewHYEMAl/ufY0LkXao1QkFWzI5huWFOmNQ2UFzv2BiKeHX5Ownis0/w6cAyoxPhVdDonlSQ==} - engines: {node: '>=18.0'} - - '@docusaurus/utils-validation@3.6.3': - resolution: {integrity: sha512-bhEGGiN5BE38h21vjqD70Gxg++j+PfYVddDUE5UFvLDup68QOcpD33CLr+2knPorlxRbEaNfz6HQDUMQ3HuqKw==} - engines: {node: '>=18.0'} - - '@docusaurus/utils@3.6.3': - resolution: {integrity: sha512-0R/FR3bKVl4yl8QwbL4TYFfR+OXBRpVUaTJdENapBGR3YMwfM6/JnhGilWQO8AOwPJGtGoDK7ib8+8UF9f3OZQ==} - engines: {node: '>=18.0'} - - '@echogarden/audio-io@0.2.3': - resolution: {integrity: sha512-3p6oGhuCvfwcEWE52hJ2pMAY05qz1UeHXuITp+ijG2b5z3qizJT4IsP6ZIfiXYg8pW8maUnbwPOLbazpJv2KYQ==} - engines: {node: '>=18'} - os: [win32, darwin, linux] - - '@echogarden/espeak-ng-emscripten@0.3.3': - resolution: {integrity: sha512-TvSwLnB0vuqIUptvHZyr63Ywj2m7ureIK864O8aoyw9WqEqHE1x5weBzy/1/soZ4BkEkRvurlLF7ue+tEhyatw==} - - '@echogarden/fasttext-wasm@0.1.0': - resolution: {integrity: sha512-spZGRZMUpJsGMJri6+Ea86ECTeFXr2ZQei5xrviVfo8u57OU8Uo0JqW/rUOgn55tVbIxEqfYrHT5u0OUYOKLvQ==} - - '@echogarden/flite-wasi@0.1.1': - resolution: {integrity: sha512-/ayJRFWbq73EEL8N82z1WO2mbey87wFa+t1o+U+xyaD7Ub0qedQ9s0IDJlO5cVvyD2ZXQbFwzeiCD8eXqQ8HCQ==} - - '@echogarden/fvad-wasm@0.2.0': - resolution: {integrity: sha512-jPPzN6uV23dsOkKnGxajBDw81Xx3ICecw72sIzI+m4PzFWpSf/QOLvlgf7mySfqCngD54LRC1aDgD5haB45dbg==} - - '@echogarden/kissfft-wasm@0.2.0': - resolution: {integrity: sha512-bL+MXQY6zos26QPhmJR18VWzf/fc2zRDl+BPqdO9Pqejop6sz8qjQdyxhB1rFW5/fxCJlL+WzZzbeaC+aBPwDA==} - - '@echogarden/pffft-wasm@0.4.2': - resolution: {integrity: sha512-x3rzhVGY01tEAFt+a+D9T/jP8wx5r/XS5hesMFCJz7ujMXg4LO2+94ip1NhzVKPrrsp/oT7UCJjthg5Nz2kYOQ==} - - '@echogarden/rnnoise-wasm@0.2.0': - resolution: {integrity: sha512-dND0FKFaLxyqa+rdgcMWc7A3Zh9pu7zzetYd60+2nbwnKL/8HtUXFGf7GAJ4krwTOgtSLETH9REF39gOa4T5UQ==} - - '@echogarden/rubberband-wasm@0.2.0': - resolution: {integrity: sha512-rcYq34+9HgdKjZb2EksQMW5m4SoyFGjUZCttQCVJz81hbY/qUzjsxsy3bN6iyehTx3mxIYt7ozB/M3B5M40BSQ==} - - '@echogarden/sonic-wasm@0.2.0': - resolution: {integrity: sha512-AjYOkrecn5k8huQ+59z6w2emSqhcDPZOUJwKCTNCQ7VYoLO2GDAQPsNL1o+Hs4mjmnqQcZKwepwMU1K3PhrEYg==} - - '@echogarden/speex-resampler-wasm@0.2.1': - resolution: {integrity: sha512-sCbMrWNSYWDuJ4igz487CL3/DFWW8SYsg4QGJh55gHRrvJf0IkV/6XcRQtobp/U40GYtBWi46Ct3fU2TGrIKRw==} - - '@echogarden/speex-resampler-wasm@0.3.0': - resolution: {integrity: sha512-+J/Vgkseb0NjaKGMBBf9WjZpt4sReA1HQ9QBsuRngBgnzB17Pa1woM797nOqpu1aocotta2yJpQ8FcjfH/w4Bw==} - - '@echogarden/svoxpico-wasm@0.2.0': - resolution: {integrity: sha512-RQH5y5dvUlV4H8TTUX7QFDGpb5j1ge4veuIaPmntUvioKal3U5eNqvI/kCZO0SJ7YS9OWDsHpnKWySs6z9LmTA==} - - '@echogarden/transformers-nodejs-lite@2.17.1-lite.3': - resolution: {integrity: sha512-qD9kvrL1xmce0iiiNEyqq2GW1qoksqvdOpww3Gsgqx/O9tdU/M2R78fji9opY+QU9u8OKH9L+ZzsOQdF5FixZA==} - peerDependencies: - onnxruntime-node: 1.20.1 - - '@electric-sql/pglite@0.2.15': - resolution: {integrity: sha512-Jiq31Dnk+rg8rMhcSxs4lQvHTyizNo5b269c1gCC3ldQ0sCLrNVPGzy+KnmonKy1ZArTUuXZf23/UamzFMKVaA==} - - '@elizaos/core@0.1.8': - resolution: {integrity: sha512-nQT5uQTQVTZJ3CrhVkK4dRdP/RuBMiOv/u3JZvMJGhY45z0Gy0gY27NEn/BBlJ4Ymt/SmqtXOul/x2hOeQen4Q==} - - '@emnapi/core@1.3.1': - resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} - - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@emotion/is-prop-valid@1.3.1': - resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.14.0': - resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/styled@11.14.0': - resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - - '@es-joy/jsdoccomment@0.41.0': - resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} - engines: {node: '>=16'} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.9.1': - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@9.16.0': - resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - - '@ethereumjs/rlp@5.0.2': - resolution: {integrity: sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==} - engines: {node: '>=18'} - hasBin: true - - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@fal-ai/client@1.2.0': - resolution: {integrity: sha512-MNCnE5icY+OM5ahgYJItmydZ7AxhtzhgA5tQI13jVntzhLT0z+tetHIlAL1VA0XFZgldDzqxeTf9Pr5TW3VErg==} - engines: {node: '>=18.0.0'} - - '@ffmpeg-installer/darwin-arm64@4.1.5': - resolution: {integrity: sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==} - cpu: [arm64] - os: [darwin] - - '@ffmpeg-installer/darwin-x64@4.1.0': - resolution: {integrity: sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==} - cpu: [x64] - os: [darwin] - - '@ffmpeg-installer/ffmpeg@1.1.0': - resolution: {integrity: sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==} - - '@ffmpeg-installer/linux-arm64@4.1.4': - resolution: {integrity: sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==} - cpu: [arm64] - os: [linux] - - '@ffmpeg-installer/linux-arm@4.1.3': - resolution: {integrity: sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==} - cpu: [arm] - os: [linux] - - '@ffmpeg-installer/linux-ia32@4.1.0': - resolution: {integrity: sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==} - cpu: [ia32] - os: [linux] - - '@ffmpeg-installer/linux-x64@4.1.0': - resolution: {integrity: sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==} - cpu: [x64] - os: [linux] - - '@ffmpeg-installer/win32-ia32@4.1.0': - resolution: {integrity: sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==} - cpu: [ia32] - os: [win32] - - '@ffmpeg-installer/win32-x64@4.1.0': - resolution: {integrity: sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==} - cpu: [x64] - os: [win32] - - '@floating-ui/core@1.6.9': - resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} - - '@floating-ui/dom@1.6.13': - resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} - - '@floating-ui/react-dom@2.1.2': - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.9': - resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} - - '@fuel-ts/abi-coder@0.97.2': - resolution: {integrity: sha512-YbXFwBtQSfGNhIv+mrgr6EbbyVjzc5DwNjVJuC8DDObiAYhow0uzn/URHFdQ8bexokrKBrdzQKDjnAP6F7ap+w==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/abi-typegen@0.97.2': - resolution: {integrity: sha512-/2XCbEbYL32+ETrKj/uTpuNybwra7BmH7F0V0iGP0eGKzhD0q/GZaIXCqTpwSPKOgvf5jR9dM3akxSw4Sox5mg==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - hasBin: true - - '@fuel-ts/account@0.97.2': - resolution: {integrity: sha512-3nm5xTOV0wAMhKbtE+V1lk38F7s8qovtUTETPA7RzLDHRFKCQuyrR4ntjhOUe+Qvhjc8eDBtHarCuIPChSSJIA==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/address@0.97.2': - resolution: {integrity: sha512-lGAsQ4AOtfqznu+Ws5ZneheejcEUhtam2JIVz1s6Y2Blo8Z2ZaVtsbaN8k0u/23Xcs0cgzyfE4Gt1vRZTHgs8w==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/contract@0.97.2': - resolution: {integrity: sha512-znAldrRFEWz0uFrpYfZHNz7XxnFU0c/res88kawAOhMfi7x9dOnWrkSyWq4GCk98jjGIAuWff1e9iNNMOroCJw==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/crypto@0.97.2': - resolution: {integrity: sha512-1IuTX5CNj0a03Z1Y2FMYhw4FsEboShhjBXmg2NbbFpDxf17D59LekZe/fJZYS7lxSmjnzx8BR2HlhG9i/LNYLQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/errors@0.97.2': - resolution: {integrity: sha512-Wnt40XHDBYZbcW/TJEXAPnZq9e9FhLz1yPGojuFt4fXGd/yJnx1quu/GhxDCL2B4EGr4rsbJ08ASEj3+hmpGuw==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/hasher@0.97.2': - resolution: {integrity: sha512-2CSKpvibiJ4XhCQ82/qN+09dh8eKRTWvIxFnfwGreKVnhKBWoHB+IL0fkGKsw5iQMex1BFMekZOV80THeRu7YQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/interfaces@0.97.2': - resolution: {integrity: sha512-yBmSsvjxJiZRBlLkU04Sre4bBNELUGETp79bq2q5eHz6WgfaDQlwgy7fwewDTviV63ZXCa736LTkgL1duL00NA==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/math@0.97.2': - resolution: {integrity: sha512-btagAIqahRT0ml7lKWZfG9IXEhmEK6OtuBytiHfUVPNhHWqEYeoZ021eJjimJSPU6FOCnXuAVpvk6gmyK7kXSQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/merkle@0.97.2': - resolution: {integrity: sha512-FD/4XXp/pimfJ6Po2rm5lVucDAW5h6uqlDY2GqfMfmExJVJl77AsyHMkVnWU/mUeCp/dcT8rHbI37THmlAkNzQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/program@0.97.2': - resolution: {integrity: sha512-fS7EeXMf2hBu+2XmNsazJIgbLHonStzNxsU0CQ0je1sMFp7lBzae89+4xtIztgD2/m3GA3qZffP+P9cusmTIGg==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/recipes@0.97.2': - resolution: {integrity: sha512-2JM6HYrSNDC74FFAvba7Z+JV8KcCikCzvYxRlv3iUNWMup6NX+xq0bvKODwtzEDQqTHBkBdHfNDK+Jrq2chIlg==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/script@0.97.2': - resolution: {integrity: sha512-9tVTLPdqgH/apR43z0Fixe8OuYo4/HhreeBJEgU0VVu0q7hXI1DiifRlrvyPfGSx1HAwJ9SKJuD3Iyd+GdceCQ==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/transactions@0.97.2': - resolution: {integrity: sha512-W4koZbOrR/+rROe4hLZkub+nTciY0RYKrAA5IAYfipjOvbfp9j/BuA2/O9lEiV9sqxqTF5KU7TuEZE56EwkoCA==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - - '@fuel-ts/utils@0.97.2': - resolution: {integrity: sha512-9NErTdOpucPaBQ5Po0NBm8I1/0uJw0FMtbQEXzorXiKpXL6nGZsFC2/lROmCFVmOmJPDd1qRa4SnIJd0sLdn3w==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - peerDependencies: - vitest: ~2.0.5 - - '@fuel-ts/versions@0.97.2': - resolution: {integrity: sha512-l09N9A46Y8oRf5DmM2cRClckCGEcp9cbW7Do8Rnv4Fp2dQbbmyjtfqj3vnU7X24RHl+zsNTDkcrfHfHgvRxTUw==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - hasBin: true - - '@fuels/vm-asm@0.58.2': - resolution: {integrity: sha512-1/5azTzKJP508BXbZvM6Y0V5bCCX5JgEnd/8mXdBFmFvNLOhiYbwb25yk26auqOokfBXvthSkdkrvipEFft6jQ==} - - '@gerrit0/mini-shiki@1.27.2': - resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==} - - '@goat-sdk/adapter-vercel-ai@0.2.0': - resolution: {integrity: sha512-NqUyO38i6ELbWXSDHddfkD1k4QCUcvfs3jVQArlJ9OO9NSlkKvnbZjO1tTjoVoERjRKfKsCqfMPgsgo3akx7tA==} - peerDependencies: - '@goat-sdk/core': 0.4.0 - ai: 4.0.3 - - '@goat-sdk/core@0.3.8': - resolution: {integrity: sha512-1H8Cziyjj3bN78M4GETGN8+/fAQhtTPqMowSyAgIZtC/MGWvf41H2SR0FNba/xhfCOALhb0UfhGOsXCswvM5iA==} - engines: {node: '>=20.12.2 <21', npm: please-use-pnpm, pnpm: '>=9', yarn: please-use-pnpm} - - '@goat-sdk/core@0.4.0': - resolution: {integrity: sha512-x7TVQ+3IS8bS+44O+ZkbS2R6IDXO0dOcRNWe5psU8Aqrb7/48Fe1ILN2Pif0sv34y1WkPYPlqoPINl/TiatIVQ==} - - '@goat-sdk/plugin-coingecko@0.1.4': - resolution: {integrity: sha512-i85v/SeCXB7/fcqZKc0hV68/3FrUAHJSL4N5AUp5OPauzV5kq4Ecn0WjeDZEHX8iCEEY1NZSZ47yweDckAhjhA==} - peerDependencies: - '@goat-sdk/core': 0.3.14 - viem: 2.21.58 - - '@goat-sdk/plugin-erc20@0.1.7': - resolution: {integrity: sha512-UDd6pXIBmpCWW7QIFxM5rJPta4tWqkys8P1sAt1kqabAndx+GaczhNUPwSdV1MH77BNtcyGZ6+HoeirskiV//Q==} - engines: {node: '>=20.12.2 <21', npm: please-use-pnpm, pnpm: '>=9', yarn: please-use-pnpm} - peerDependencies: - '@goat-sdk/core': 0.3.8 - viem: 2.21.58 - - '@goat-sdk/plugin-erc20@0.2.2': - resolution: {integrity: sha512-uobj8A2GRAHAU8PNY9Be0iA8p+311zRDIRKHRQX0uooCWD4CxD6iMj99Q4RvBl8Es+Kc7JMQPRoZzMLawJUSJw==} - peerDependencies: - '@goat-sdk/core': 0.4.0 - viem: 2.21.58 - - '@goat-sdk/plugin-kim@0.1.2': - resolution: {integrity: sha512-jZ7PTjGk7LPGAmMflhAieZsE0Q28TWinNNuDnljrp6NdfjrLK3wLOQB9syWyFHDCsa+RiddSVjr1ZQJkPFhfKw==} - peerDependencies: - '@goat-sdk/core': 0.4.0 - viem: 2.21.58 - - '@goat-sdk/wallet-evm@0.2.0': - resolution: {integrity: sha512-w/sWi7WHsTz8G+jNWI0xJ+l4wWOVFrSxh7PHfYOEZQyFexOioEdEG5QGYkgYT3/VoYApsx9G1H8itKxs1Mg5Mw==} - peerDependencies: - '@goat-sdk/core': 0.4.0 - - '@goat-sdk/wallet-viem@0.1.3': - resolution: {integrity: sha512-2uofsH/dVmeJk/4V2/tJ1rDk6/ZFQlthUO50tg366hjq0vjINJXMQqYGwSLnv5Z3PMmdfPCSd5xikFEfA+1ZZw==} - engines: {node: '>=20.12.2 <21', npm: please-use-pnpm, pnpm: '>=9', yarn: please-use-pnpm} - peerDependencies: - '@goat-sdk/core': 0.3.4 - viem: 2.21.58 - - '@goat-sdk/wallet-viem@0.2.0': - resolution: {integrity: sha512-x9FTUg9/ZhJyx8tQMAuIGmoFfRkmyDge78yvd9CTK6SQTiYQ/Hio7rAmHjLE95lElXb6EumZu7R0IlX3m/SGSw==} - peerDependencies: - '@goat-sdk/wallet-evm': 0.2.0 - viem: 2.21.58 - - '@google-cloud/vertexai@1.9.2': - resolution: {integrity: sha512-pJSUG3r5QIvCFNfkz7/y7kEqvEJaVAk0jZbZoKbcPCRUnXaUeAq7p8I0oklqetGyxbUcZ2FOGpt+Y+4uIltVPg==} - engines: {node: '>=18.0.0'} - - '@google/model-viewer@2.1.1': - resolution: {integrity: sha512-5umyLoD5vMxlSVQwtmUXeNCNWs9dzmWykGm1qrHe/pCYrj/1lyJIgJRw+IxoMNodGqtcHEtfDhdNjRDM9yo/TA==} - engines: {node: '>=6.0.0'} - - '@gql.tada/cli-utils@1.6.3': - resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} - peerDependencies: - '@0no-co/graphqlsp': ^1.12.13 - '@gql.tada/svelte-support': 1.0.1 - '@gql.tada/vue-support': 1.0.1 - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 - peerDependenciesMeta: - '@gql.tada/svelte-support': - optional: true - '@gql.tada/vue-support': - optional: true - - '@gql.tada/internal@1.0.8': - resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 - - '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@grpc/grpc-js@1.12.5': - resolution: {integrity: sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==} - engines: {node: '>=12.10.0'} - - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} - engines: {node: '>=6'} - hasBin: true - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@huggingface/jinja@0.2.2': - resolution: {integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==} - engines: {node: '>=18'} - - '@huggingface/jinja@0.3.2': - resolution: {integrity: sha512-F2FvuIc+w1blGsaqJI/OErRbWH6bVJDCBI8Rm5D86yZ2wlwrGERsfIaru7XUv9eYC3DMP3ixDRRtF0h6d8AZcQ==} - engines: {node: '>=18'} - - '@huggingface/transformers@3.0.2': - resolution: {integrity: sha512-lTyS81eQazMea5UCehDGFMfdcNRZyei7XQLH5X6j4AhA/18Ka0+5qPgMxUxuZLU4xkv60aY2KNz9Yzthv6WVJg==} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} - engines: {node: '>=18.18'} - - '@hutson/parse-repository-url@3.0.2': - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - - '@iconify/utils@2.2.1': - resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} - - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - - '@improbable-eng/grpc-web@0.15.0': - resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==} - peerDependencies: - google-protobuf: ^3.14.0 - - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - - '@irys/arweave@0.0.2': - resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} - - '@irys/bundles@0.0.1': - resolution: {integrity: sha512-yeQNzElERksFbfbNxJQsMkhtkI3+tNqIMZ/Wwxh76NVBmCnCP5huefOv7ET0MOO7TEQL+TqvKSqmFklYSvTyHw==} - - '@irys/query@0.0.8': - resolution: {integrity: sha512-J8zCZDos2vFogSbroCJHZJq5gnPZEal01Iy3duXAotjIMgrI2ElDANiqEbaP1JAImR1jdUo1ChJnZB7MRLN9Hw==} - engines: {node: '>=16.10.0'} - - '@irys/query@0.0.9': - resolution: {integrity: sha512-uBIy8qeOQupUSBzR+1KU02JJXFp5Ue9l810PIbBF/ylUB8RTreUFkyyABZ7J3FUaOIXFYrT7WVFSJSzXM7P+8w==} - engines: {node: '>=16.10.0'} - - '@irys/sdk@0.2.11': - resolution: {integrity: sha512-z3zKlKYEqRHuCGyyVoikL1lT4Jwt8wv7e4MrMThNfhfT/bdKQHD9lEVsX77DBnLJrBBKKg5rRcEzMtVkpNx3QA==} - engines: {node: '>=16.10.0'} - deprecated: 'Arweave support is deprecated - We recommend migrating to the Irys datachain: https://migrate-to.irys.xyz/' - hasBin: true - - '@irys/upload-core@0.0.9': - resolution: {integrity: sha512-Ha4pX8jgYBA3dg5KHDPk+Am0QO+SmvnmgCwKa6uiDXZKuVr0neSx4V1OAHoP+As+j7yYgfChdsdrvsNzZGGehA==} - - '@irys/upload-ethereum@0.0.14': - resolution: {integrity: sha512-hzJkmuQ7JnHNhaunbBpwZSxrbchdiWCTkeFUYI4OZyRNFK1vdPfQ+fAiFBnqSTS8yuqlnN+6xad2b8gS+1JmSA==} - - '@irys/upload@0.0.14': - resolution: {integrity: sha512-6XdkyS5cVINcPjv1MzA6jDsawfG7Bw6sq5wilNx5B4X7nNotBPC3SuRrZs06G/0BTUj15W+TRO/tZTDWRUfZzA==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - - '@isaacs/string-locale-compare@1.1.0': - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jclem/logfmt2@2.4.3': - resolution: {integrity: sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg==} - engines: {node: '>= 14.x', npm: '>= 7.x'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@js-sdsl/ordered-map@4.4.2': - resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - - '@jspm/core@2.1.0': - resolution: {integrity: sha512-3sRl+pkyFY/kLmHl0cgHiFp2xEqErA8N3ECjMs7serSUBmoJ70lBa0PG5t0IM6WJgdZNyyI0R8YFfi5wM8+mzg==} - - '@kikobeats/time-span@1.0.5': - resolution: {integrity: sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g==} - engines: {node: '>= 18'} - - '@kwsites/file-exists@1.1.1': - resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} - - '@kwsites/promise-deferred@1.1.1': - resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - - '@langchain/core@0.3.30': - resolution: {integrity: sha512-HFUpjJ6FkPSSeLKzCLKxba4VN1DKnrXRmjaWHDb5KUyE9DZrqak3Sh6k2dkzXDJIcdd/uNeeQGFyQnubVEMkPw==} - engines: {node: '>=18'} - - '@langchain/groq@0.1.3': - resolution: {integrity: sha512-dMzvBVaLf/0IQoHdAOAN8W/PbOcwgbvgUMCn02CqvCC90mxZ45LI0Tipzqnoaam0hiKALR5hLc3dNj1oCYV92w==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.21 <0.4.0' - - '@langchain/langgraph-checkpoint@0.0.13': - resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.31 <0.4.0' - - '@langchain/langgraph-sdk@0.0.36': - resolution: {integrity: sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==} - - '@langchain/langgraph@0.2.40': - resolution: {integrity: sha512-/6VSEXkHb1jAzT3VMpTpH3YCKO2A0Y3nAi4LyRB6REimWrZwk0LsurhB1NHj2hXRmntExhaNe/XxJPAHJ+g1pg==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' - - '@langchain/openai@0.3.17': - resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.3.29 <0.4.0' - - '@langchain/textsplitters@0.1.0': - resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.21 <0.4.0' - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - - '@lens-network/sdk@0.0.0-canary-20241203140504': - resolution: {integrity: sha512-w5mNEXQTP0pSkCq6b8sgM2/87dad1gFTP7hbaDxy4lXnM1fBrVA5OzxWRfCIJJY8/NGdw4RYhEzJoXf4IRR97w==} - engines: {node: '>=18', pnpm: '>=9.1.2'} - peerDependencies: - ethers: ^6.12.1 - viem: 2.21.58 - zksync-ethers: ^6.7.1 - peerDependenciesMeta: - ethers: - optional: true - viem: - optional: true - zksync-ethers: - optional: true - - '@lens-protocol/blockchain-bindings@0.10.2': - resolution: {integrity: sha512-WIlp30gohy/EuTD+Oqb2ACftpIkBE3wOC1WgiaFeu1ybpnIY0PnUn0hAQeecG6TIekhP3VvMXK82BXppsv2Nhw==} - - '@lens-protocol/client@2.2.0': - resolution: {integrity: sha512-UU+8ICeUmOsGEUQcaG/GdpX+y2MTMrHaM9zvZmm3AeHqnwpC3WPO1AiouWuXcXV3XKdaG4ZizPVsXD5Kwqt87Q==} - engines: {node: '>=18 <21'} - peerDependencies: - '@lens-protocol/metadata': ^1.0.0 - peerDependenciesMeta: - '@lens-protocol/metadata': - optional: true - - '@lens-protocol/domain@0.12.0': - resolution: {integrity: sha512-uyCuHstIPq3vtNkxOFiDah/EfNMjppHDOXnbnstDLpXD7xXZInYtdDqd0ENtg2j+0egGqHwvQJXciSDqGBJzmA==} - peerDependencies: - '@faker-js/faker': ^7.6.0 - '@jest/globals': ^29.7.0 - jest-mock-extended: ^3.0.5 - jest-when: ^3.6.0 - wait-for-expect: ^3.0.2 - peerDependenciesMeta: - '@faker-js/faker': - optional: true - '@jest/globals': - optional: true - jest-mock-extended: - optional: true - jest-when: - optional: true - wait-for-expect: - optional: true - - '@lens-protocol/gated-content@0.5.1': - resolution: {integrity: sha512-rXD0/lkdFIGrwi7+LLgxYwb1Bbsnbi3XouUxfXbqBD32YwKkpYRNb0EfYcB3HZOQv9vmeTTlyrozNKxWoCBJ3A==} - peerDependencies: - '@ethersproject/abi': ^5.7.0 - '@ethersproject/address': ^5.7.0 - '@ethersproject/bignumber': ^5.7.0 - '@ethersproject/contracts': ^5.7.0 - '@ethersproject/hash': ^5.7.0 - '@ethersproject/providers': ^5.7.2 - '@ethersproject/wallet': ^5.7.0 - '@lens-protocol/metadata': ^1.0.0 - zod: ^3.22.0 - - '@lens-protocol/metadata@1.2.0': - resolution: {integrity: sha512-fUB8+GvYiVt1uMqYJi/iN/aw/lzE+oEfpTjraTI87MqWPgYubbx0vFySjJs7uAdI7oftczvlwhthmMUl5DDuGA==} - engines: {node: '>=18 <21'} - peerDependencies: - zod: ^3.22.3 - peerDependenciesMeta: - zod: - optional: true - - '@lens-protocol/shared-kernel@0.12.0': - resolution: {integrity: sha512-+trBZPjGDSRMVafZF6jXcfKc8UVHr1bVRjxeAVO1ZpR7zWfampJhxMO+7jbmmhvmYmf5Losp7Ffq4//szKloaA==} - - '@lens-protocol/storage@0.8.1': - resolution: {integrity: sha512-9nOf8wnDEYAd6Jjoqw5kM7YvZ+g1Y9LfhLfP0ZcAl/nx3uPWBO0cT7GSZWBXAwQ7ayW6Kno5P+vFoBFEaNVVLQ==} - - '@lerna/create@8.1.5': - resolution: {integrity: sha512-Ku8yTGgeumayvMr8sml72EPb6WaoJhRjMTkMZrKSJtcLNDBlDpKwyUxDxNTBNBRUYWUuJCnj7eUH7pDNuc9odQ==} - engines: {node: '>=18.0.0'} - - '@lifi/data-types@5.15.5': - resolution: {integrity: sha512-nMlXxVZTClaMNS1fty6BV7E+gyKFnOgYAIMQ1kAJLv97TdLWBwQxUVDWPI5zJKKIT/Y14PJ7H6ONx+5Gq0kRGw==} - - '@lifi/sdk@3.4.1': - resolution: {integrity: sha512-8jctwg+EYj4AFhfLCQbkz9TUwE+8AZtWxfCTSgzl2FBWwgPBgnK4l0OWZ7HejZSt5BXtxtytk2JAphhHtvtCag==} - peerDependencies: - '@solana/wallet-adapter-base': ^0.9.0 - '@solana/web3.js': ^1.93.0 - viem: 2.21.58 - - '@lifi/types@16.3.0': - resolution: {integrity: sha512-rYMdXRdNOyJb5tI5CXfqxU4k62GiJrElx0DEZ8ZRFYFtljg69X6hrMKER1wVWkRpcB67Ca8SKebLnufy7qCaTw==} - - '@lightprotocol/compressed-token@0.17.1': - resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} - peerDependencies: - '@lightprotocol/stateless.js': 0.17.1 - - '@lightprotocol/stateless.js@0.17.1': - resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} - - '@lit-labs/ssr-dom-shim@1.3.0': - resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} - - '@lit-protocol/access-control-conditions@2.1.62': - resolution: {integrity: sha512-nP+iqiLUzQa6bfZL9hM9a+s+YVW21HoHkHP7s2E11VFQmucdnJmUUr7Aw46SK/4yClTjLb6RuHyfIPvCdmIKhQ==} - - '@lit-protocol/auth-browser@2.1.62': - resolution: {integrity: sha512-/4BTl0omR+JUCyJJc93FCiygSn/4ldrbeBuzWYQzuOFh2f6fcY1GJe3ttEoSJUfwu7OblW86YpWAT65b56rACA==} - - '@lit-protocol/bls-sdk@2.1.62': - resolution: {integrity: sha512-UjNjycoNXOEoLH/foIJx1L9PLL5OxmHcCD/mFXr4KSeQV/v4srvGNpY/4ng7+k9sJEbvwRwv+FB07ng3/Ihacg==} - - '@lit-protocol/constants@2.1.62': - resolution: {integrity: sha512-4CigP3GS7Cxpa9RXT1twCCvYI5wvfo1UAMbdrjoDgM9VMDtpvSrmlG8AwC9yMoqPM6409BYcgGI9LDGzUjNUjg==} - - '@lit-protocol/crypto@2.1.62': - resolution: {integrity: sha512-pWte+VQOPmSFvfoMxvobmj5JjkGSD44XMkkTXGubpGTBr27hK9CuDxpVHTsI9NsGFSJRdPBpRou+YD5I22yDiA==} - - '@lit-protocol/ecdsa-sdk@2.1.62': - resolution: {integrity: sha512-VWYAQh31e5Vu6YXvw7iDQja/f2Je6Obj8VoXLweWWfSpUnKqe1JJKGDLxOAuQUT3ZSaX7bYrq7hLIJdwdWmJQw==} - - '@lit-protocol/encryption@2.1.62': - resolution: {integrity: sha512-Nmte/UINgc+YVlA3RewhW+1SFnKcSikd94HlBxS+TX9yb2KBUO6oKNjTQSGX4P/KD3zBxaFlbY8+jrWeYR1aQQ==} - - '@lit-protocol/lit-third-party-libs@2.1.62': - resolution: {integrity: sha512-js8Z3uG4v30Dw9HNqnjxkzMcB3cp3UcF6tfsWGo99+g5OqqKnkCDbb4IXeqnGbslVPn6ll6XouRQPmCcuzeGaw==} - - '@lit-protocol/misc-browser@2.1.62': - resolution: {integrity: sha512-2NX//tUe5ChrWCN4Msi4RE8DlYjTMGqyPYJHS86r7nKHG7sHSPCucn84LiTmVGA3DVKzspeGJdMbEF/W8Ogn6w==} - - '@lit-protocol/misc@2.1.62': - resolution: {integrity: sha512-i6A/kxiJQgy8BZJGH7H8V2kxqOA2xboAjH2BzAbE/pMezfHG7wybkXT9cnXnXOZsAnuGnOKd93u+j7bskuDd2w==} - - '@lit-protocol/nacl@2.1.62': - resolution: {integrity: sha512-0v9fa6Sd4xphjlYMZ9L8TTyR7G4YLvp323E8OJ76giuaPla4HXuwSiGMzUOaC6NKraArSrd54CKkHJ/bxEqVDA==} - - '@lit-protocol/node-client@2.1.62': - resolution: {integrity: sha512-rLEUleDoJ+AATZfWNWXvy7UdSrUXMyCjpyB5bevVfk9YjIa5rd9BBXdFENCIA+9kLgVOgtND/R1PpEI/vZkMmw==} - - '@lit-protocol/types@2.1.62': - resolution: {integrity: sha512-DoIOmbI+Bg3zLWzqx4fLv1vW3k1sbDof/fxslHsLt5aX/MXHSZVKTJb+jWgNVcQ4ba+YLqgoKaPb1i58DMvCPw==} - - '@lit-protocol/uint8arrays@2.1.62': - resolution: {integrity: sha512-Q9Leppzyb9Y2jwe+i8btAUkTXqgnu21PFql83v6N70dkELSC+fKBzRSRqUpFqruW7dcrG8mNWsOCQbQ0kL/w/w==} - - '@lit/reactive-element@1.6.3': - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} - - '@liuli-util/fs-extra@0.1.0': - resolution: {integrity: sha512-eaAyDyMGT23QuRGbITVY3SOJff3G9ekAAyGqB9joAnTBmqvFN+9a1FazOdO70G6IUqgpKV451eBHYSRcOJ/FNQ==} - - '@lukeed/csprng@1.1.0': - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - - '@massalabs/massa-web3@5.1.1': - resolution: {integrity: sha512-vjoEjyoe15PN4+d8gk/UEMT59FxefitwK75ScTqQHboYRoWjGysYz80dSYbP1vQdxxeag4ZzW0OaWvaOneQqww==} - - '@mdx-js/mdx@3.1.0': - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - - '@mdx-js/react@3.0.1': - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@mermaid-js/parser@0.3.0': - resolution: {integrity: sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==} - - '@metaplex-foundation/beet-solana@0.3.1': - resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} - - '@metaplex-foundation/beet-solana@0.4.0': - resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} - - '@metaplex-foundation/beet-solana@0.4.1': - resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} - - '@metaplex-foundation/beet@0.4.0': - resolution: {integrity: sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==} - - '@metaplex-foundation/beet@0.6.1': - resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} - - '@metaplex-foundation/beet@0.7.1': - resolution: {integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==} - - '@metaplex-foundation/beet@0.7.2': - resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} - - '@metaplex-foundation/cusper@0.0.2': - resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} - - '@metaplex-foundation/mpl-auction-house@2.5.1': - resolution: {integrity: sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==} - - '@metaplex-foundation/mpl-bubblegum@0.7.0': - resolution: {integrity: sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==} - - '@metaplex-foundation/mpl-core@1.1.1': - resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} - peerDependencies: - '@metaplex-foundation/umi': '>=0.8.2 < 1' - '@noble/hashes': ^1.3.1 - - '@metaplex-foundation/mpl-token-metadata@2.13.0': - resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} - - '@metaplex-foundation/mpl-token-metadata@3.3.0': - resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} - peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' - - '@metaplex-foundation/mpl-toolbox@0.9.4': - resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} - peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' - - '@metaplex-foundation/rustbin@0.3.5': - resolution: {integrity: sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA==} - - '@metaplex-foundation/solita@0.12.2': - resolution: {integrity: sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw==} - hasBin: true - - '@metaplex-foundation/umi-bundle-defaults@0.9.2': - resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 - - '@metaplex-foundation/umi-downloader-http@0.9.2': - resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - - '@metaplex-foundation/umi-eddsa-web3js@0.9.2': - resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 - - '@metaplex-foundation/umi-http-fetch@0.9.2': - resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - - '@metaplex-foundation/umi-options@0.8.9': - resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} - - '@metaplex-foundation/umi-program-repository@0.9.2': - resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - - '@metaplex-foundation/umi-public-keys@0.8.9': - resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} - - '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': - resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - - '@metaplex-foundation/umi-rpc-web3js@0.9.2': - resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 - - '@metaplex-foundation/umi-serializer-data-view@0.9.2': - resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - - '@metaplex-foundation/umi-serializers-core@0.8.9': - resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} - - '@metaplex-foundation/umi-serializers-encodings@0.8.9': - resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} - - '@metaplex-foundation/umi-serializers-numbers@0.8.9': - resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} - - '@metaplex-foundation/umi-serializers@0.9.0': - resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} - - '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': - resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 - - '@metaplex-foundation/umi-web3js-adapters@0.9.2': - resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 - - '@metaplex-foundation/umi@0.9.2': - resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} - - '@motionone/animation@10.18.0': - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} - - '@motionone/dom@10.18.0': - resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} - - '@motionone/easing@10.18.0': - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} - - '@motionone/generators@10.18.0': - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} - - '@motionone/svelte@10.16.4': - resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} - - '@motionone/types@10.17.1': - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} - - '@motionone/utils@10.18.0': - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} - - '@motionone/vue@10.16.4': - resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} - deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion - - '@mozilla/readability@0.5.0': - resolution: {integrity: sha512-Z+CZ3QaosfFaTqvhQsIktyGrjFjSC0Fa4EMph4mqKnWhmyoGICsV/8QK+8HpXut6zV7zwfWwqDmEjtk1Qf6EgQ==} - engines: {node: '>=14.0.0'} - - '@msgpack/msgpack@2.8.0': - resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} - engines: {node: '>= 10'} - - '@msgpack/msgpack@3.0.0-beta2': - resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} - engines: {node: '>= 14'} - - '@multiversx/sdk-bls-wasm@0.3.5': - resolution: {integrity: sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw==} - engines: {node: '>=8.9.0'} - - '@multiversx/sdk-core@13.15.0': - resolution: {integrity: sha512-5RRLMxSDd0XZGopIrPsWLbA8nWxC7WQYjea8/jPvkRApLyggheQU8gaC6ZSgSE0EBrSHl+oC3+YH8nbVayZ2gw==} - peerDependencies: - bignumber.js: ^9.0.1 - protobufjs: ^7.2.6 - - '@multiversx/sdk-transaction-decoder@1.0.2': - resolution: {integrity: sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==} - - '@mysten/bcs@1.2.1': - resolution: {integrity: sha512-RMSaUsNb8oR0rTRVIOOcyoEVJqQi6DLvMXN+7mvDcki12FJFQ0lF89zQa7AV7cIurWlDQfJ8VIbCuRDyK+955A==} - - '@mysten/sui@1.19.0': - resolution: {integrity: sha512-hjNCArz7upZaGZNNmMeQRKSlQK73eN+p8MlKJvlZpx/6gorK0WWFWWjEcIyJndkIDbLb06nbQbWIWZ8KoI036Q==} - engines: {node: '>=18'} - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - - '@near-js/accounts@1.3.1': - resolution: {integrity: sha512-LAUN5L31JKtuXD9xS6D98GLtjG8KL9z761RvTYH6FMAwTFiyPed2M65mKNThGj3Zq46vWRGML0rJ2rlnXvewrA==} - - '@near-js/crypto@0.0.3': - resolution: {integrity: sha512-3WC2A1a1cH8Cqrx+0iDjp1ASEEhxN/KHEMENYb0KZH6Hp5bXIY7Akt4quC7JlgJS5ESvEiLa40tS5h0zAhBWGw==} - - '@near-js/crypto@0.0.4': - resolution: {integrity: sha512-2mSIVv6mZway1rQvmkktrXAFoUvy7POjrHNH3LekKZCMCs7qMM/23Hz2+APgxZPqoV2kjarSNOEYJjxO7zQ/rQ==} - - '@near-js/crypto@1.4.1': - resolution: {integrity: sha512-hbricJD0H8nwu63Zw16UZQg3ms2W9NwDBsLt3OEtudTcu9q1MRrVZWc7ATjdmTvhkcgmouEFc6oLBsOxnmSLCA==} - - '@near-js/keystores-browser@0.0.3': - resolution: {integrity: sha512-Ve/JQ1SBxdNk3B49lElJ8Y54AoBY+yOStLvdnUIpe2FBOczzwDCkcnPcMDV0NMwVlHpEnOWICWHbRbAkI5Vs+A==} - - '@near-js/keystores-browser@0.2.1': - resolution: {integrity: sha512-wF7UUDccnkVxdWqVgladupiXkrBmxNK9ilZg6zg9a11xtrDUpnjmWF4ON4tl1lJWF0XdTJmGdOrgOQZQDBQ79g==} - - '@near-js/keystores-node@0.1.1': - resolution: {integrity: sha512-ht69dVB0IAX2RckOlBCCTxl7e8X29EYqgL4KE83Sg+cAwsQctAjVLpor5RbgJhg1iYY5BhIK5JgI0pTOJRAHxA==} - - '@near-js/keystores@0.0.3': - resolution: {integrity: sha512-mnwLYUt4Td8u1I4QE1FBx2d9hMt3ofiriE93FfOluJ4XiqRqVFakFYiHg6pExg5iEkej/sXugBUFeQ4QizUnew==} - - '@near-js/keystores@0.0.4': - resolution: {integrity: sha512-+vKafmDpQGrz5py1liot2hYSjPGXwihveeN+BL11aJlLqZnWBgYJUWCXG+uyGjGXZORuy2hzkKK6Hi+lbKOfVA==} - - '@near-js/keystores@0.2.1': - resolution: {integrity: sha512-KTeqSB+gx5LZNC9VGtHDe+aEiJts6e3nctMnnn/gqIgvW7KJ+BzcmTZZpxCmQLcy+s7hHSpzmyTVRkaCuYjCcQ==} - - '@near-js/providers@0.0.4': - resolution: {integrity: sha512-g/2pJTYmsIlTW4mGqeRlqDN9pZeN+1E2/wfoMIf3p++boBVxVlaSebtQgawXAf2lkfhb9RqXz5pHqewXIkTBSw==} - - '@near-js/providers@1.0.1': - resolution: {integrity: sha512-a1rU+JjTes/fdpnP/SLRQuWAK80os1DoHw2sszg/ccA9byTdI/CM6eKinrWJrO5i86IARfigOgjCJhrzPscvuQ==} - - '@near-js/signers@0.0.3': - resolution: {integrity: sha512-u1R+DDIua5PY1PDFnpVYqdMgQ7c4dyeZsfqMjE7CtgzdqupgTYCXzJjBubqMlAyAx843PoXmLt6CSSKcMm0WUA==} - - '@near-js/signers@0.0.4': - resolution: {integrity: sha512-xCglo3U/WIGsz/izPGFMegS5Q3PxOHYB8a1E7RtVhNm5QdqTlQldLCm/BuMg2G/u1l1ZZ0wdvkqRTG9joauf3Q==} - - '@near-js/signers@0.2.1': - resolution: {integrity: sha512-l1PnUy4e8NQe5AAHs7mEuWbbUt0rrsZLtcK1UlFaA16MKZmxXdHLMBfUmzyMA4bGzwkyUyGtIebkR+KjBfpEog==} - - '@near-js/transactions@0.1.0': - resolution: {integrity: sha512-OrrDFqhX0rtH+6MV3U3iS+zmzcPQI+L4GJi9na4Uf8FgpaVPF0mtSmVrpUrS5CC3LwWCzcYF833xGYbXOV4Kfg==} - - '@near-js/transactions@0.1.1': - resolution: {integrity: sha512-Fk83oLLFK7nz4thawpdv9bGyMVQ2i48iUtZEVYhuuuqevl17tSXMlhle9Me1ZbNyguJG/cWPdNybe1UMKpyGxA==} - - '@near-js/transactions@1.3.1': - resolution: {integrity: sha512-kL9hxUqBr+tILQHFsh5T/bz3UkJrAq5tnyFqh0xf+7qGXZuRIPfuW/HMq4M6wFw0MGi/8ycmDT3yTQFH7PzZqw==} - - '@near-js/types@0.0.3': - resolution: {integrity: sha512-gC3iGUT+r2JjVsE31YharT+voat79ToMUMLCGozHjp/R/UW1M2z4hdpqTUoeWUBGBJuVc810gNTneHGx0jvzwQ==} - - '@near-js/types@0.0.4': - resolution: {integrity: sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg==} - - '@near-js/types@0.3.1': - resolution: {integrity: sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==} - - '@near-js/utils@0.0.3': - resolution: {integrity: sha512-J72n/EL0VfLRRb4xNUF4rmVrdzMkcmkwJOhBZSTWz3PAZ8LqNeU9ZConPfMvEr6lwdaD33ZuVv70DN6IIjPr1A==} - - '@near-js/utils@0.0.4': - resolution: {integrity: sha512-mPUEPJbTCMicGitjEGvQqOe8AS7O4KkRCxqd0xuE/X6gXF1jz1pYMZn4lNUeUz2C84YnVSGLAM0o9zcN6Y4hiA==} - - '@near-js/utils@1.0.1': - resolution: {integrity: sha512-MzCAspVJJLrURnSbq059s6cWon2/qbbBVl+Ib1yBOMTs/6EuJ7GRvuSmtmSB7l9Hjjmz8Imn1aB2q3RVYZSbrA==} - - '@near-js/wallet-account@1.3.1': - resolution: {integrity: sha512-POOKarJnYsTK0zEXygm43ecGlraPl5qagQHl+By5bk0zQFgeKaoFIJK/n04xUoGBhZTBIVp1/q7q3O1pB57hqg==} - - '@near-wallet-selector/core@7.9.3': - resolution: {integrity: sha512-SNIgLnI/LeU1mwBHc5wcyOrVAqhWmFXJfVIfB1P16ziH3EKMsbs/gxcKUSPuvDagm9dZm11k+FA7bxSspavibA==} - peerDependencies: - near-api-js: ^0.44.2 || ^1.0.0 - - '@nestjs/axios@3.1.1': - resolution: {integrity: sha512-ySoxrzqX80P1q6LKLKGcgyBd2utg4gbC+4FsJNpXYvILorMlxss/ECNogD9EXLCE4JS5exVFD5ez0nK5hXcNTQ==} - peerDependencies: - '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - axios: ^1.3.1 - rxjs: ^6.0.0 || ^7.0.0 - - '@nestjs/common@10.4.6': - resolution: {integrity: sha512-KkezkZvU9poWaNq4L+lNvx+386hpOxPJkfXBBeSMrcqBOx8kVr36TGN2uYkF4Ta4zNu1KbCjmZbc0rhHSg296g==} - peerDependencies: - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - - '@nestjs/core@10.4.6': - resolution: {integrity: sha512-zXVPxCNRfO6gAy0yvEDjUxE/8gfZICJFpsl2lZAUH31bPb6m+tXuhUq2mVCTEltyMYQ+DYtRe+fEYM2v152N1g==} - peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/microservices': ^10.0.0 - '@nestjs/platform-express': ^10.0.0 - '@nestjs/websockets': ^10.0.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true - - '@neynar/nodejs-sdk@2.8.1': - resolution: {integrity: sha512-OwFscSdoGGsgamty5wHMBdLlK4gBGiBhQP8iMbqHZUAPBuGbb8Hx4MFUxGqxq/e2l3Tulr1p32GjWD10X4C0hA==} - engines: {node: '>=19.9.0'} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/curves@1.3.0': - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} - - '@noble/curves@1.4.2': - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - - '@noble/curves@1.7.0': - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} - engines: {node: ^14.21.3 || >=16} - - '@noble/curves@1.8.0': - resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/ed25519@1.7.3': - resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} - - '@noble/hashes@1.3.0': - resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.3.3': - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.6.0': - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.6.1': - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.7.0': - resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} - engines: {node: ^14.21.3 || >=16} - - '@node-llama-cpp/linux-arm64@3.1.1': - resolution: {integrity: sha512-rrn1O9zmg8L47e16YlbGI3+Uw1Z8HCTNiBqnz+qcfH2H6HnHd1IenM1CgR9+PVODCnUXE7ErN2moto1XsOxifQ==} - engines: {node: '>=18.0.0'} - cpu: [arm64, x64] - os: [linux] - - '@node-llama-cpp/linux-armv7l@3.1.1': - resolution: {integrity: sha512-fM5dr/wmL4R3rADUOa0SnFRYYpyzsxG0akhg+qBgh0/b1jGwGM6jzBQ9AuhsgfW9tjKdpvpM2GyUDh4tHGHN5w==} - engines: {node: '>=18.0.0'} - cpu: [arm, x64] - os: [linux] - - '@node-llama-cpp/linux-x64-cuda@3.1.1': - resolution: {integrity: sha512-2435gpEI1M0gs8R0/EcpsXwkEtz1hu0waFJjQjck2KNE/Pz+DTw4T7JgWSkAS8uPS7XzzDGBXDuuK1er0ACq3w==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [linux] - - '@node-llama-cpp/linux-x64-vulkan@3.1.1': - resolution: {integrity: sha512-iSuaLDsmypv/eASW5DD09FMCCFRKgumpxdB9DHiG8oOd9CLFZle+fxql1TJx3zwtYRrsR7YkfWinjhILYfSIZw==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [linux] - - '@node-llama-cpp/linux-x64@3.1.1': - resolution: {integrity: sha512-s3VsBTrVWJgBfV5HruhfkTrnh5ykbuaCXvm1xRMpmMpnkL2tMMOrJJFJJIvrTurtGTxEvbO45O+wLU4wrVlQOw==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [linux] - - '@node-llama-cpp/mac-arm64-metal@3.1.1': - resolution: {integrity: sha512-VBVVZhF5zQ31BmmIN/dWG0k4VIWZGar8nDn0/64eLjufkdYGns6hAIssu6IDQ2HBfnq3ENgSgJTpXp7jq9Z2Ig==} - engines: {node: '>=18.0.0'} - cpu: [arm64, x64] - os: [darwin] - - '@node-llama-cpp/mac-x64@3.1.1': - resolution: {integrity: sha512-7UJDsoFpZW3ETsDG623KWZO/pyA1jfVsSPDTJjmotQN1rvXtVqt6cVN/AJ6OjHdoPdEW0u7QxD2nwxY24rRwaQ==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [darwin] - - '@node-llama-cpp/win-arm64@3.1.1': - resolution: {integrity: sha512-cflHtb0+E4HCm9nIeCGOn4TMAc9R+f2uhCwzZOV6ZMHIwbuVjt/L+3tBo3NULhKWLDSsklRdaU2qV/5elau3wg==} - engines: {node: '>=18.0.0'} - cpu: [arm64, x64] - os: [win32] - - '@node-llama-cpp/win-x64-cuda@3.1.1': - resolution: {integrity: sha512-OHk53PpJ6zfJwCUKCS/A+zFEh8JxguuYFnqqyteZoNdI9h3ggOk9QLrn1RQ1LH232Rvfu7AoqGiVgFSB8Jkz4Q==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [win32] - - '@node-llama-cpp/win-x64-vulkan@3.1.1': - resolution: {integrity: sha512-IuKmcN1LUDiQfQAGkTVdAF4J55VzC87PYjYYQNthfojFxwG8GFxK/VnngmmGXybGd6pwK8Cvymun2bNJVQKVoA==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [win32] - - '@node-llama-cpp/win-x64@3.1.1': - resolution: {integrity: sha512-/hK4+wyOe7Q3+UlM/eSmm2GkrS7FwXp+IXAo+id/PobOYEn7l5r1ntqaTgwh3xWefezD3UDSCH1OqkZ2EsVdig==} - engines: {node: '>=18.0.0'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - - '@npmcli/agent@2.2.2': - resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/arborist@7.5.3': - resolution: {integrity: sha512-7gbMdDNSYUzi0j2mpb6FoXRg3BxXWplMQZH1MZlvNjSdWFObaUz2Ssvo0Nlh2xmWks1OPo+gpsE6qxpT/5M7lQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - '@npmcli/fs@3.1.1': - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/git@5.0.8': - resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/installed-package-contents@2.1.0': - resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - '@npmcli/map-workspaces@3.0.6': - resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/metavuln-calculator@7.1.1': - resolution: {integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/name-from-folder@2.0.0': - resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/node-gyp@3.0.0': - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/package-json@5.2.0': - resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/promise-spawn@7.0.2': - resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/query@3.1.0': - resolution: {integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/redact@2.0.1': - resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/run-script@8.1.0': - resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@nrwl/devkit@19.8.14': - resolution: {integrity: sha512-Oud7BPhFNqE3/YStULn/gHyuGSw2QyxUaHXJApr+DybmYtUms7hQ+cWnY1IY+hRpdtU9ldlg8UYx+VslpS9YNQ==} - - '@nrwl/tao@19.8.14': - resolution: {integrity: sha512-zBeYzzwg43T/Z8ZtLblv0fcKuqJULttqYDekSLILThXp3UOMSerEvruhUgwddCY1jUssfLscz8vacMKISv5X4w==} - hasBin: true - - '@nuxtjs/opencollective@0.3.2': - resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true - - '@nx/devkit@19.8.14': - resolution: {integrity: sha512-A8dCGttbuqgg9P56VTb0ElD2vM5nc5g0aLnX5PSXo4SkFXwd8DV5GgwJKWB1GO9hYyEtbj4gKek0KxnCtdav4g==} - peerDependencies: - nx: '>= 19 <= 21' - - '@nx/nx-darwin-arm64@19.8.14': - resolution: {integrity: sha512-bZUFf23gAzuwVw71dR8rngye5aCR8Z/ouIo+KayjqB0LWWoi3WzO73s4S69ljftYt4n6z9wvD+Trbb1BKm2fPg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@nx/nx-darwin-x64@19.8.14': - resolution: {integrity: sha512-UXXVea8icFG/3rFwpbLYsD6O4wlyJ1STQfOdhGK1Hyuga70AUUdrjVm7HzigAQP/Sb2Nzd7155YXHzfpRPDFYA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@nx/nx-freebsd-x64@19.8.14': - resolution: {integrity: sha512-TK2xuXn+BI6hxGaRK1HRUPWeF/nOtezKSqM+6rbippfCzjES/crmp9l5nbI764MMthtUmykCyWvhEfkDca6kbA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nx/nx-linux-arm-gnueabihf@19.8.14': - resolution: {integrity: sha512-33rptyRraqaeQ2Kq6pcZKQqgnYY/7zcGH8fHXgKK7XzKk+7QuPViq+jMEUZP5E3UzZPkIYhsfmZcZqhNRvepJQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@nx/nx-linux-arm64-gnu@19.8.14': - resolution: {integrity: sha512-2E70qMKOhh7Fp4JGcRbRLvFKq0+ANVdAgSzH47plxOLygIeVAfIXRSuQbCI0EUFa5Sy6hImLaoRSB2GdgKihAw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-arm64-musl@19.8.14': - resolution: {integrity: sha512-ltty/PDWqkYgu/6Ye65d7v5nh3D6e0n3SacoKRs2Vtfz5oHYRUkSKizKIhEVfRNuHn3d9j8ve1fdcCN4SDPUBQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-x64-gnu@19.8.14': - resolution: {integrity: sha512-JzE3BuO9RCBVdgai18CCze6KUzG0AozE0TtYFxRokfSC05NU3nUhd/o62UsOl7s6Bqt/9nwrW7JC8pNDiCi9OQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-linux-x64-musl@19.8.14': - resolution: {integrity: sha512-2rPvDOQLb7Wd6YiU88FMBiLtYco0dVXF99IJBRGAWv+WTI7MNr47OyK2ze+JOsbYY1d8aOGUvckUvCCZvZKEfg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-win32-arm64-msvc@19.8.14': - resolution: {integrity: sha512-JxW+YPS+EjhUsLw9C6wtk9pQTG3psyFwxhab8y/dgk2s4AOTLyIm0XxgcCJVvB6i4uv+s1g0QXRwp6+q3IR6hg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nx/nx-win32-x64-msvc@19.8.14': - resolution: {integrity: sha512-RxiPlBWPcGSf9TzIIy62iKRdRhokXMDUsPub9DL2VdVyTMXPZQR25aY/PJeasJN1EQU74hg097LK2wSHi+vzOQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@octokit/app@15.1.2': - resolution: {integrity: sha512-6aKmKvqnJKoVK+kx0mLlBMKmQYoziPw4Rd/PWr0j65QVQlrDXlu6hGU8fmTXt7tNkf/DsubdIaTT4fkoWzCh5g==} - engines: {node: '>= 18'} - - '@octokit/auth-app@7.1.4': - resolution: {integrity: sha512-5F+3l/maq9JfWQ4bV28jT2G/K8eu9OJ317yzXPTGe4Kw+lKDhFaS4dQ3Ltmb6xImKxfCQdqDqMXODhc9YLipLw==} - engines: {node: '>= 18'} - - '@octokit/auth-oauth-app@8.1.2': - resolution: {integrity: sha512-3woNZgq5/S6RS+9ZTq+JdymxVr7E0s4EYxF20ugQvgX3pomdPUL5r/XdTY9wALoBM2eHVy4ettr5fKpatyTyHw==} - engines: {node: '>= 18'} - - '@octokit/auth-oauth-device@7.1.2': - resolution: {integrity: sha512-gTOIzDeV36OhVfxCl69FmvJix7tJIiU6dlxuzLVAzle7fYfO8UDyddr9B+o4CFQVaMBLMGZ9ak2CWMYcGeZnPw==} - engines: {node: '>= 18'} - - '@octokit/auth-oauth-user@5.1.2': - resolution: {integrity: sha512-PgVDDPJgZYb3qSEXK4moksA23tfn68zwSAsQKZ1uH6IV9IaNEYx35OXXI80STQaLYnmEE86AgU0tC1YkM4WjsA==} - engines: {node: '>= 18'} - - '@octokit/auth-token@3.0.4': - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} - - '@octokit/auth-token@4.0.0': - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - - '@octokit/auth-token@5.1.1': - resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} - engines: {node: '>= 18'} - - '@octokit/auth-unauthenticated@6.1.1': - resolution: {integrity: sha512-bGXqdN6RhSFHvpPq46SL8sN+F3odQ6oMNLWc875IgoqcC3qus+fOL2th6Tkl94wvdSTy8/OeHzWy/lZebmnhog==} - engines: {node: '>= 18'} - - '@octokit/core@4.2.4': - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} - - '@octokit/core@5.2.0': - resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} - engines: {node: '>= 18'} - - '@octokit/core@6.1.3': - resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} - engines: {node: '>= 18'} - - '@octokit/endpoint@10.1.2': - resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} - engines: {node: '>= 18'} - - '@octokit/endpoint@7.0.6': - resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} - engines: {node: '>= 14'} - - '@octokit/endpoint@9.0.5': - resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} - engines: {node: '>= 18'} - - '@octokit/graphql@5.0.6': - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} - - '@octokit/graphql@7.1.0': - resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} - engines: {node: '>= 18'} - - '@octokit/graphql@8.1.2': - resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} - engines: {node: '>= 18'} - - '@octokit/oauth-app@7.1.5': - resolution: {integrity: sha512-/Y2MiwWDlGUK4blKKfjJiwjzu/FzwKTTTfTZAAQ0QbdBIDEGJPWhOFH6muSN86zaa4tNheB4YS3oWIR2e4ydzA==} - engines: {node: '>= 18'} - - '@octokit/oauth-authorization-url@7.1.1': - resolution: {integrity: sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==} - engines: {node: '>= 18'} - - '@octokit/oauth-methods@5.1.3': - resolution: {integrity: sha512-M+bDBi5H8FnH0xhCTg0m9hvcnppdDnxUqbZyOkxlLblKpLAR+eT2nbDPvJDp0eLrvJWA1I8OX0KHf/sBMQARRA==} - engines: {node: '>= 18'} - - '@octokit/openapi-types@18.1.1': - resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} - - '@octokit/openapi-types@20.0.0': - resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} - - '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} - - '@octokit/openapi-webhooks-types@8.5.1': - resolution: {integrity: sha512-i3h1b5zpGSB39ffBbYdSGuAd0NhBAwPyA3QV3LYi/lx4lsbZiu7u2UHgXVUR6EpvOI8REOuVh1DZTRfHoJDvuQ==} - - '@octokit/plugin-enterprise-rest@6.0.1': - resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} - - '@octokit/plugin-paginate-graphql@5.2.4': - resolution: {integrity: sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-paginate-rest@11.3.1': - resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-paginate-rest@11.4.0': - resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-paginate-rest@6.1.2': - resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=4' - - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-request-log@4.0.1': - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-rest-endpoint-methods@13.2.2': - resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^5 - - '@octokit/plugin-rest-endpoint-methods@13.3.0': - resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-rest-endpoint-methods@7.2.3': - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-retry@7.1.3': - resolution: {integrity: sha512-8nKOXvYWnzv89gSyIvgFHmCBAxfQAOPRlkacUHL9r5oWtp5Whxl8Skb2n3ACZd+X6cYijD6uvmrQuPH/UCL5zQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-throttling@9.4.0': - resolution: {integrity: sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^6.1.3 - - '@octokit/request-error@3.0.3': - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} - - '@octokit/request-error@5.1.0': - resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} - engines: {node: '>= 18'} - - '@octokit/request-error@6.1.6': - resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} - engines: {node: '>= 18'} - - '@octokit/request@6.2.8': - resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} - engines: {node: '>= 14'} - - '@octokit/request@8.4.0': - resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} - engines: {node: '>= 18'} - - '@octokit/request@9.1.4': - resolution: {integrity: sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==} - engines: {node: '>= 18'} - - '@octokit/rest@19.0.11': - resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==} - engines: {node: '>= 14'} - - '@octokit/rest@20.1.1': - resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==} - engines: {node: '>= 18'} - - '@octokit/tsconfig@1.0.2': - resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} - - '@octokit/types@10.0.0': - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} - - '@octokit/types@12.6.0': - resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - - '@octokit/types@13.7.0': - resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} - - '@octokit/types@9.3.2': - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - - '@octokit/webhooks-methods@5.1.0': - resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==} - engines: {node: '>= 18'} - - '@octokit/webhooks@13.4.2': - resolution: {integrity: sha512-fakbgkCScapQXPxyqx2jZs/Y3jGlyezwUp7ATL7oLAGJ0+SqBKWKstoKZpiQ+REeHutKpYjY9UtxdLSurwl2Tg==} - engines: {node: '>= 18'} - - '@onflow/config@1.5.1': - resolution: {integrity: sha512-BmD67EhZEqMRePa3y/WIpC5hH/YF9gV9uv5bPSN39P3laYxd93Ojhdf6v0fXkjO/d3WaHylLPoXYgpW/g5seWA==} - - '@onflow/fcl-core@1.13.1': - resolution: {integrity: sha512-kXej2sLWjY2MVY42omIKiZz0v13V2MTwZV1dwf4xERqgFX0WvsG5ZGyVY0y4kp8mNiUXe7pZmtRhynu2TJGnJw==} - - '@onflow/fcl-wc@5.5.1': - resolution: {integrity: sha512-c83yjATlOTBjGzGlSXUiBJR576L8/oGiiL7b3ymi5jbl47RhubPPiH4Ix+DoJqyDuRtpk5Lim2vodawmH/aiWQ==} - peerDependencies: - '@onflow/fcl-core': 1.13.1 - - '@onflow/fcl@1.13.1': - resolution: {integrity: sha512-96Fe2SsnUqPSIaSxsaL7Fuz3wQUxPfV5eexz0JufWhyQ6NvwDu9bvD/ntNk1ACJkIANlEIzP+sq4Nfz93uINfw==} - - '@onflow/interaction@0.0.11': - resolution: {integrity: sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA==} - - '@onflow/rlp@1.2.3': - resolution: {integrity: sha512-Mm1jSzDhdTofMGhg3NtUD8uKntj7u1dSMr+Q4VwOw2YQhwGTGJrzsHc7qgkJxwDnjU0Ra8VQfqd54bZzX0R2aQ==} - - '@onflow/sdk@1.5.5': - resolution: {integrity: sha512-79h56lYB/4vi1Tn+QrICUpQZ0Jh8O5d8I0IC/3adAf2zU8xfxvkypw7Tfx58Zr03vip+0h83Ri3DwyZpqIM2sw==} - - '@onflow/transport-http@1.10.4': - resolution: {integrity: sha512-yZNqNEISnCaP7bsB+pwBjHT7+AYjADxUQpj8SccrTWnWlM6LEDIcNVCr8eBzrANug3o2Y1LuqSOhMiWYtbXs7w==} - - '@onflow/typedefs@1.4.0': - resolution: {integrity: sha512-7b4C3F4Ztayx6XdQz/7YoHMzZ6kzy37dLxdVCV/PAsAunq9Jfu32HQaf8a0NCk0L0aM7FS2zT1Om4k7b5KP4Xg==} - - '@onflow/types@1.4.1': - resolution: {integrity: sha512-oKKaNTPfb9OJos4C6RoK3sql9Bx8mi+8ytTc7wLJbjv+n6YUov2zRGkGsPzj2QxL2Xf48CLYtPNn7cBNr3v39w==} - - '@onflow/util-actor@1.3.4': - resolution: {integrity: sha512-BQeFdy0obs2x+XTEkss7MjuasS7gCfIStwGsgpH0aG3siBu+IsMYPiDdrHOeYS2Jn/pSFXF5R85NYrnMvlDhlA==} - - '@onflow/util-address@1.2.3': - resolution: {integrity: sha512-5u1pLQT6MmTlRQLv8zVJP/iOkgytvpzK+32nXcJ29XE0y7YI6GLrFfgKGBIRsiqiSLp7SU6XI5RukEJEblmwOw==} - - '@onflow/util-invariant@1.2.4': - resolution: {integrity: sha512-U4D30lrAxSgqTPQsIvC3gPDoXVxuhLS9TZk4WxEvNfcQrI6VYKvWRe4m/5mUrc4kpE+ntXZmnbs+DUM7oLlkcg==} - - '@onflow/util-logger@1.3.3': - resolution: {integrity: sha512-eivdbF7cKNjTL2nuvI3pjDavDDfTXRq4pJtJpkI8hJMz0XJb84o7D5CLPcDRId//1Kc/qoqM/driHz5A4J52Qw==} - peerDependencies: - '@onflow/util-config': '>1.1.1' - peerDependenciesMeta: - '@onflow/util-config': - optional: true - - '@onflow/util-rpc@0.0.2': - resolution: {integrity: sha512-UFYT99rdHEFOpfG5A/lFJFQBw4Q0b7MKN7lWTwYf/AU+bVm5zgNJ/V4Z9CXOSnA55ztLauYdk+eWldbhC9pqiw==} - - '@onflow/util-semver@1.0.3': - resolution: {integrity: sha512-c604ewWCXUT1WpqeOiblNi3YWOQTGx3UgRWNXbRTD9K17Fh2DaXBTHYVu7FSreGwPGarU0T3iTBWkuuWJXSGwA==} - - '@onflow/util-template@1.2.3': - resolution: {integrity: sha512-yNF7mI5L1y6yJHL+HxmTgIdd/oF1HD/kzjzZgjOyAvk+mLXzML+sWkqRSoIYcETbQ0w6cdNg3xvzZgTLuLIK3A==} - - '@onflow/util-uid@1.2.3': - resolution: {integrity: sha512-gCTVvBBgDcZFX6SGyHPwoPVbK4e9sp0DC1kaQ0cgAt83YgodqiBiJLlwMBYNKuL03zSI6Ic5/TJVMVsruG7l9w==} - - '@onsol/tldparser@0.6.7': - resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} - engines: {node: '>=14'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - bn.js: ^5.2.1 - borsh: ^0.7.0 - buffer: 6.0.1 - - '@openapitools/openapi-generator-cli@2.15.3': - resolution: {integrity: sha512-2UBnsDlMt36thhdXxisbA1qReVtbCaw+NCvXoslRXlaJBL4qkAmZUhNeDLNu3LCbwA2PASMWhJSqeLwgwMCitw==} - engines: {node: '>=16'} - hasBin: true - - '@opendocsg/pdf2md@0.1.32': - resolution: {integrity: sha512-UK4qVuesmUcpPZXMeO8FwRqpCNwJRBTHcae4j+3Mr3bxrNqilZIIowdrzgcgn8fSQ2Dg/P4/0NoPkxAvf9D5rw==} - hasBin: true - - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - - '@openzeppelin/contracts@5.2.0': - resolution: {integrity: sha512-bxjNie5z89W1Ea0NZLZluFh8PrFNn9DH8DQlujEok2yjsOlraUPKID5p1Wk3qdNbf6XkQ1Os2RvfiHrrXLHWKA==} - - '@orca-so/common-sdk@0.6.4': - resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} - peerDependencies: - '@solana/spl-token': ^0.4.1 - '@solana/web3.js': ^1.90.0 - decimal.js: ^10.4.3 - - '@orca-so/whirlpools-sdk@0.13.13': - resolution: {integrity: sha512-S3ovmnihBdZ5cmn3ylvJv+kAIUcGX5Y5RSWzv/WvF6etv/tLuO8FKc5mYxVenTa/NG78turTMbhujDdfGaahDw==} - peerDependencies: - '@coral-xyz/anchor': ~0.29.0 - '@orca-so/common-sdk': 0.6.4 - '@solana/spl-token': ^0.4.8 - '@solana/web3.js': ^1.90.0 - decimal.js: ^10.4.3 - - '@parcel/watcher-android-arm64@2.5.0': - resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.0': - resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.0': - resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.0': - resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.0': - resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm-musl@2.5.0': - resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.5.0': - resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.5.0': - resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.5.0': - resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.5.0': - resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.5.0': - resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.0': - resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.0': - resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.0': - resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} - engines: {node: '>= 10.0.0'} - - '@passwordless-id/webauthn@2.1.2': - resolution: {integrity: sha512-Ahj+A3O0gP3EsLV4FRXjfhbzzP895d8CnHKmhT1hkAz1zLSBCRE/iXJsasL1kwGoriDFLJ+YtO6x1rok4SZH2g==} - - '@peculiar/asn1-schema@2.3.15': - resolution: {integrity: sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==} - - '@peculiar/json-schema@1.1.12': - resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} - engines: {node: '>=8.0.0'} - - '@peculiar/webcrypto@1.5.0': - resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} - engines: {node: '>=10.12.0'} - - '@phala/dstack-sdk@0.1.7': - resolution: {integrity: sha512-/+8S6XpAnN9X6pCiA7eBD+QtEWOtYhlN7Osrf9K59G6E8q6SdXUbJzuNpNBHtlZV+Pm7zm4zOhnwnpvShLD0Xg==} - engines: {node: '>=18.0.0'} - - '@pinata/sdk@2.1.0': - resolution: {integrity: sha512-hkS0tcKtsjf9xhsEBs2Nbey5s+Db7x5rlOH9TaWHBXkJ7IwwOs2xnEDigNaxAHKjYAwcw+m2hzpO5QgOfeF7Zw==} - deprecated: Please install the new IPFS SDK at pinata-web3. More information at https://docs.pinata.cloud/web3/sdk - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pm2/agent@2.0.4': - resolution: {integrity: sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA==} - - '@pm2/io@6.0.1': - resolution: {integrity: sha512-KiA+shC6sULQAr9mGZ1pg+6KVW9MF8NpG99x26Lf/082/Qy8qsTCtnJy+HQReW1A9Rdf0C/404cz0RZGZro+IA==} - engines: {node: '>=6.0'} - - '@pm2/js-api@0.8.0': - resolution: {integrity: sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA==} - engines: {node: '>=4.0'} - - '@pm2/pm2-version-check@1.0.4': - resolution: {integrity: sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==} - - '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - - '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} - - '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} - engines: {node: '>=12'} - - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - - '@polkadot-api/client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-0fqK6pUKcGHSG2pBvY+gfSS+1mMdjd/qRygAcKI5d05tKsnZLRnmhb9laDguKmGEIB0Bz9vQqNK3gIN/cfvVwg==} - peerDependencies: - rxjs: '>=7.8.0' - - '@polkadot-api/json-rpc-provider-proxy@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-0hZ8vtjcsyCX8AyqP2sqUHa1TFFfxGWmlXJkit0Nqp9b32MwZqn5eaUAiV2rNuEpoglKOdKnkGtUF8t5MoodKw==} - - '@polkadot-api/json-rpc-provider@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-EaUS9Fc3wsiUr6ZS43PQqaRScW7kM6DYbuM/ou0aYjm8N9MBqgDbGm2oL6RE1vAVmOfEuHcXZuZkhzWtyvQUtA==} - - '@polkadot-api/metadata-builders@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-BD7rruxChL1VXt0icC2gD45OtT9ofJlql0qIllHSRYgama1CR2Owt+ApInQxB+lWqM+xNOznZRpj8CXNDvKIMg==} - - '@polkadot-api/substrate-bindings@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-N4vdrZopbsw8k57uG58ofO7nLXM4Ai7835XqakN27MkjXMp5H830A1KJE0L9sGQR7ukOCDEIHHcwXVrzmJ/PBg==} - - '@polkadot-api/substrate-client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-lcdvd2ssUmB1CPzF8s2dnNOqbrDa+nxaaGbuts+Vo8yjgSKwds2Lo7Oq+imZN4VKW7t9+uaVcKFLMF7PdH0RWw==} - - '@polkadot-api/utils@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - resolution: {integrity: sha512-0CYaCjfLQJTCRCiYvZ81OncHXEKPzAexCMoVloR+v2nl/O2JRya/361MtPkeNLC6XBoaEgLAG9pWQpH3WePzsw==} - - '@polkadot/api-augment@10.13.1': - resolution: {integrity: sha512-IAKaCp19QxgOG4HKk9RAgUgC/VNVqymZ2GXfMNOZWImZhxRIbrK+raH5vN2MbWwtVHpjxyXvGsd1RRhnohI33A==} - engines: {node: '>=18'} - - '@polkadot/api-base@10.13.1': - resolution: {integrity: sha512-Okrw5hjtEjqSMOG08J6qqEwlUQujTVClvY1/eZkzKwNzPelWrtV6vqfyJklB7zVhenlxfxqhZKKcY7zWSW/q5Q==} - engines: {node: '>=18'} - - '@polkadot/api-derive@10.13.1': - resolution: {integrity: sha512-ef0H0GeCZ4q5Om+c61eLLLL29UxFC2/u/k8V1K2JOIU+2wD5LF7sjAoV09CBMKKHfkLenRckVk2ukm4rBqFRpg==} - engines: {node: '>=18'} - - '@polkadot/api@10.13.1': - resolution: {integrity: sha512-YrKWR4TQR5CDyGkF0mloEUo7OsUA+bdtENpJGOtNavzOQUDEbxFE0PVzokzZfVfHhHX2CojPVmtzmmLxztyJkg==} - engines: {node: '>=18'} - - '@polkadot/keyring@12.6.2': - resolution: {integrity: sha512-O3Q7GVmRYm8q7HuB3S0+Yf/q/EB2egKRRU3fv9b3B7V+A52tKzA+vIwEmNVaD1g5FKW9oB97rmpggs0zaKFqHw==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2 - - '@polkadot/networks@12.6.2': - resolution: {integrity: sha512-1oWtZm1IvPWqvMrldVH6NI2gBoCndl5GEwx7lAuQWGr7eNL+6Bdc5K3Z9T0MzFvDGoi2/CBqjX9dRKo39pDC/w==} - engines: {node: '>=18'} - - '@polkadot/rpc-augment@10.13.1': - resolution: {integrity: sha512-iLsWUW4Jcx3DOdVrSHtN0biwxlHuTs4QN2hjJV0gd0jo7W08SXhWabZIf9mDmvUJIbR7Vk+9amzvegjRyIf5+A==} - engines: {node: '>=18'} - - '@polkadot/rpc-core@10.13.1': - resolution: {integrity: sha512-eoejSHa+/tzHm0vwic62/aptTGbph8vaBpbvLIK7gd00+rT813ROz5ckB1CqQBFB23nHRLuzzX/toY8ID3xrKw==} - engines: {node: '>=18'} - - '@polkadot/rpc-provider@10.13.1': - resolution: {integrity: sha512-oJ7tatVXYJ0L7NpNiGd69D558HG5y5ZDmH2Bp9Dd4kFTQIiV8A39SlWwWUPCjSsen9lqSvvprNLnG/VHTpenbw==} - engines: {node: '>=18'} - - '@polkadot/types-augment@10.13.1': - resolution: {integrity: sha512-TcrLhf95FNFin61qmVgOgayzQB/RqVsSg9thAso1Fh6pX4HSbvI35aGPBAn3SkA6R+9/TmtECirpSNLtIGFn0g==} - engines: {node: '>=18'} - - '@polkadot/types-codec@10.13.1': - resolution: {integrity: sha512-AiQ2Vv2lbZVxEdRCN8XSERiWlOWa2cTDLnpAId78EnCtx4HLKYQSd+Jk9Y4BgO35R79mchK4iG+w6gZ+ukG2bg==} - engines: {node: '>=18'} - - '@polkadot/types-create@10.13.1': - resolution: {integrity: sha512-Usn1jqrz35SXgCDAqSXy7mnD6j4RvB4wyzTAZipFA6DGmhwyxxIgOzlWQWDb+1PtPKo9vtMzen5IJ+7w5chIeA==} - engines: {node: '>=18'} - - '@polkadot/types-known@10.13.1': - resolution: {integrity: sha512-uHjDW05EavOT5JeU8RbiFWTgPilZ+odsCcuEYIJGmK+es3lk/Qsdns9Zb7U7NJl7eJ6OWmRtyrWsLs+bU+jjIQ==} - engines: {node: '>=18'} - - '@polkadot/types-support@10.13.1': - resolution: {integrity: sha512-4gEPfz36XRQIY7inKq0HXNVVhR6HvXtm7yrEmuBuhM86LE0lQQBkISUSgR358bdn2OFSLMxMoRNoh3kcDvdGDQ==} - engines: {node: '>=18'} - - '@polkadot/types@10.13.1': - resolution: {integrity: sha512-Hfvg1ZgJlYyzGSAVrDIpp3vullgxrjOlh/CSThd/PI4TTN1qHoPSFm2hs77k3mKkOzg+LrWsLE0P/LP2XddYcw==} - engines: {node: '>=18'} - - '@polkadot/util-crypto@12.6.2': - resolution: {integrity: sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': 12.6.2 - - '@polkadot/util@12.6.2': - resolution: {integrity: sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==} - engines: {node: '>=18'} - - '@polkadot/wasm-bridge@7.4.1': - resolution: {integrity: sha512-tdkJaV453tezBxhF39r4oeG0A39sPKGDJmN81LYLf+Fihb7astzwju+u75BRmDrHZjZIv00un3razJEWCxze6g==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - '@polkadot/x-randomvalues': '*' - - '@polkadot/wasm-crypto-asmjs@7.4.1': - resolution: {integrity: sha512-pwU8QXhUW7IberyHJIQr37IhbB6DPkCG5FhozCiNTq4vFBsFPjm9q8aZh7oX1QHQaiAZa2m2/VjIVE+FHGbvHQ==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - - '@polkadot/wasm-crypto-init@7.4.1': - resolution: {integrity: sha512-AVka33+f7MvXEEIGq5U0dhaA2SaXMXnxVCQyhJTaCnJ5bRDj0Xlm3ijwDEQUiaDql7EikbkkRtmlvs95eSUWYQ==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - '@polkadot/x-randomvalues': '*' - - '@polkadot/wasm-crypto-wasm@7.4.1': - resolution: {integrity: sha512-PE1OAoupFR0ZOV2O8tr7D1FEUAwaggzxtfs3Aa5gr+yxlSOaWUKeqsOYe1KdrcjmZVV3iINEAXxgrbzCmiuONg==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - - '@polkadot/wasm-crypto@7.4.1': - resolution: {integrity: sha512-kHN/kF7hYxm1y0WeFLWeWir6oTzvcFmR4N8fJJokR+ajYbdmrafPN+6iLgQVbhZnDdxyv9jWDuRRsDnBx8tPMQ==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - '@polkadot/x-randomvalues': '*' - - '@polkadot/wasm-util@7.4.1': - resolution: {integrity: sha512-RAcxNFf3zzpkr+LX/ItAsvj+QyM56TomJ0xjUMo4wKkHjwsxkz4dWJtx5knIgQz/OthqSDMR59VNEycQeNuXzA==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': '*' - - '@polkadot/x-bigint@12.6.2': - resolution: {integrity: sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q==} - engines: {node: '>=18'} - - '@polkadot/x-fetch@12.6.2': - resolution: {integrity: sha512-8wM/Z9JJPWN1pzSpU7XxTI1ldj/AfC8hKioBlUahZ8gUiJaOF7K9XEFCrCDLis/A1BoOu7Ne6WMx/vsJJIbDWw==} - engines: {node: '>=18'} - - '@polkadot/x-global@12.6.2': - resolution: {integrity: sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==} - engines: {node: '>=18'} - - '@polkadot/x-randomvalues@12.6.2': - resolution: {integrity: sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==} - engines: {node: '>=18'} - peerDependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': '*' - - '@polkadot/x-textdecoder@12.6.2': - resolution: {integrity: sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==} - engines: {node: '>=18'} - - '@polkadot/x-textencoder@12.6.2': - resolution: {integrity: sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==} - engines: {node: '>=18'} - - '@polkadot/x-ws@12.6.2': - resolution: {integrity: sha512-cGZWo7K5eRRQCRl2LrcyCYsrc3lRbTlixZh3AzgU8uX4wASVGRlNWi/Hf4TtHNe1ExCDmxabJzdIsABIfrr7xw==} - engines: {node: '>=18'} - - '@primuslabs/zktls-core-sdk@0.1.0': - resolution: {integrity: sha512-Jnboy9xr7NPMewPZkky7J2bCOzw0t8X1r072VlbTyR8yc+88/uFhx/LvBgIYiajiGO12DY3o1SlV4SSYZOyFOg==} - - '@project-serum/anchor@0.26.0': - resolution: {integrity: sha512-Nq+COIjE1135T7qfnOHEn7E0q39bQTgXLFk837/rgFe6Hkew9WML7eHsS+lSYD2p3OJaTiUOHTAq1lHy36oIqQ==} - engines: {node: '>=11'} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@puppeteer/browsers@0.5.0': - resolution: {integrity: sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==} - engines: {node: '>=14.1.0'} - hasBin: true - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true - - '@pythnetwork/client@2.22.0': - resolution: {integrity: sha512-Cyv23YqewKUL1pcm99jfmdetUa2aaUXjyRF9jvSeFcY895FddRu7uSWftYiaevsnx7vn4WbJgQR6ExxH+aONow==} - peerDependencies: - '@solana/web3.js': ^1.30.2 - - '@pythnetwork/hermes-client@1.3.0': - resolution: {integrity: sha512-SneB+LJSD6pNnG2JUuAgbHNi1qFDcnrIiMuU60FQxZMtIWP09YFMR64vxWxVawyqR93t0iQHcV5HT/hhfmqYOQ==} - - '@pythnetwork/price-service-client@1.9.0': - resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} - deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. - - '@pythnetwork/price-service-sdk@1.8.0': - resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} - - '@radix-ui/primitive@1.1.1': - resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} - - '@radix-ui/react-arrow@1.1.1': - resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-avatar@1.1.2': - resolution: {integrity: sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collapsible@1.1.2': - resolution: {integrity: sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.1.1': - resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.1.1': - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.1': - resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.4': - resolution: {integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.2': - resolution: {integrity: sha512-kEHnlhv7wUggvhuJPkyw4qspXLJOdYoAP4dO2c8ngGuXTq1w/HZp1YeVB+NQ2KbH1iEG+pvOCGYSqh9HZOz6hg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.3': - resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.1.1': - resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.1': - resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-icons@1.3.2': - resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} - peerDependencies: - react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc - - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-label@2.1.1': - resolution: {integrity: sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popper@1.2.1': - resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.1.3': - resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.2': - resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.0.1': - resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.1.1': - resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-separator@1.1.1': - resolution: {integrity: sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.1.1': - resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-tabs@1.1.2': - resolution: {integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toast@1.2.4': - resolution: {integrity: sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tooltip@1.1.5': - resolution: {integrity: sha512-IucoQPcK5nwUuztaxBQvudvYwH58wtRcJlv1qvaMSyIbL9dEBfFN0vRf/D8xDbu6HmAJLlNGty4z8Na+vIqe9Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tooltip@1.1.6': - resolution: {integrity: sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.1.1': - resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@randlabs/communication-bridge@1.0.1': - resolution: {integrity: sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg==} - - '@randlabs/myalgo-connect@1.4.2': - resolution: {integrity: sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA==} - - '@raydium-io/raydium-sdk-v2@0.1.82-alpha': - resolution: {integrity: sha512-PScLnWZV5Y/igcvP4hbD/1ztzW2w5a2YStolu9A5VT6uB2q+izeo+SE7IqzZggyaReXyisjdkNGpB/kMdkdJGQ==} - - '@raydium-io/raydium-sdk-v2@0.1.95-alpha': - resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} - - '@react-icons/all-files@4.1.0': - resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==} - peerDependencies: - react: '*' - - '@react-spring/animated@9.7.5': - resolution: {integrity: sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@react-spring/core@9.7.5': - resolution: {integrity: sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@react-spring/rafz@9.7.5': - resolution: {integrity: sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==} - - '@react-spring/shared@9.7.5': - resolution: {integrity: sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@react-spring/types@9.7.5': - resolution: {integrity: sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==} - - '@react-spring/web@9.7.5': - resolution: {integrity: sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@ref-finance/ref-sdk@1.4.6': - resolution: {integrity: sha512-HVmcV+lhE+4+RwlDkgnFHwymrplHFlwsIwYZASE2XbGQjSY0sF3wceJkz671II3Us/KcRl1wp23ASSzza+/pbg==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - - '@reflink/reflink-darwin-arm64@0.1.19': - resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@reflink/reflink-darwin-x64@0.1.19': - resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@reflink/reflink-linux-arm64-gnu@0.1.19': - resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@reflink/reflink-linux-arm64-musl@0.1.19': - resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@reflink/reflink-linux-x64-gnu@0.1.19': - resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@reflink/reflink-linux-x64-musl@0.1.19': - resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@reflink/reflink-win32-arm64-msvc@0.1.19': - resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@reflink/reflink-win32-x64-msvc@0.1.19': - resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@reflink/reflink@0.1.19': - resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==} - engines: {node: '>= 10'} - - '@remix-run/router@1.15.1': - resolution: {integrity: sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==} - engines: {node: '>=14.0.0'} - - '@remusao/guess-url-type@1.3.0': - resolution: {integrity: sha512-SNSJGxH5ckvxb3EUHj4DqlAm/bxNxNv2kx/AESZva/9VfcBokwKNS+C4D1lQdWIDM1R3d3UG+xmVzlkNG8CPTQ==} - - '@remusao/small@1.3.0': - resolution: {integrity: sha512-bydAhJI+ywmg5xMUcbqoR8KahetcfkFywEZpsyFZ8EBofilvWxbXnMSe4vnjDI1Y+SWxnNhR4AL/2BAXkf4b8A==} - - '@remusao/smaz-compress@1.10.0': - resolution: {integrity: sha512-E/lC8OSU+3bQrUl64vlLyPzIxo7dxF2RvNBe9KzcM4ax43J/d+YMinmMztHyCIHqRbz7rBCtkp3c0KfeIbHmEg==} - - '@remusao/smaz-decompress@1.10.0': - resolution: {integrity: sha512-aA5ImUH480Pcs5/cOgToKmFnzi7osSNG6ft+7DdmQTaQEEst3nLq3JLlBEk+gwidURymjbx6DYs60LHaZ415VQ==} - - '@remusao/smaz@1.10.0': - resolution: {integrity: sha512-GQzCxmmMpLkyZwcwNgz8TpuBEWl0RUQa8IcvKiYlPxuyYKqyqPkCr0hlHI15ckn3kDUPS68VmTVgyPnLNrdVmg==} - - '@remusao/trie@1.5.0': - resolution: {integrity: sha512-UX+3utJKgwCsg6sUozjxd38gNMVRXrY4TNX9VvCdSrlZBS1nZjRPi98ON3QjRAdf6KCguJFyQARRsulTeqQiPg==} - - '@roamhq/wrtc-darwin-arm64@0.8.0': - resolution: {integrity: sha512-OtV2KWO7zOG3L8TF3KCt9aucynVCD/ww2xeXXgg+FLkya3ca0uzehN8EQJ3BL4tkInksbFJ2ssyu9cehfJ3ZuA==} - cpu: [arm64] - os: [darwin] - - '@roamhq/wrtc-darwin-x64@0.8.0': - resolution: {integrity: sha512-VY7Vzt/SDDDCpW//h8GW9bOZrOr8gWXPZVD9473ypl4jyBIoO57yyLbHzd1G0vBUkS6szsHlQCz1WwpI30YL+g==} - cpu: [x64] - os: [darwin] - - '@roamhq/wrtc-linux-arm64@0.8.1': - resolution: {integrity: sha512-FBJLLazlWkGQUXaokC/rTbrUQbb0CNFYry52fZGstufrGLTWu+g4HcwXdVvxh1tnVtVMvkQGk+mlOL52sCxw0A==} - cpu: [arm64] - os: [linux] - - '@roamhq/wrtc-linux-x64@0.8.1': - resolution: {integrity: sha512-I9oWG7b4uvWO1IOR/aF34n+ID6TKVuSs0jd19h5KdhfRtw7FFh9xxuwN9rONPxLVa6fS0q+MCZgAf8Scz89L8Q==} - cpu: [x64] - os: [linux] - - '@roamhq/wrtc-win32-x64@0.8.0': - resolution: {integrity: sha512-R2fxl41BLWPiP4eaTHGLzbbVvRjx1mV/OsgINCvawO7Hwz5Zx9I45+Fhrw3hd4n5amIeSG9VIF7Kz8eeTFXTGQ==} - cpu: [x64] - os: [win32] - - '@roamhq/wrtc@0.8.0': - resolution: {integrity: sha512-C0V/nqc4/2xzORI5qa4mIeN/8UO3ywN1kInrJ9u6GljFx0D18JMUJEqe8yYHa61RrEeoWN3PKdW++k8TocSx/A==} - - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@25.0.8': - resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.3.0': - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@5.0.7': - resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-terser@0.1.0': - resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.x || ^3.x - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-typescript@11.1.6': - resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0||^4.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.30.1': - resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.30.1': - resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.30.1': - resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.30.1': - resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.30.1': - resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.30.1': - resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.30.1': - resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.30.1': - resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.30.1': - resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.30.1': - resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.30.1': - resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': - resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.30.1': - resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.30.1': - resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.30.1': - resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.30.1': - resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.30.1': - resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.30.1': - resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.30.1': - resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} - cpu: [x64] - os: [win32] - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@saberhq/option-utils@1.15.0': - resolution: {integrity: sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==} - - '@saberhq/solana-contrib@1.15.0': - resolution: {integrity: sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==} - peerDependencies: - '@solana/web3.js': ^1.42 - bn.js: ^4 || ^5 - - '@sapphire/async-queue@1.5.5': - resolution: {integrity: sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==} - engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - - '@sapphire/shapeshift@4.0.0': - resolution: {integrity: sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==} - engines: {node: '>=v16'} - - '@sapphire/snowflake@3.5.3': - resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} - engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - - '@sapphire/snowflake@3.5.5': - resolution: {integrity: sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ==} - engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - - '@scure/base@1.1.9': - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - - '@scure/base@1.2.1': - resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} - - '@scure/bip32@1.4.0': - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - - '@scure/bip32@1.6.0': - resolution: {integrity: sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA==} - - '@scure/bip32@1.6.1': - resolution: {integrity: sha512-jSO+5Ud1E588Y+LFo8TaB8JVPNAZw/lGGao+1SepHDeTs2dFLurdNIAgUuDlwezqEjRjElkCJajVrtrZaBxvaQ==} - - '@scure/bip39@1.3.0': - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - - '@scure/bip39@1.5.0': - resolution: {integrity: sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A==} - - '@scure/bip39@1.5.1': - resolution: {integrity: sha512-GnlufVSP9UdAo/H2Patfv22VTtpNTyfi+I3qCKpvuB5l1KWzEYx+l2TNpBy9Ksh4xTs3Rn06tBlpWCi/1Vz8gw==} - - '@scure/starknet@1.0.0': - resolution: {integrity: sha512-o5J57zY0f+2IL/mq8+AYJJ4Xpc1fOtDhr+mFQKbHnYFmm3WQrC+8zj2HEgxak1a+x86mhmBC1Kq305KUpVf0wg==} - - '@selderee/plugin-htmlparser2@0.11.0': - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - - '@shikijs/core@1.27.2': - resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} - - '@shikijs/engine-javascript@1.27.2': - resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} - - '@shikijs/engine-oniguruma@1.27.2': - resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} - - '@shikijs/langs@1.27.2': - resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} - - '@shikijs/themes@1.27.2': - resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} - - '@shikijs/types@1.27.2': - resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} - - '@shikijs/vscode-textmate@10.0.1': - resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sigstore/bundle@2.3.2': - resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/core@1.1.0': - resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/protobuf-specs@0.3.3': - resolution: {integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/sign@2.3.2': - resolution: {integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/tuf@2.3.4': - resolution: {integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/verify@1.2.1': - resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@simplewebauthn/typescript-types@7.4.0': - resolution: {integrity: sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ==} - deprecated: This package has been renamed to @simplewebauthn/types. Please install @simplewebauthn/types instead to ensure you receive future updates. - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinclair/typebox@0.32.35': - resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@slack/events-api@3.0.1': - resolution: {integrity: sha512-ReJzZRpCgwGtKrAT0tRMppO3zm72jmxsOlTgR7PGajv2oq/tOJSeVRm7RcGiwn3EPIuovKkD/mr4TTN4n801fQ==} - engines: {node: '>=12.13.0', npm: '>=6.12.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - hasBin: true - - '@slack/logger@3.0.0': - resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - - '@slack/types@2.14.0': - resolution: {integrity: sha512-n0EGm7ENQRxlXbgKSrQZL69grzg1gHLAVd+GlRVQJ1NSORo0FrApR7wql/gaKdu2n4TO83Sq/AmeUOqD60aXUA==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - - '@slack/web-api@6.13.0': - resolution: {integrity: sha512-dv65crIgdh9ZYHrevLU6XFHTQwTyDmNqEqzuIrV+Vqe/vgiG6w37oex5ePDU1RGm2IJ90H8iOvHFvzdEO/vB+g==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - - '@slorber/react-ideal-image@0.0.12': - resolution: {integrity: sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==} - engines: {node: '>= 8.9.0', npm: '> 3'} - peerDependencies: - prop-types: '>=15' - react: '>=0.14.x' - react-waypoint: '>=9.0.2' - - '@slorber/remark-comment@1.0.0': - resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - - '@smithy/abort-controller@4.0.1': - resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader-native@4.0.0': - resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader@5.0.0': - resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} - engines: {node: '>=18.0.0'} - - '@smithy/config-resolver@4.0.1': - resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} - engines: {node: '>=18.0.0'} - - '@smithy/core@3.1.1': - resolution: {integrity: sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==} - engines: {node: '>=18.0.0'} - - '@smithy/credential-provider-imds@4.0.1': - resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-codec@4.0.1': - resolution: {integrity: sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.0.1': - resolution: {integrity: sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-config-resolver@4.0.1': - resolution: {integrity: sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-node@4.0.1': - resolution: {integrity: sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-universal@4.0.1': - resolution: {integrity: sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==} - engines: {node: '>=18.0.0'} - - '@smithy/fetch-http-handler@5.0.1': - resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-blob-browser@4.0.1': - resolution: {integrity: sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-node@4.0.1': - resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-stream-node@4.0.1': - resolution: {integrity: sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==} - engines: {node: '>=18.0.0'} - - '@smithy/invalid-dependency@4.0.1': - resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} - engines: {node: '>=18.0.0'} - - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - - '@smithy/is-array-buffer@4.0.0': - resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} - engines: {node: '>=18.0.0'} - - '@smithy/md5-js@4.0.1': - resolution: {integrity: sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-content-length@4.0.1': - resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-endpoint@4.0.2': - resolution: {integrity: sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-retry@4.0.3': - resolution: {integrity: sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-serde@4.0.1': - resolution: {integrity: sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-stack@4.0.1': - resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} - engines: {node: '>=18.0.0'} - - '@smithy/node-config-provider@4.0.1': - resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} - engines: {node: '>=18.0.0'} - - '@smithy/node-http-handler@4.0.2': - resolution: {integrity: sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==} - engines: {node: '>=18.0.0'} - - '@smithy/property-provider@4.0.1': - resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} - engines: {node: '>=18.0.0'} - - '@smithy/protocol-http@5.0.1': - resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-builder@4.0.1': - resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-parser@4.0.1': - resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} - engines: {node: '>=18.0.0'} - - '@smithy/service-error-classification@4.0.1': - resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} - engines: {node: '>=18.0.0'} - - '@smithy/shared-ini-file-loader@4.0.1': - resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} - engines: {node: '>=18.0.0'} - - '@smithy/signature-v4@5.0.1': - resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} - engines: {node: '>=18.0.0'} - - '@smithy/smithy-client@4.1.2': - resolution: {integrity: sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==} - engines: {node: '>=18.0.0'} - - '@smithy/types@4.1.0': - resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} - engines: {node: '>=18.0.0'} - - '@smithy/url-parser@4.0.1': - resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} - engines: {node: '>=18.0.0'} - - '@smithy/util-base64@4.0.0': - resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-browser@4.0.0': - resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-node@4.0.0': - resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-buffer-from@4.0.0': - resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} - engines: {node: '>=18.0.0'} - - '@smithy/util-config-provider@4.0.0': - resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-browser@4.0.3': - resolution: {integrity: sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-node@4.0.3': - resolution: {integrity: sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-endpoints@3.0.1': - resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-hex-encoding@4.0.0': - resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-middleware@4.0.1': - resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-retry@4.0.1': - resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-stream@4.0.2': - resolution: {integrity: sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-uri-escape@4.0.0': - resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - - '@smithy/util-utf8@4.0.0': - resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} - engines: {node: '>=18.0.0'} - - '@smithy/util-waiter@4.0.2': - resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} - engines: {node: '>=18.0.0'} - - '@solana-developers/helpers@2.5.6': - resolution: {integrity: sha512-NPWZblVMl4LuVVSJOZG0ZF0VYnrMUjCyMNTiGwNUXPK2WWYJCqpuDyzs/PMqwvM4gMTjk4pEToBX8N2UxDvZkQ==} - - '@solana/buffer-layout-utils@0.2.0': - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.0.0-preview.2': - resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} - - '@solana/codecs-core@2.0.0-preview.4': - resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-preview.2': - resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} - - '@solana/codecs-data-structures@2.0.0-preview.4': - resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-preview.2': - resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} - - '@solana/codecs-numbers@2.0.0-preview.4': - resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-preview.2': - resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - - '@solana/codecs-strings@2.0.0-preview.4': - resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-preview.2': - resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} - - '@solana/codecs@2.0.0-preview.4': - resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-preview.2': - resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} - hasBin: true - - '@solana/errors@2.0.0-preview.4': - resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-preview.2': - resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} - - '@solana/options@2.0.0-preview.4': - resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - - '@solana/spl-account-compression@0.1.10': - resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.50.1 - - '@solana/spl-token-group@0.0.4': - resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.91.6 - - '@solana/spl-token-group@0.0.5': - resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.94.0 - - '@solana/spl-token-group@0.0.7': - resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.1.8': - resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} - engines: {node: '>= 10'} - - '@solana/spl-token@0.3.11': - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 - - '@solana/spl-token@0.4.6': - resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.91.6 - - '@solana/spl-token@0.4.8': - resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.94.0 - - '@solana/spl-token@0.4.9': - resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-type-length-value@0.1.0': - resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} - engines: {node: '>=16'} - - '@solana/wallet-adapter-base@0.9.23': - resolution: {integrity: sha512-apqMuYwFp1jFi55NxDfvXUX2x1T0Zh07MxhZ/nCCTGys5raSfYUh82zen2BLv8BSDj/JxZ2P/s7jrQZGrX8uAw==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.77.3 - - '@solana/wallet-standard-features@1.3.0': - resolution: {integrity: sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==} - engines: {node: '>=16'} - - '@solana/web3.js@1.95.3': - resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} - - '@solana/web3.js@1.95.5': - resolution: {integrity: sha512-hU9cBrbg1z6gEjLH9vwIckGBVB78Ijm0iZFNk4ocm5OD82piPwuk3MeQ1rfiKD9YQtr95krrcaopb49EmQJlRg==} - - '@solana/web3.js@1.95.8': - resolution: {integrity: sha512-sBHzNh7dHMrmNS5xPD1d0Xa2QffW/RXaxu/OysRXBfwTp+LYqGGmMtCYYwrHPrN5rjAmJCsQRNAwv4FM0t3B6g==} - - '@solana/web3.js@1.98.0': - resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} - - '@spheron/protocol-sdk@1.2.3': - resolution: {integrity: sha512-aZ7A/D3MuhTHiV5nfavnxOkmO61APkVZiJoLm0+EgsS0z1fFMSO9O6QdW0VCA6T75ajyAagXPJgr8U/VVRVp3w==} - - '@spruceid/siwe-parser@1.1.3': - resolution: {integrity: sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw==} - - '@spruceid/siwe-parser@2.1.2': - resolution: {integrity: sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ==} - - '@sqds/multisig@2.1.3': - resolution: {integrity: sha512-WOiL7La+RSiJsz7jVO85yhSiiSvNMUthiWuLPeWVOoD6IYa34BEAzanF1RdXRWGglSbRFYCTkyr+Ay1WmXmSRQ==} - engines: {node: '>=14'} - - '@stablelib/aead@1.0.1': - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - - '@stablelib/binary@1.0.1': - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} - - '@stablelib/bytes@1.0.1': - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - - '@stablelib/chacha20poly1305@1.0.1': - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} - - '@stablelib/chacha@1.0.1': - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} - - '@stablelib/constant-time@1.0.1': - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - - '@stablelib/ed25519@1.0.3': - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} - - '@stablelib/hash@1.0.1': - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - - '@stablelib/hkdf@1.0.1': - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} - - '@stablelib/hmac@1.0.1': - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} - - '@stablelib/int@1.0.1': - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - - '@stablelib/keyagreement@1.0.1': - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} - - '@stablelib/poly1305@1.0.1': - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} - - '@stablelib/random@1.0.2': - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} - - '@stablelib/sha256@1.0.1': - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} - - '@stablelib/sha512@1.0.1': - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} - - '@stablelib/wipe@1.0.1': - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - - '@stablelib/x25519@1.0.3': - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - - '@starknet-io/types-js@0.7.10': - resolution: {integrity: sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==} - - '@story-protocol/core-sdk@1.2.0-rc.3': - resolution: {integrity: sha512-mZMQgYvMfr5ysvql3DWADwS4RqxtjZnLT7IGvP/haoZgNds8++6uUNGRBzItYGj/ejZQtYSVTyMUoE+a78zArQ==} - - '@substrate/connect-extension-protocol@2.2.1': - resolution: {integrity: sha512-GoafTgm/Jey9E4Xlj4Z5ZBt/H4drH2CNq8VrAro80rtoznrXnFDNVivLQzZN0Xaj2g8YXSn9pC9Oc9IovYZJXw==} - - '@substrate/connect-known-chains@1.9.0': - resolution: {integrity: sha512-R7yE0kIRUnvNlMiYramQ+dQwSY0ZpqRJ1mK8hLKlvCbEMqjSFa0n/WYYG6/bst9nNA1O6OZLWpvMso6yhENe3A==} - - '@substrate/connect@0.8.8': - resolution: {integrity: sha512-zwaxuNEVI9bGt0rT8PEJiXOyebLIo6QN1SyiAHRPBOl6g3Sy0KKdSN8Jmyn++oXhVRD8aIe75/V8ZkS81T+BPQ==} - deprecated: versions below 1.x are no longer maintained - - '@substrate/light-client-extension-helpers@0.0.4': - resolution: {integrity: sha512-vfKcigzL0SpiK+u9sX6dq2lQSDtuFLOxIJx2CKPouPEHIs8C+fpsufn52r19GQn+qDhU8POMPHOVoqLktj8UEA==} - peerDependencies: - smoldot: 2.x - - '@substrate/ss58-registry@1.51.0': - resolution: {integrity: sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==} - - '@suchipi/femver@1.0.0': - resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} - - '@supabase/auth-js@2.65.1': - resolution: {integrity: sha512-IA7i2Xq2SWNCNMKxwmPlHafBQda0qtnFr8QnyyBr+KaSxoXXqEzFCnQ1dGTy6bsZjVBgXu++o3qrDypTspaAPw==} - - '@supabase/functions-js@2.4.3': - resolution: {integrity: sha512-sOLXy+mWRyu4LLv1onYydq+10mNRQ4rzqQxNhbrKLTLTcdcmS9hbWif0bGz/NavmiQfPs4ZcmQJp4WqOXlR4AQ==} - - '@supabase/node-fetch@2.6.15': - resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} - engines: {node: 4.x || >=6.0.0} - - '@supabase/postgrest-js@1.16.3': - resolution: {integrity: sha512-HI6dsbW68AKlOPofUjDTaosiDBCtW4XAm0D18pPwxoW3zKOE2Ru13Z69Wuys9fd6iTpfDViNco5sgrtnP0666A==} - - '@supabase/realtime-js@2.10.9': - resolution: {integrity: sha512-0AjN65VDNIScZzrrPaVvlND4vbgVS+j9Wcy3zf7e+l9JY4IwCTahFenPLcKy9bkr7KY0wfB7MkipZPKxMaDnjw==} - - '@supabase/storage-js@2.7.1': - resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==} - - '@supabase/supabase-js@2.46.2': - resolution: {integrity: sha512-5FEzYMZhfIZrMWEqo5/dQincvrhM+DeMWH3/okeZrkBBW1AJxblOQhnhF4/dfNYK25oZ1O8dAnnxZ9gQqdr40w==} - - '@supercharge/promise-pool@3.2.0': - resolution: {integrity: sha512-pj0cAALblTZBPtMltWOlZTQSLT07jIaFNeM8TWoJD1cQMgDB9mcMlVMoetiB35OzNJpqQ2b+QEtwiR9f20mADg==} - engines: {node: '>=8'} - - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-svg-component@8.0.0': - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-preset@8.1.0': - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/core@8.1.0': - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - - '@svgr/hast-util-to-babel-ast@8.0.0': - resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} - engines: {node: '>=14'} - - '@svgr/plugin-jsx@8.1.0': - resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/plugin-svgo@8.1.0': - resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/webpack@8.1.0': - resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} - engines: {node: '>=14'} - - '@swc/core-darwin-arm64@1.10.7': - resolution: {integrity: sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.10.7': - resolution: {integrity: sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.10.7': - resolution: {integrity: sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.10.7': - resolution: {integrity: sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.10.7': - resolution: {integrity: sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.10.7': - resolution: {integrity: sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.10.7': - resolution: {integrity: sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.10.7': - resolution: {integrity: sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.10.7': - resolution: {integrity: sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.10.7': - resolution: {integrity: sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.10.7': - resolution: {integrity: sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} - - '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@tanstack/query-core@5.62.16': - resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==} - - '@tanstack/query-core@5.64.1': - resolution: {integrity: sha512-978Wx4Wl4UJZbmvU/rkaM9cQtXXrbhK0lsz/UZhYIbyKYA8E4LdomTwyh2GHZ4oU0BKKoDH4YlKk2VscCUgNmg==} - - '@tanstack/react-query@5.62.16': - resolution: {integrity: sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==} - peerDependencies: - react: ^18 || ^19 - - '@tanstack/react-query@5.64.1': - resolution: {integrity: sha512-vW5ggHpIO2Yjj44b4sB+Fd3cdnlMJppXRBJkEHvld6FXh3j5dwWJoQo7mGtKI2RbSFyiyu/PhGAy0+Vv5ev9Eg==} - peerDependencies: - react: ^18 || ^19 - - '@tavily/core@0.0.2': - resolution: {integrity: sha512-UabYbp57bdjEloA4efW9zTSzv+FZp13JVDHcfutUNR5XUZ+aDGupe2wpfABECnD+b7Ojp9v9zguZcm1o+h0//w==} - - '@telegraf/types@7.1.0': - resolution: {integrity: sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==} - - '@tensor-hq/tensor-common@8.3.2': - resolution: {integrity: sha512-gU+5Qby4vqcHvGzBOPiYHa4okNoTd8NRsNCQCbBQo2VdF2ITwRdqW759tricdmvwhISDmuo7r+mWp0/MDmnrNA==} - - '@tensor-oss/tensorswap-sdk@4.5.0': - resolution: {integrity: sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==} - - '@tinyhttp/content-disposition@2.2.2': - resolution: {integrity: sha512-crXw1txzrS36huQOyQGYFvhTeLeG0Si1xu+/l6kXUVYpE0TjFjEZRqTbuadQLfKGZ0jaI+jJoRyqaWwxOSHW2g==} - engines: {node: '>=12.20.0'} - - '@tiplink/api@0.3.1': - resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} - - '@ton/core@0.59.1': - resolution: {integrity: sha512-SxFBAvutYJaIllTkv82vbHTJhJI6NxzqUhi499CDEjJEZ9i6i9lHJiK2df4dlLAb/4SiWX6+QUzESkK4DEdnCw==} - peerDependencies: - '@ton/crypto': '>=3.2.0' - - '@ton/crypto-primitives@2.1.0': - resolution: {integrity: sha512-PQesoyPgqyI6vzYtCXw4/ZzevePc4VGcJtFwf08v10OevVJHVfW238KBdpj1kEDQkxWLeuNHEpTECNFKnP6tow==} - - '@ton/crypto@3.3.0': - resolution: {integrity: sha512-/A6CYGgA/H36OZ9BbTaGerKtzWp50rg67ZCH2oIjV1NcrBaCK9Z343M+CxedvM7Haf3f/Ee9EhxyeTp0GKMUpA==} - - '@ton/ton@15.1.0': - resolution: {integrity: sha512-almetcfTu7jLjcNcEEPB7wAc8yl90ES1M//sOr1QE+kv7RbmEvMkaPSc7kFxzs10qrjIPKxlodBJlMSWP5LuVQ==} - peerDependencies: - '@ton/core': '>=0.59.0' - '@ton/crypto': '>=3.2.0' - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@2.0.1': - resolution: {integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - - '@types/aws-lambda@8.10.147': - resolution: {integrity: sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/better-sqlite3@7.6.12': - resolution: {integrity: sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==} - - '@types/big.js@6.2.2': - resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - - '@types/cacheable-request@6.0.3': - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - - '@types/chai-subset@1.3.5': - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/chrome@0.0.278': - resolution: {integrity: sha512-PDIJodOu7o54PpSOYLybPW/MDZBCjM1TKgf31I3Q/qaEbNpIH09rOM3tSEH3N7Q+FAqb1933LhF8ksUPYeQLNg==} - - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/cors@2.8.17': - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - - '@types/d3-array@3.2.1': - resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} - - '@types/d3-axis@3.0.6': - resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} - - '@types/d3-brush@3.0.6': - resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} - - '@types/d3-chord@3.0.6': - resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} - - '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - - '@types/d3-contour@3.0.6': - resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} - - '@types/d3-delaunay@6.0.4': - resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} - - '@types/d3-dispatch@3.0.6': - resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} - - '@types/d3-drag@3.0.7': - resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} - - '@types/d3-dsv@3.0.7': - resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} - - '@types/d3-ease@3.0.2': - resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - - '@types/d3-fetch@3.0.7': - resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} - - '@types/d3-force@3.0.10': - resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} - - '@types/d3-format@3.0.4': - resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} - - '@types/d3-geo@3.1.0': - resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} - - '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - - '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - - '@types/d3-path@3.1.0': - resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} - - '@types/d3-polygon@3.0.2': - resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} - - '@types/d3-quadtree@3.0.6': - resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - - '@types/d3-random@3.0.3': - resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} - - '@types/d3-scale-chromatic@3.1.0': - resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} - - '@types/d3-scale@4.0.8': - resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} - - '@types/d3-selection@3.0.11': - resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - - '@types/d3-shape@3.1.7': - resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} - - '@types/d3-time-format@4.0.3': - resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} - - '@types/d3-time@3.0.4': - resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - - '@types/d3-timer@3.0.2': - resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - - '@types/d3-transition@3.0.9': - resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} - - '@types/d3-zoom@3.0.8': - resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - - '@types/d3@7.4.3': - resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/diff-match-patch@1.0.36': - resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - - '@types/dompurify@3.2.0': - resolution: {integrity: sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==} - deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed. - - '@types/dotenv@8.2.3': - resolution: {integrity: sha512-g2FXjlDX/cYuc5CiQvyU/6kkbP1JtmGzh0obW50zD7OKeILVL0NSpPWLXVfqoAGQjom2/SLLx9zHq0KXvD6mbw==} - deprecated: This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed. - - '@types/elliptic@6.4.18': - resolution: {integrity: sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==} - - '@types/emscripten@1.39.13': - resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - - '@types/express-serve-static-core@5.0.5': - resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/express@5.0.0': - resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} - - '@types/filesystem@0.0.36': - resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} - - '@types/filewriter@0.0.33': - resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - - '@types/firefox-webext-browser@120.0.4': - resolution: {integrity: sha512-lBrpf08xhiZBigrtdQfUaqX1UauwZ+skbFiL8u2Tdra/rklkKadYmIzTwkNZSWtuZ7OKpFqbE2HHfDoFqvZf6w==} - - '@types/fluent-ffmpeg@2.1.27': - resolution: {integrity: sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A==} - - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - - '@types/geojson@7946.0.15': - resolution: {integrity: sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==} - - '@types/glob@8.1.0': - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - - '@types/gtag.js@0.0.12': - resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} - - '@types/har-format@1.2.16': - resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} - - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/history@4.7.11': - resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/http-proxy@1.17.15': - resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} - - '@types/ioredis@5.0.0': - resolution: {integrity: sha512-zJbJ3FVE17CNl5KXzdeSPtdltc4tMT3TzC6fxQS0sQngkbFZ6h+0uTafsRqu+eSLIugf6Yb0Ea0SUuRr42Nk9g==} - deprecated: This is a stub types definition. ioredis provides its own type definitions, so you do not need this installed. - - '@types/is-stream@1.1.0': - resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - - '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/jsonwebtoken@9.0.7': - resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - - '@types/lodash.isstring@4.0.9': - resolution: {integrity: sha512-sjGPpa15VBpMns/4s6Blm567JgxLVVu/eCYCe7h/TdQyPCz9lIhaLSISjN7ZC9cDXmUT2IM/4mNRw8OtYirziw==} - - '@types/lodash@4.17.14': - resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} - - '@types/long@4.0.2': - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/multer@1.4.12': - resolution: {integrity: sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==} - - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@10.17.60': - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - - '@types/node@11.11.6': - resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@18.19.71': - resolution: {integrity: sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==} - - '@types/node@20.17.9': - resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} - - '@types/node@22.10.7': - resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} - - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - - '@types/node@22.8.4': - resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/parse5@5.0.3': - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - - '@types/pdfjs-dist@2.10.378': - resolution: {integrity: sha512-TRdIPqdsvKmPla44kVy4jv5Nt5vjMfVjbIEke1CRULIrwKNRC4lIiZvNYDJvbUMNCFPNIUcOKhXTyMJrX18IMA==} - deprecated: This is a stub types definition. pdfjs-dist provides its own type definitions, so you do not need this installed. - - '@types/pg@8.11.10': - resolution: {integrity: sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==} - - '@types/phoenix@1.6.6': - resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} - - '@types/prismjs@1.26.5': - resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} - - '@types/promise-retry@1.1.6': - resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} - - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-dom@19.0.3': - resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} - peerDependencies: - '@types/react': ^19.0.0 - - '@types/react-router-config@5.0.11': - resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} - - '@types/react-router-dom@5.3.3': - resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} - - '@types/react-router@5.1.20': - resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - - '@types/react@19.0.7': - resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/retry@0.12.5': - resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} - - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - - '@types/sql.js@1.4.9': - resolution: {integrity: sha512-ep8b36RKHlgWPqjNG9ToUrPiwkhwh0AEzy883mO5Xnd+cL6VBH1EvSjBAAuxLUFF2Vn/moE3Me6v9E1Lo+48GQ==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/tar@6.1.13': - resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/unzipper@0.10.10': - resolution: {integrity: sha512-jKJdNxhmCHTZsaKW5x0qjn6rB+gHk0w5VFbEKsw84i+RJqXZyfTmGnpjDcKqzMpjz7VVLsUBMtO5T3mVidpt0g==} - - '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/wav-encoder@1.3.3': - resolution: {integrity: sha512-2haw8zEMg4DspJRXmxUn2TElrQUs0bLPDh6x4N7/hDn+3tx2G05Lc+kC55uoHYsv8q+4deWhnDtHZT/ximg9aw==} - - '@types/webrtc@0.0.37': - resolution: {integrity: sha512-JGAJC/ZZDhcrrmepU4sPLQLIOIAgs5oIK+Ieq90K8fdaNMhfdfqmYatJdgif1NDQtvrSlTOGJDUYHIDunuufOg==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.13': - resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - - '@types/ws@8.5.3': - resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - - '@typescript-eslint/eslint-plugin@6.21.0': - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@8.16.0': - resolution: {integrity: sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@8.20.0': - resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.16.0': - resolution: {integrity: sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.20.0': - resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/scope-manager@8.16.0': - resolution: {integrity: sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.20.0': - resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@6.21.0': - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@8.16.0': - resolution: {integrity: sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@8.20.0': - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/types@8.16.0': - resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.20.0': - resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.16.0': - resolution: {integrity: sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.20.0': - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@8.16.0': - resolution: {integrity: sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.20.0': - resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@8.16.0': - resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.20.0': - resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@uidotdev/usehooks@2.4.1': - resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==} - engines: {node: '>=16'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@ungap/structured-clone@1.2.1': - resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} - - '@uniswap/sdk-core@4.2.1': - resolution: {integrity: sha512-hr7vwYrXScg+V8/rRc2UL/Ixc/p0P7yqe4D/OxzUdMRYr8RZd+8z5Iu9+WembjZT/DCdbTjde6lsph4Og0n1BQ==} - engines: {node: '>=10'} - - '@uniswap/sdk-core@6.0.0': - resolution: {integrity: sha512-6rwBG/Ut7rL2Dw4xtTF1dHSmtctT3h57q4vXIneLYjlePa1PT0mgp5D7cu/6xKEvO1MFtnMchImpWsclfafdUg==} - engines: {node: '>=10'} - - '@unruggable_starknet/core@0.1.0': - resolution: {integrity: sha512-qhKqw1XKhSRHzK3Ll/RzCblGFJDD4oeGoPQbal/X7QVVG1qz+VnqoyA1U6SDmlSGTHfskvMoXrVWkPRFL2RqHA==} - peerDependencies: - starknet: '>=5.0.0' - - '@vitejs/plugin-react-swc@3.7.2': - resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==} - peerDependencies: - vite: ^4 || ^5 || ^6 - - '@vitest/coverage-v8@0.34.6': - resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} - peerDependencies: - vitest: '>=0.32.0 <1' - - '@vitest/coverage-v8@1.1.3': - resolution: {integrity: sha512-Uput7t3eIcbSTOTQBzGtS+0kah96bX+szW9qQrLeGe3UmgL2Akn8POnyC2lH7XsnREZOds9aCUTxgXf+4HX5RA==} - peerDependencies: - vitest: ^1.0.0 - - '@vitest/coverage-v8@2.1.5': - resolution: {integrity: sha512-/RoopB7XGW7UEkUndRXF87A9CwkoZAJW01pj8/3pgmDVsjMH2IKy6H1A38po9tmUlwhSyYs0az82rbKd9Yaynw==} - peerDependencies: - '@vitest/browser': 2.1.5 - vitest: 2.1.5 - peerDependenciesMeta: - '@vitest/browser': - optional: true - - '@vitest/eslint-plugin@1.0.1': - resolution: {integrity: sha512-albpL56cL9XMwHJWCWZqjDxkuDkBXBF3WpPGOv6q2WA3cipCP41cKEwfSGktoRNGmPN77wuX452O8pM+z+ApNw==} - peerDependencies: - '@typescript-eslint/utils': '>= 8.0' - eslint: '>= 8.57.0' - typescript: '>= 5.0.0' - vitest: '*' - peerDependenciesMeta: - '@typescript-eslint/utils': - optional: true - typescript: - optional: true - vitest: - optional: true - - '@vitest/expect@0.34.6': - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} - - '@vitest/expect@1.1.3': - resolution: {integrity: sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==} - - '@vitest/expect@1.2.1': - resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==} - - '@vitest/expect@2.1.4': - resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - - '@vitest/expect@2.1.5': - resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==} - - '@vitest/expect@2.1.8': - resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} - - '@vitest/mocker@2.1.4': - resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/mocker@2.1.5': - resolution: {integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/mocker@2.1.8': - resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@2.1.4': - resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - - '@vitest/pretty-format@2.1.5': - resolution: {integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==} - - '@vitest/pretty-format@2.1.8': - resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - - '@vitest/runner@0.34.6': - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} - - '@vitest/runner@1.1.3': - resolution: {integrity: sha512-Va2XbWMnhSdDEh/OFxyUltgQuuDRxnarK1hW5QNN4URpQrqq6jtt8cfww/pQQ4i0LjoYxh/3bYWvDFlR9tU73g==} - - '@vitest/runner@1.2.1': - resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==} - - '@vitest/runner@2.1.4': - resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - - '@vitest/runner@2.1.5': - resolution: {integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==} - - '@vitest/runner@2.1.8': - resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} - - '@vitest/snapshot@0.34.6': - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} - - '@vitest/snapshot@1.1.3': - resolution: {integrity: sha512-U0r8pRXsLAdxSVAyGNcqOU2H3Z4Y2dAAGGelL50O0QRMdi1WWeYHdrH/QWpN1e8juWfVKsb8B+pyJwTC+4Gy9w==} - - '@vitest/snapshot@1.2.1': - resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} - - '@vitest/snapshot@2.1.4': - resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} - - '@vitest/snapshot@2.1.5': - resolution: {integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==} - - '@vitest/snapshot@2.1.8': - resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} - - '@vitest/spy@0.34.6': - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} - - '@vitest/spy@1.1.3': - resolution: {integrity: sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==} - - '@vitest/spy@1.2.1': - resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==} - - '@vitest/spy@2.1.4': - resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} - - '@vitest/spy@2.1.5': - resolution: {integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==} - - '@vitest/spy@2.1.8': - resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} - - '@vitest/ui@0.34.7': - resolution: {integrity: sha512-iizUu9R5Rsvsq8FtdJ0suMqEfIsIIzziqnasMHe4VH8vG+FnZSA3UAtCHx6rLeRupIFVAVg7bptMmuvMcsn8WQ==} - peerDependencies: - vitest: '>=0.30.1 <1' - - '@vitest/utils@0.34.6': - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} - - '@vitest/utils@0.34.7': - resolution: {integrity: sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==} - - '@vitest/utils@1.1.3': - resolution: {integrity: sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==} - - '@vitest/utils@1.2.1': - resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==} - - '@vitest/utils@2.1.4': - resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} - - '@vitest/utils@2.1.5': - resolution: {integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==} - - '@vitest/utils@2.1.8': - resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - - '@vladfrangu/async_event_emitter@2.4.6': - resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==} - engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} - - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} - - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} - - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} - peerDependencies: - vue: 3.5.13 - - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - - '@wallet-standard/base@1.1.0': - resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} - engines: {node: '>=16'} - - '@wallet-standard/features@1.1.0': - resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} - engines: {node: '>=16'} - - '@walletconnect/core@2.17.3': - resolution: {integrity: sha512-57uv0FW4L6H/tmkb1kS2nG41MDguyDgZbGR58nkDUd1TO/HydyiTByVOhFzIxgN331cnY/1G1rMaKqncgdnOFA==} - engines: {node: '>=18'} - - '@walletconnect/core@2.17.4': - resolution: {integrity: sha512-/BF+yoY5mjK5RQ6zJ60YLsJysUC0saWrjTAfR2AqCsyaehRKk+Ql0QfbAZd3S3SY/Dwm9o84RD8z01qxwaogQA==} - engines: {node: '>=18'} - - '@walletconnect/environment@1.0.1': - resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} - - '@walletconnect/ethereum-provider@2.17.3': - resolution: {integrity: sha512-fgoT+dT9M1P6IIUtBl66ddD+4IJYqdhdAYkW+wa6jbctxKlHYSXf9HsgF/Vvv9lMnxHdAIz0W9VN4D/m20MamA==} - - '@walletconnect/ethereum-provider@2.17.4': - resolution: {integrity: sha512-h6uTYU0YLqwX1ZuMqpQHCGhmQjTltwixQt0iIsDNe5sbDETGUHRe+Ji54ak8dinnUnS79ZsW0sndGmY1VUwdJA==} - - '@walletconnect/events@1.0.1': - resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} - - '@walletconnect/heartbeat@1.2.2': - resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} - - '@walletconnect/jsonrpc-http-connection@1.0.8': - resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} - - '@walletconnect/jsonrpc-provider@1.0.14': - resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} - - '@walletconnect/jsonrpc-types@1.0.4': - resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} - - '@walletconnect/jsonrpc-utils@1.0.8': - resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} - - '@walletconnect/jsonrpc-ws-connection@1.0.16': - resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==} - - '@walletconnect/keyvaluestorage@1.1.1': - resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} - peerDependencies: - '@react-native-async-storage/async-storage': 1.x - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - - '@walletconnect/logger@2.1.2': - resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} - - '@walletconnect/modal-core@2.7.0': - resolution: {integrity: sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA==} - - '@walletconnect/modal-ui@2.7.0': - resolution: {integrity: sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ==} - - '@walletconnect/modal@2.7.0': - resolution: {integrity: sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==} - - '@walletconnect/relay-api@1.0.11': - resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} - - '@walletconnect/relay-auth@1.0.4': - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} - - '@walletconnect/safe-json@1.0.2': - resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} - - '@walletconnect/sign-client@2.17.3': - resolution: {integrity: sha512-OzOWxRTfVGCHU3OOF6ibPkgPfDpivFJjuknfcOUt9PYWpTAv6YKOmT4cyfBPhc7llruyHpV44fYbykMcLIvEcg==} - - '@walletconnect/sign-client@2.17.4': - resolution: {integrity: sha512-9ukS7GHvHkAL3nkwukIfzWYxNsLJBO35Zkp7WdhKH3p3V+IiAMpmG79MEOykun5B8fl8m8z+6EOA1191aKx8jw==} - - '@walletconnect/time@1.0.2': - resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} - - '@walletconnect/types@2.17.3': - resolution: {integrity: sha512-5eFxnbZGJJx0IQyCS99qz+OvozpLJJYfVG96dEHGgbzZMd+C9V1eitYqVClx26uX6V+WQVqVwjpD2Dyzie++Wg==} - - '@walletconnect/types@2.17.4': - resolution: {integrity: sha512-i4yHY005RHhwCavaKk+GaDwwUaSqnwLM4b2btcHSOIqjReyFImnwOY+59zQTO7tbmnjjJpGZcfRGcHk70TQ9mA==} - - '@walletconnect/universal-provider@2.17.3': - resolution: {integrity: sha512-Aen8h+vWTN57sv792i96vaTpN06WnpFUWhACY5gHrpL2XgRKmoXUgW7793p252QdgyofNAOol7wJEs1gX8FjgQ==} - - '@walletconnect/universal-provider@2.17.4': - resolution: {integrity: sha512-n4x/QnHFwvNt1k7pOrMikEubpCBpdHkIkAdNROm/hCP/3JH1Z6Z5Is2iwP+H845qJXXKjkzRryvuerw8ga/sxg==} - - '@walletconnect/utils@2.17.3': - resolution: {integrity: sha512-tG77UpZNeLYgeOwViwWnifpyBatkPlpKSSayhN0gcjY1lZAUNqtYslpm4AdTxlrA3pL61MnyybXgWYT5eZjarw==} - - '@walletconnect/utils@2.17.4': - resolution: {integrity: sha512-Vvqs66cPV4OZteO2PjUjGLiKlo3myJjwSB5ElgwHwfAwr+WfUbJl4WPAOp6YHh6xxObRCQN+AgwC69EKfwXAiA==} - - '@walletconnect/window-getters@1.0.1': - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} - - '@walletconnect/window-metadata@1.0.1': - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} - - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} - hasBin: true - - '@zodios/core@10.9.6': - resolution: {integrity: sha512-aH4rOdb3AcezN7ws8vDgBfGboZMk2JGGzEq/DtW65MhnRxyTGRuLJRWVQ/2KxDgWvV2F5oTkAS+5pnjKbl0n+A==} - peerDependencies: - axios: ^0.x || ^1.0.0 - zod: ^3.x - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - abi-wan-kanabi@2.2.4: - resolution: {integrity: sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==} - hasBin: true - - abitype@0.10.3: - resolution: {integrity: sha512-tRN+7XIa7J9xugdbRzFv/95ka5ivR/sRe01eiWvM0HWWjHuigSZEACgKa0sj4wGuekTDtghCx+5Izk/cOi78pQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@0.7.1: - resolution: {integrity: sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==} - peerDependencies: - typescript: '>=4.9.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - - abitype@1.0.7: - resolution: {integrity: sha512-ZfYYSktDQUwc2eduYu8C4wOs+RDPmnRYMh7zNfzeMtGGgb0U+6tLGjixUic6mXf5xKKCcgT5Qp6cv39tOARVFw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.8: - resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-node@1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - - acorn-typescript@1.4.13: - resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} - peerDependencies: - acorn: '>=8.9.0' - - acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - - agent-base@5.1.1: - resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} - engines: {node: '>= 6.0.0'} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - - agent-twitter-client@0.0.18: - resolution: {integrity: sha512-HncH5mlFcGYLEl5wNEkwtdolcmdxqEMIsqO4kTqiTp5P19O25Zr4P6LNJZz1UTjPRyXDxj+BLmmk/Ou7O0QzEg==} - - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ai@3.4.33: - resolution: {integrity: sha512-plBlrVZKwPoRTmM8+D1sJac9Bq8eaa2jiZlHLZIWekKWI1yMWYZvCCEezY9ASPwRhULYDJB2VhKOBUUeg3S5JQ==} - engines: {node: '>=18'} - peerDependencies: - openai: ^4.42.0 - react: ^18 || ^19 || ^19.0.0-rc - sswr: ^2.1.0 - svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 - zod: ^3.0.0 - peerDependenciesMeta: - openai: - optional: true - react: - optional: true - sswr: - optional: true - svelte: - optional: true - zod: - optional: true - - ai@4.0.38: - resolution: {integrity: sha512-Lqo39GY8YlfUHgQdYb8qzaz+vfAu/8c8eIDck7NNKrdmwOAr8f4SuDgPVbISn1/4F9gR6WEXnD2f552ZEVT31Q==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - alawmulaw@6.0.0: - resolution: {integrity: sha512-1aQJZX2Ax5X7Bq9j9Wkv0gczxexnkshlNNxTc0sD5DjAb+NIgfHkI3rpnjSgr6pK1s4V0Z7viBgE9/FHcIwkyw==} - engines: {node: '>=8'} - - algo-msgpack-with-bigint@2.1.1: - resolution: {integrity: sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==} - engines: {node: '>= 10'} - - algoliasearch-helper@3.23.0: - resolution: {integrity: sha512-8CK4Gb/ju4OesAYcS+mjBpNiVA7ILWpg7D2vhBZohh0YkG8QT1KZ9LG+8+EntQBUGoKtPy06OFhiwP4f5zzAQg==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - - algoliasearch@4.24.0: - resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - - algoliasearch@5.19.0: - resolution: {integrity: sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg==} - engines: {node: '>= 14.0.0'} - - algosdk@1.24.1: - resolution: {integrity: sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==} - engines: {node: '>=14.0.0'} - - amp-message@0.1.2: - resolution: {integrity: sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==} - - amp@0.3.1: - resolution: {integrity: sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==} - - amqplib@0.10.5: - resolution: {integrity: sha512-Dx5zmy0Ur+Q7LPPdhz+jx5IzmJBoHd15tOeAfQ8SuvEtyPJ20hBemhOBA4b1WeORCRa0ENM/kHCzmem1w/zHvQ==} - engines: {node: '>=10'} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - - anthropic-vertex-ai@1.0.2: - resolution: {integrity: sha512-4YuK04KMmBGkx6fi2UjnHkE4mhaIov7tnT5La9+DMn/gw/NSOLZoWNUx+13VY3mkcaseKBMEn1DBzdXXJFIP7A==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - ap@0.1.0: - resolution: {integrity: sha512-iNF0PHuPu0RokHSicNS46wSj3bg3inzbDVaoFVZ+T0C+RvSu1bqg+OilF8Sr8S6j9mURv3Xx7BnT3bbF5fgytw==} - - apg-js@4.4.0: - resolution: {integrity: sha512-fefmXFknJmtgtNEXfPwZKYkMFX4Fyeyz+fNF6JWp87biGOPslJbCBVU158zvKRZfHBKnJDy8CMM40oLFGkXT8Q==} - - append-field@1.0.0: - resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - arbundles@0.11.2: - resolution: {integrity: sha512-vyX7vY6S8B4RFhGSoCixbnR/Z7ckpJjK+b/H7zcgRWJqqXjZqQ+3DQIJ19vKl5AvzNSsj5ja9kQDoZhMiGpBFw==} - - arconnect@0.4.2: - resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} - - are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} - engines: {node: '>=14'} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - - arweave-stream-tx@1.2.2: - resolution: {integrity: sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ==} - peerDependencies: - arweave: ^1.10.0 - - arweave@1.15.5: - resolution: {integrity: sha512-Zj3b8juz1ZtDaQDPQlzWyk2I4wZPx3RmcGq8pVJeZXl2Tjw0WRy5ueHPelxZtBLqCirGoZxZEAFRs6SZUSCBjg==} - engines: {node: '>=18'} - - asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - - asn1js@2.4.0: - resolution: {integrity: sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ==} - engines: {node: '>=6.0.0'} - - asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - assert@1.5.1: - resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - - async@0.2.10: - resolution: {integrity: sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==} - - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - autocomplete.js@0.37.1: - resolution: {integrity: sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ==} - - automd@0.3.12: - resolution: {integrity: sha512-qNHdFSAE7zMIO12FJpGBp98uLrIUxg3i8WzvsEGGq0rD5olkgSK9KE0SsYfwciW1LdP6q8lWX+3chaxjtgN9gA==} - hasBin: true - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - avail-js-sdk@0.3.0: - resolution: {integrity: sha512-xZrqRC5xOeFbIaQIaOmF48UtO0qPxEsK15uX2gYm/iDJnXUaiaj+J5ChuTerNLHFzigF/OALRlKXVwRxhOmUPA==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - - axe-core@4.10.2: - resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} - engines: {node: '>=4'} - - axios-mock-adapter@1.22.0: - resolution: {integrity: sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==} - peerDependencies: - axios: '>= 0.17.0' - - axios-retry@3.9.1: - resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} - - axios-retry@4.5.0: - resolution: {integrity: sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==} - peerDependencies: - axios: 0.x || 1.x - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - axios@0.24.0: - resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} - - axios@0.27.2: - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} - - axios@0.28.1: - resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} - - axios@1.7.4: - resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} - - axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} - - axios@1.7.8: - resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==} - - axios@1.7.9: - resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - - babel-code-frame@6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-loader@9.2.1: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-messages@6.23.0: - resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} - - babel-plugin-dynamic-import-node@2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - - babel-plugin-import-to-require@1.0.0: - resolution: {integrity: sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==} - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - babel-plugin-polyfill-corejs2@0.4.12: - resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.6: - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.3: - resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - - babel-template@6.26.0: - resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} - - babel-traverse@6.26.0: - resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} - - babel-types@6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - - babylon@6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bare-events@2.5.4: - resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - - bare-fs@4.0.1: - resolution: {integrity: sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==} - engines: {bare: '>=1.7.0'} - - bare-os@3.4.0: - resolution: {integrity: sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==} - engines: {bare: '>=1.6.0'} - - bare-path@3.0.0: - resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - - bare-stream@2.6.4: - resolution: {integrity: sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA==} - peerDependencies: - bare-buffer: '*' - bare-events: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - bare-events: - optional: true - - base-x@2.0.6: - resolution: {integrity: sha512-UAmjxz9KbK+YIi66xej+pZVo/vxUOh49ubEvZW5egCbxhur05pBb+hwuireQwKO4nDpsNm64/jEei17LEpsr5g==} - engines: {node: '>=4.5.0'} - deprecated: use 3.0.0 instead, safe-buffer has been merged and release for compatability - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - - base-x@5.0.0: - resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} - - base64-arraybuffer@0.2.0: - resolution: {integrity: sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==} - engines: {node: '>= 0.6.0'} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base64url@3.0.1: - resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} - engines: {node: '>=6.0.0'} - - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} - engines: {node: '>=10.0.0'} - - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - - bcp-47-match@1.0.3: - resolution: {integrity: sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==} - - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - bech32@2.0.0: - resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} - - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - - before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} - - bent@7.3.12: - resolution: {integrity: sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==} - - better-sqlite3@11.6.0: - resolution: {integrity: sha512-2J6k/eVxcFYY2SsTxsXrj6XylzHWPxveCn4fKPKZFv/Vqn/Cd7lOuX4d7rGQXT5zL+97MkNL3nSbCrIoe3LkgA==} - - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - big.js@6.2.2: - resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - bignumber@1.1.0: - resolution: {integrity: sha512-EGqHCKkEAwVwufcEOCYhZQqdVH+7cNCyPZ9yxisYvSjHFB+d9YcGMvorsFpeN5IJpC+lC6K+FHhu8+S4MgJazw==} - engines: {node: '>=0.4.0'} - - bin-links@4.0.4: - resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - bin-version-check@6.0.0: - resolution: {integrity: sha512-k9TS/pADINX9UlErjAkbkxDer8C+WlguMwySI8sLMGLUMDvwuHmDx00yoHe7nxshgwtLBcMWQgrlwjzscUeQKg==} - engines: {node: '>=18'} - deprecated: 'Renamed to binary-version-check: https://www.npmjs.com/package/binary-version-check' - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - binary-version@7.1.0: - resolution: {integrity: sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw==} - engines: {node: '>=18'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bintrees@1.0.2: - resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} - - bip174@3.0.0-rc.1: - resolution: {integrity: sha512-+8P3BpSairVNF2Nee6Ksdc1etIjWjBOi/MH0MwKtq9YaYp+S2Hk2uvup0e8hCT4IKlS58nXJyyQVmW92zPoD4Q==} - engines: {node: '>=18.0.0'} - - bip32@4.0.0: - resolution: {integrity: sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==} - engines: {node: '>=6.0.0'} - - bip39-light@1.0.7: - resolution: {integrity: sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==} - - bip39@3.0.2: - resolution: {integrity: sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==} - - bip39@3.1.0: - resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} - - bitcoinjs-lib@7.0.0-rc.0: - resolution: {integrity: sha512-7CQgOIbREemKR/NT2uc3uO/fkEy+6CM0sLxboVVY6bv6DbZmPt3gg5Y/hhWgQFeZu5lfTbtVAv32MIxf7lMh4g==} - engines: {node: '>=18.0.0'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blake2b-wasm@1.1.7: - resolution: {integrity: sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==} - - blake2b@2.1.3: - resolution: {integrity: sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==} - - blessed@0.1.81: - resolution: {integrity: sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==} - engines: {node: '>= 0.8.0'} - hasBin: true - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} - - bn.js@5.2.0: - resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - bn@1.0.5: - resolution: {integrity: sha512-7TvGbqbZb6lDzsBtNz1VkdXXV0BVmZKPPViPmo2IpvwaryF7P+QKYKACyVkwo2mZPr2CpFiz7EtgPEcc3o/JFQ==} - - bodec@0.1.0: - resolution: {integrity: sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - borc@2.1.2: - resolution: {integrity: sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==} - engines: {node: '>=4'} - - borsh@0.6.0: - resolution: {integrity: sha512-sl5k89ViqsThXQpYa9XDtz1sBl3l1lI313cFUY1HKr+wvMILnb+58xpkqTNrYbelh99dY7K8usxoCusQmqix9Q==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@1.0.0: - resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - - boxen@6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-headers@0.4.1: - resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} - - browser-pack@6.1.0: - resolution: {integrity: sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==} - hasBin: true - - browser-resolve@2.0.0: - resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.1: - resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} - engines: {node: '>= 0.10'} - - browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} - - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - - browserify@17.0.1: - resolution: {integrity: sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==} - engines: {node: '>= 0.8'} - hasBin: true - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bs58@4.0.0: - resolution: {integrity: sha512-/jcGuUuSebyxwLLfKrbKnCJttxRf9PM51EnHTwmFKBxl4z1SGkoAhrfd6uZKE0dcjQTfm6XzTP8DPr1tzE4KIw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - bs58@6.0.0: - resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} - - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - bs58check@4.0.0: - resolution: {integrity: sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-layout@1.2.2: - resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} - engines: {node: '>=4.5'} - - buffer-more-ints@1.0.0: - resolution: {integrity: sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==} - - buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.2.1: - resolution: {integrity: sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} - engines: {node: '>=6.14.2'} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - - bundle-require@5.1.0: - resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - buttplug@3.2.2: - resolution: {integrity: sha512-TGkQzG6dxEjuFX29eRoWkh82vsQhGQ+E98tZtN8fWn1NOG7v/9H0FFkNXrpmeRt9FFS0GdHTvubfZ8dcIPGSAA==} - - byte-size@8.1.1: - resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} - engines: {node: '>=12.17'} - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - bytesish@0.4.4: - resolution: {integrity: sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==} - - bytestreamjs@2.0.1: - resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} - engines: {node: '>=6.0.0'} - - c12@2.0.1: - resolution: {integrity: sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==} - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacache@18.0.4: - resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - - cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} - - cached-path-relative@1.1.0: - resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} - - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001692: - resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} - - canvas@2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} - - capability@0.2.5: - resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} - - capsolver-npm@2.0.2: - resolution: {integrity: sha512-PvkAGTuwtKXczJeoiLu2XQ4SzJh0m7Yr3ONJuvdjEAw95LwtfGxZ3Ip/w21kR94R4O260omLGlTcQvPf2ECnLg==} - - cardinal@2.1.1: - resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} - hasBin: true - - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} - - chain-registry@1.69.94: - resolution: {integrity: sha512-8WpEM0BRtvhe6MBek0Jx41xaNH8E3I76yqebr0q5RohIs+Rmjt+aCzmi9T8AOceyJw7cOzIBhJjD1pi2agfd1w==} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.0: - resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} - engines: {node: '>=10'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - charm@0.1.2: - resolution: {integrity: sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} - peerDependencies: - chevrotain: ^11.0.0 - - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - - chmodrp@1.0.2: - resolution: {integrity: sha512-TdngOlFV1FLTzU0o1w8MB6/BFywhtLC0SzRTGJU7T9lmdjlCWeMRt1iVo0Ki+ldwNk0BqNiKoc8xpLZEQ8mY1w==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - chromium-bidi@0.4.7: - resolution: {integrity: sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==} - peerDependencies: - devtools-protocol: '*' - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} - engines: {node: '>=8'} - - cids@0.7.5: - resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} - engines: {node: '>=4.0.0', npm: '>=3.0.0'} - deprecated: This module has been superseded by the multiformats module - - cids@0.8.3: - resolution: {integrity: sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA==} - engines: {node: '>=4.0.0', npm: '>=3.0.0'} - deprecated: This module has been superseded by the multiformats module - - cipher-base@1.0.6: - resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} - engines: {node: '>= 0.10'} - - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - cive@0.7.1: - resolution: {integrity: sha512-DcBpLydad5MMeUjLHRYWXK3oX+bnVqeZDR5NL1dcLsUMUxRTFLndgS29m/oafFQQ95ZOkvtif/kDzhpWG0e5Xw==} - - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} - - class-is@1.1.0: - resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} - - class-transformer@0.5.1: - resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} - - class-variance-authority@0.7.1: - resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - - cldr-segmentation@2.2.1: - resolution: {integrity: sha512-0XAXy22htsxXgdSbXxJzzyAsBrBUvFhUho3eRonfcP/zvromwjBe5yDji9/y4XaV9YszEZswKv3WYhgd+JA8CA==} - - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - cli-table@0.3.11: - resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} - engines: {node: '>= 0.2.0'} - - cli-tableau@2.0.1: - resolution: {integrity: sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==} - engines: {node: '>=8.10.0'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@0.2.4: - resolution: {integrity: sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==} - engines: {node: '>=0.10.0'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - - cmake-js@7.3.0: - resolution: {integrity: sha512-dXs2zq9WxrV87bpJ+WbnGKv8WUBXDw8blNiwNHoRe/it+ptscxhQHKB1SJXa1w+kocLMeP28Tk4/eTCezg4o+w==} - engines: {node: '>= 14.15.0'} - hasBin: true - - cmd-shim@6.0.3: - resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - coinbase-api@1.0.5: - resolution: {integrity: sha512-5Rq6hYKnJNc9v4diD8M6PStSc2hwMgfOlB+pb1LSyh5q2xg9ZKi3Gu8ZVxaDnKXmgQgrjI4xJLMpc3fiLgzsew==} - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - colors@1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - - columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} - engines: {node: '>=8.0.0'} - - combine-promises@1.2.0: - resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} - engines: {node: '>=10'} - - combine-source-map@0.8.0: - resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@2.15.1: - resolution: {integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} - engines: {node: '>= 12.0.0'} - - common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - compare-versions@4.1.4: - resolution: {integrity: sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw==} - - complex.js@2.4.2: - resolution: {integrity: sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.5: - resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} - engines: {node: '>= 0.8.0'} - - compromise@14.14.3: - resolution: {integrity: sha512-nR/3bJJ/Q2LZF9is66s9zhwhm63zcZ+/EaZWUJ8PgEO40ROctfrKdYQmO+UbwVsrp1/crDhCrsMJu0rgo/JirQ==} - engines: {node: '>=12.0.0'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - - concurrently@6.5.1: - resolution: {integrity: sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==} - engines: {node: '>=10.0.0'} - hasBin: true - - concurrently@9.1.0: - resolution: {integrity: sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==} - engines: {node: '>=18'} - hasBin: true - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - configstore@6.0.0: - resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} - engines: {node: '>=12'} - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} - engines: {node: ^14.18.0 || >=16.10.0} - - console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - console.table@0.10.0: - resolution: {integrity: sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==} - engines: {node: '> 0.10'} - - consolidated-events@2.0.2: - resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - content-disposition@0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - contentstream@1.0.0: - resolution: {integrity: sha512-jqWbfFZFG9tZbdej7+TzXI4kanABh3BLtTWY6NxqTK5zo6iTIeo5aq4iRVfYsLQ0y8ccQqmJR/J4NeMmEdnR2w==} - engines: {node: '>= 0.8.0'} - - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} - - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} - - conventional-changelog-core@5.0.1: - resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} - engines: {node: '>=14'} - - conventional-changelog-preset-loader@3.0.0: - resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} - engines: {node: '>=14'} - - conventional-changelog-writer@6.0.1: - resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} - engines: {node: '>=14'} - hasBin: true - - conventional-commits-filter@3.0.0: - resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} - engines: {node: '>=14'} - - conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} - hasBin: true - - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true - - conventional-recommended-bump@7.0.1: - resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} - engines: {node: '>=14'} - hasBin: true - - convert-hrtime@5.0.0: - resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} - engines: {node: '>=12'} - - convert-source-map@1.1.3: - resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} - - copy-text-to-clipboard@3.2.0: - resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} - engines: {node: '>=12'} - - copy-webpack-plugin@11.0.0: - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.1.0 - - core-js-compat@3.40.0: - resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} - - core-js-pure@3.40.0: - resolution: {integrity: sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==} - - core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - - core-js@3.40.0: - resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} - - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - cose-base@1.0.3: - resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} - - cose-base@2.2.0: - resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - - cosmiconfig-typescript-loader@5.1.0: - resolution: {integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==} - engines: {node: '>=v16'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=8.2' - typescript: '>=4' - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.1.3: - resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} - engines: {node: '>=14'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cosmjs-types@0.8.0: - resolution: {integrity: sha512-Q2Mj95Fl0PYMWEhA2LuGEIhipF7mQwd9gTQ85DdP9jjjopeoGaDxvmPa5nakNzsq7FnO1DMTatXTAx6bxMH7Lg==} - - cosmjs-types@0.9.0: - resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - croner@4.1.97: - resolution: {integrity: sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-fetch@3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} - - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - - cross-fetch@4.1.0: - resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crossws@0.3.1: - resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} - - crypto-browserify@3.12.1: - resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} - engines: {node: '>= 0.10'} - - crypto-hash@1.3.0: - resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} - engines: {node: '>=8'} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - - css-blank-pseudo@7.0.1: - resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-has-pseudo@7.0.2: - resolution: {integrity: sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - css-loader@6.11.0: - resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-minimizer-webpack-plugin@5.0.1: - resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@parcel/css': '*' - '@swc/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - lightningcss: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - '@swc/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - - css-prefers-color-scheme@10.0.0: - resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-selector-parser@1.4.1: - resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssdb@8.2.3: - resolution: {integrity: sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-advanced@6.1.2: - resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-preset-default@6.1.2: - resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@4.0.2: - resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@6.1.2: - resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} - engines: {node: '>=18'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-parse@5.6.0: - resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv-stringify@6.5.2: - resolution: {integrity: sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==} - - csv-writer@1.6.0: - resolution: {integrity: sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - - culvert@0.1.2: - resolution: {integrity: sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==} - - cwise-compiler@1.1.3: - resolution: {integrity: sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==} - - cyrb53@1.0.0: - resolution: {integrity: sha512-Elxs7damp1axRN+npujLik9K6q1QTd6nvJIVJ0IBTV8lCRsTgDeRnkGDTSxQYAbME7kzpooRXCG4UJYAyTe18w==} - - cytoscape-cose-bilkent@4.1.0: - resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} - peerDependencies: - cytoscape: ^3.2.0 - - cytoscape-fcose@2.2.0: - resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} - peerDependencies: - cytoscape: ^3.2.0 - - cytoscape@3.31.0: - resolution: {integrity: sha512-zDGn1K/tfZwEnoGOcHc0H4XazqAAXAuDpcYw9mUnUjATjqljyCNGJv8uEvbvxGaGHaVshxMecyl6oc6uKzRfbw==} - engines: {node: '>=0.10'} - - d3-array@2.12.1: - resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} - - d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - - d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - - d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - - d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} - - d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - - d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} - - d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} - - d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - - d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - - d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - - d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - - d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - - d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - - d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - - d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} - - d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - - d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - - d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - - d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - - d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - - d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - - d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - - d3-sankey@0.12.3: - resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - - d3-scale-chromatic@3.1.0: - resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} - engines: {node: '>=12'} - - d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - - d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - - d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - - d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - - d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - - d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - - d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - - d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 - - d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - - d3@7.9.0: - resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} - engines: {node: '>=12'} - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - dagre-d3-es@7.0.11: - resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - - dash-ast@1.0.0: - resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} - - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - - data-uri-to-buffer@0.0.3: - resolution: {integrity: sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw==} - - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - dataloader@2.2.3: - resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} - - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - - dateformat@3.0.3: - resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} - - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - dayjs@1.8.36: - resolution: {integrity: sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==} - - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - - debug-fabulous@2.0.2: - resolution: {integrity: sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA==} - engines: {node: '>= 8'} - - debug-logfmt@1.2.3: - resolution: {integrity: sha512-Btc8hrSu2017BcECwhnkKtA7+9qBRv06x8igvJRRyDcZo1cmEbwp/OmLDSJFuJ/wgrdF7TbtGeVV6FCxagJoNQ==} - engines: {node: '>= 8'} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - - decimal.js-light@2.5.1: - resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - defined@1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - delaunator@5.0.1: - resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - delimit-stream@0.1.0: - resolution: {integrity: sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==} - - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dependency-graph@0.11.0: - resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} - engines: {node: '>= 0.6.0'} - - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - - deps-sort@2.0.1: - resolution: {integrity: sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==} - hasBin: true - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - - detect-indent@5.0.0: - resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} - engines: {node: '>=4'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - detect-newline@2.1.0: - resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} - engines: {node: '>=0.10.0'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - detect-port-alt@1.1.6: - resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} - engines: {node: '>= 4.2.1'} - hasBin: true - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - - detective@5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - devtools-protocol@0.0.1107588: - resolution: {integrity: sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==} - - didyoumean2@7.0.4: - resolution: {integrity: sha512-+yW4SNY7W2DOWe2Jx5H4c2qMTFbLGM6wIyoDPkAPy66X+sD1KfYjBPAIWPVsYqMxelflaMQCloZDudELIPhLqA==} - engines: {node: ^18.12.0 || >=20.9.0} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - - dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - direction@1.0.4: - resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} - hasBin: true - - discord-api-types@0.37.100: - resolution: {integrity: sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA==} - - discord-api-types@0.37.115: - resolution: {integrity: sha512-ivPnJotSMrXW8HLjFu+0iCVs8zP6KSliMelhr7HgcB2ki1QzpORkb26m71l1pzSnnGfm7gb5n/VtRTtpw8kXFA==} - - discord-api-types@0.37.83: - resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==} - - discord-api-types@0.37.97: - resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==} - - discord.js@14.16.3: - resolution: {integrity: sha512-EPCWE9OkA9DnFFNrO7Kl1WHHDYFXu3CNVFJg63bfU7hVtjZGyhShwZtSBImINQRWxWP2tgo2XI+QhdXx28r0aA==} - engines: {node: '>=18'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - docusaurus-lunr-search@3.5.0: - resolution: {integrity: sha512-k3zN4jYMi/prWInJILGKOxE+BVcgYinwj9+gcECsYm52tS+4ZKzXQzbPnVJAEXmvKOfFMcDFvS3MSmm6cEaxIQ==} - engines: {node: '>= 8.10.0'} - peerDependencies: - '@docusaurus/core': ^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0 - react: ^16.8.4 || ^17 || ^18 - react-dom: ^16.8.4 || ^17 || ^18 - - docusaurus-plugin-typedoc@1.0.5: - resolution: {integrity: sha512-mv8LBJYilGOOPLqaIM3vbYc34m4qwOCpb4WfP24DOPFNj2uiTerw8sg9MGvN6Jx2+J8rq9/WMnjcyz3UMqoIIQ==} - peerDependencies: - typedoc-plugin-markdown: '>=4.0.0' - - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - dompurify@3.2.2: - resolution: {integrity: sha512-YMM+erhdZ2nkZ4fTNRTSI94mb7VG7uVF5vj5Zde7tImgnhZE3R6YW/IACGIHb2ux+QkEXMhe591N+5jWOmL4Zw==} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - - dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} - engines: {node: '>=12'} - - dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - - doublearray@0.0.2: - resolution: {integrity: sha512-aw55FtZzT6AmiamEj2kvmR6BuFqvYgKZUkfQ7teqVRNqD5UE0rw8IeW/3gieHNKQ5sPuDKlljWEn4bzv5+1bHw==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - easy-table@1.1.0: - resolution: {integrity: sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==} - - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - echogarden@2.0.7: - resolution: {integrity: sha512-/yggoJ2NEy5VZPcAtk4DoGNGgHIRicSS0uKfk06gT+GmRPJ28kKD3MgyjK3agtQ8yIc46si09nB+hWPYiruzXw==} - engines: {node: '>=18'} - os: [win32, darwin, linux] - hasBin: true - peerDependencies: - '@echogarden/vosk': ^0.3.39-patched.1 - winax: ^3.4.2 - peerDependenciesMeta: - '@echogarden/vosk': - optional: true - winax: - optional: true - - ed25519-hd-key@1.1.2: - resolution: {integrity: sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==} - - ed2curve@0.3.0: - resolution: {integrity: sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - efrt@2.7.0: - resolution: {integrity: sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ==} - engines: {node: '>=12.0.0'} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.83: - resolution: {integrity: sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - elliptic@6.6.1: - resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - emoticon@4.1.0: - resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} - engines: {node: '>=10.13.0'} - - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - enumify@1.0.4: - resolution: {integrity: sha512-5mwWXaVzJaqyUdOW/PDH5QySRgmQ8VvujmxmvXoXj9w0n+6omhVuyD56eI37FMqy/LxueJzsQ4DrHVQzuT/TXg==} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - env-var@7.5.0: - resolution: {integrity: sha512-mKZOzLRN0ETzau2W2QXefbFjo5EF4yWq28OyKb9ICdeNhHJlOE/pHHnz4hdYJ9cNZXcJHo5xN4OT4pzuSHSNvA==} - engines: {node: '>=10'} - - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-polyfill@0.1.3: - resolution: {integrity: sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==} - - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - - esbuild-plugin-polyfill-node@0.3.0: - resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} - peerDependencies: - esbuild: '*' - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-goat@4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} - engines: {node: '>=12'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-latex@1.2.0: - resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-import-resolver-typescript@3.7.0: - resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsdoc@46.10.1: - resolution: {integrity: sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==} - engines: {node: '>=16'} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-react-hooks@5.1.0: - resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - - eslint-plugin-react-refresh@0.4.18: - resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==} - peerDependencies: - eslint: '>=8.40' - - eslint-plugin-react@7.37.4: - resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - eslint@9.16.0: - resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - esm-env@1.2.2: - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - - esmify@2.1.1: - resolution: {integrity: sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==} - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espeak-ng@1.0.2: - resolution: {integrity: sha512-Xe4YC7d/+O06zYpsqrJ3LpbETdL/IO8JrnAmWcQEMoRFmMLWU+2y2HnpEkOCnqZfb40MBDVyP4ppfusKdWbPcQ==} - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrap@1.4.3: - resolution: {integrity: sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-value-to-estree@3.2.1: - resolution: {integrity: sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eta@2.2.0: - resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} - engines: {node: '>=6.0.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - ethereum-bloom-filters@1.2.0: - resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} - - ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - ethers@6.13.4: - resolution: {integrity: sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==} - engines: {node: '>=14.0.0'} - - ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} - - eval-estree-expression@2.0.3: - resolution: {integrity: sha512-6zXgUV+NHvx6PwHxPsIQ8T4cCUgsnhaH6ZyYF1OSKZIrkcAzvSvZgHAbdj72GlNm8eH6c8FI8ywcwqm42Xq1aQ==} - - eval@0.1.8: - resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} - engines: {node: '>= 0.8'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - event-lite@0.1.3: - resolution: {integrity: sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter2@0.4.14: - resolution: {integrity: sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==} - - eventemitter2@5.0.1: - resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} - - eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - - eventemitter3@3.1.2: - resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - eventsource-parser@1.1.2: - resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} - engines: {node: '>=14.18'} - - eventsource-parser@2.0.1: - resolution: {integrity: sha512-gMaRLm5zejEH9mNXC54AnIteFI9YwL/q5JKMdBnoG+lEI1JWVGFVk0Taaj9Xb5SKgzIBDZoQX5IzMe44ILWODg==} - engines: {node: '>=18.0.0'} - - eventsource-parser@3.0.0: - resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} - engines: {node: '>=18.0.0'} - - eventsource@2.0.2: - resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} - engines: {node: '>=12.0.0'} - - eventsource@3.0.2: - resolution: {integrity: sha512-YolzkJNxsTL3tCJMWFxpxtG2sCjbZ4LQUBUrkdaJK0ub0p6lmJt+2+1SwhKjLc652lpH9L/79Ptez972H9tphw==} - engines: {node: '>=18.0.0'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - execa@5.0.0: - resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} - engines: {node: '>=10'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - - express-prom-bundle@7.0.2: - resolution: {integrity: sha512-ffFV4HGHvCKnkNJFqm42sYztRJE5mLgOj8MpGey1HOatuFhtcwXoBD2m5gca7ZbcyjkIf7lOH5ZdrhlrBf0sGw==} - engines: {node: '>=18'} - peerDependencies: - prom-client: '>=15.0.0' - - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - extract-files@9.0.0: - resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} - engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} - - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - extrareqp2@1.0.0: - resolution: {integrity: sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==} - - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-patch@3.1.1: - resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - fast-uri@3.0.5: - resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} - - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true - - fastembed@1.14.1: - resolution: {integrity: sha512-Y14v+FWZwjNUpQ7mRGYu4N5yF+hZkF7zqzPWzzLbwdIEtYsHy0DSpiVJ+Fg6Oi1fQjrBKASQt0hdSMSjw1/Wtw==} - - fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - - fault@2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fclone@1.0.11: - resolution: {integrity: sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - feed@4.2.2: - resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} - engines: {node: '>=0.4.0'} - - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - fetch-cookie@3.1.0: - resolution: {integrity: sha512-s/XhhreJpqH0ftkGVcQt8JE9bqk+zRn4jF5mPJXWZeQMCI5odV9K+wEWYbnzFPHgQZlvPSMjS4n4yawWE8RINw==} - - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - - ffmpeg-static@5.2.0: - resolution: {integrity: sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==} - engines: {node: '>=16'} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - file-type-checker@1.1.2: - resolution: {integrity: sha512-HodBNiinBQNHQfXhXzAuHkU2udHF3LFS6PAOEZqxW+BjotZVCaMR7ckpTTnvLi718dbzRavnjRX0kbSb5pJG3g==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - filename-reserved-regex@3.0.0: - resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - filenamify@6.0.0: - resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==} - engines: {node: '>=16'} - - filesize@8.0.7: - resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} - engines: {node: '>= 0.4.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - - find-process@1.4.10: - resolution: {integrity: sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg==} - hasBin: true - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - find-versions@6.0.0: - resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} - engines: {node: '>=18'} - - flash-sdk@2.25.8: - resolution: {integrity: sha512-frKKnV15z6bydvtaxkhkJ3TqrPMVJl07Ubbwm0PQj3fFhIY1GfDDNS8UwuGJvyd6RXSj4pWnwbNntOo2N7FCKA==} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatbuffers@1.12.0: - resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} - - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - - fluent-ffmpeg@2.1.3: - resolution: {integrity: sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==} - engines: {node: '>=18'} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - fomo-sdk-solana@1.3.2: - resolution: {integrity: sha512-O5/NhB8Smb41ub6LST1ewLTvjlAz9DIPdgsjAwfjqUlzg+v/kK3AVsMOi7JI7iuJ4B5y44h2ylhPWFnP9FZR/g==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - for-in@0.1.8: - resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} - engines: {node: '>=0.10.0'} - - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - for-own@0.1.5: - resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} - engines: {node: '>=0.10.0'} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - fork-ts-checker-webpack-plugin@6.5.3: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - form-data-encoder@1.7.2: - resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - - form-data@2.5.2: - resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} - engines: {node: '>= 0.12'} - - form-data@3.0.2: - resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} - engines: {node: '>= 6'} - - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - - formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} - - formdata-node@6.0.3: - resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==} - engines: {node: '>= 18'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fs@0.0.1-security: - resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fuels@0.97.2: - resolution: {integrity: sha512-H7I4RR55XLPfsvgG/xTgj0CZ7Y4oYj2KACDXXa8QdypOMeD6BFu+7EBy6dE+LftbjE09xNzItLlYsdZbcOTgKg==} - engines: {node: ^18.20.3 || ^20.0.0 || ^22.0.0} - hasBin: true - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function-timeout@1.0.2: - resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} - engines: {node: '>=18'} - - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - fuse.js@7.0.0: - resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} - engines: {node: '>=10'} - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - gaxios@6.7.1: - resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} - engines: {node: '>=14'} - - gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - - generate-function@2.3.1: - resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} - - generate-object-property@1.2.0: - resolution: {integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==} - - genlayer-js@0.4.7: - resolution: {integrity: sha512-vp+7spuVaX7vflZd2q7qmaYgi5Cf7S/h4lAoVhAkFdyAsDStvhtwCdJGcZDt+U77AWxo3I1mUMXz0sk9ER3JXQ==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-assigned-identifiers@1.2.0: - resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-pixels-jpeg-js-upgrade@3.3.0-jpeg-js-upgrade.0: - resolution: {integrity: sha512-3GQfE+K7GPp04Rbxh4GQhvGNPStlVYkW8b3hhsAD/3sDuBM5js1hnsNRptMIwyTrAjUoezEnUCFxhnQ0OLi3Sg==} - - get-pkg-repo@4.2.1: - resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} - engines: {node: '>=6.9.0'} - hasBin: true - - get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.0: - resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} - engines: {node: '>=10'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - - get-uri@6.0.4: - resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} - engines: {node: '>= 14'} - - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - - gif-encoder@0.4.3: - resolution: {integrity: sha512-HMfSa+EIng62NbDhM63QGYoc49/m8DcZ9hhBtw+CXX9mKboSpeFVxjZ2WEWaMFZ14MUjfACK7jsrxrJffIVrCg==} - engines: {node: '>= 0.8.0'} - - gif-frames@0.4.1: - resolution: {integrity: sha512-BSqFuIz4qeZsX7wKDlwyF6qkGyUAgoYNRFJs7v8P97qvBz1FmzyRFHA/EWi/81OMHb0xQdps1X8BYrTyI3e3Aw==} - - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true - - git-node-fs@1.0.0: - resolution: {integrity: sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==} - peerDependencies: - js-git: ^0.7.8 - peerDependenciesMeta: - js-git: - optional: true - - git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - - git-raw-commits@3.0.0: - resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} - engines: {node: '>=14'} - hasBin: true - - git-remote-origin-url@2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} - engines: {node: '>=4'} - - git-semver-tags@5.0.1: - resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} - engines: {node: '>=14'} - hasBin: true - - git-sha1@0.1.2: - resolution: {integrity: sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==} - - git-up@7.0.0: - resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} - - git-url-parse@14.0.0: - resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} - - gitconfiglocal@1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - - global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.14.0: - resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} - engines: {node: '>=18'} - - globals@9.18.0: - resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} - engines: {node: '>=0.10.0'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - google-auth-library@9.15.0: - resolution: {integrity: sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==} - engines: {node: '>=14'} - - google-protobuf@3.21.4: - resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - got@11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} - - got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} - - gql.tada@1.8.10: - resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - grad-school@0.0.5: - resolution: {integrity: sha512-rXunEHF9M9EkMydTBux7+IryYXEZinRk6g8OBOGDBzo/qWJjhTxy86i5q7lQYpCLHN8Sqv1XX3OIOc7ka2gtvQ==} - engines: {node: '>=8.0.0'} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - graphemesplit@2.4.4: - resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} - - graphql-request@4.3.0: - resolution: {integrity: sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==} - peerDependencies: - graphql: 14 - 16 - - graphql-request@6.1.0: - resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} - peerDependencies: - graphql: 14 - 16 - - graphql-tag@2.12.6: - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - graphql@16.10.0: - resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - groq-sdk@0.5.0: - resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} - - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - - guid-typescript@1.0.9: - resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - h3@1.13.1: - resolution: {integrity: sha512-u/z6Z4YY+ANZ05cRRfsFJadTBrNA6e3jxdU+AN5UCbZSZEUwgHiwjvUEe0k1NoQmAvQmETwr+xB5jd7mhCJuIQ==} - - hachure-fill@0.5.2: - resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - has-yarn@3.0.0: - resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - hash-base@3.0.5: - resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} - engines: {node: '>= 0.10'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-parse5@6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - - hast-util-from-parse5@8.0.2: - resolution: {integrity: sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==} - - hast-util-has-property@1.0.4: - resolution: {integrity: sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==} - - hast-util-is-element@1.1.0: - resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==} - - hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.1.0: - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - - hast-util-select@4.0.2: - resolution: {integrity: sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==} - - hast-util-to-estree@3.1.1: - resolution: {integrity: sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==} - - hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} - - hast-util-to-jsx-runtime@2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@1.0.4: - resolution: {integrity: sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==} - - hast-util-to-text@2.0.1: - resolution: {integrity: sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==} - - hast-util-whitespace@1.0.4: - resolution: {integrity: sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} - - hastscript@9.0.0: - resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - headers-polyfill@3.3.0: - resolution: {integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==} - - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - - hi-base32@0.5.1: - resolution: {integrity: sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==} - - history@4.10.1: - resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - hogan.js@3.0.2: - resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} - hasBin: true - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} - - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-escaper@3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - - html-minifier-terser@7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - - html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-webpack-plugin@5.6.3: - resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - htmlescape@1.1.1: - resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==} - engines: {node: '>=0.10'} - - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - - http-errors@1.7.2: - resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} - engines: {node: '>= 0.6'} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - http-proxy-middleware@2.0.7: - resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - http-response-object@3.0.2: - resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} - - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - - http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - - https-proxy-agent@4.0.0: - resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} - engines: {node: '>= 6.0.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} - hasBin: true - - hyperliquid@1.5.6: - resolution: {integrity: sha512-0amApm9Y2TOxg7bgqyPT8BMPXRtcII2cDEk18i1jzlsV+PTg+AwLSENWT6UUfl6UYgfbHvgvYLn/NvLy2dROUg==} - engines: {node: '>=16.0.0'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - - ignore-walk@6.0.5: - resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - image-size@1.2.0: - resolution: {integrity: sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==} - engines: {node: '>=16.x'} - hasBin: true - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - immediate@3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - - import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - import-meta-resolve@3.1.1: - resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} - - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - infima@0.2.0-alpha.45: - resolution: {integrity: sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==} - engines: {node: '>=12'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - - ini@4.1.3: - resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - init-package-json@6.0.3: - resolution: {integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==} - engines: {node: ^16.14.0 || >=18.0.0} - - inline-source-map@0.6.3: - resolution: {integrity: sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==} - - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - - input-otp@1.4.2: - resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - - insert-module-globals@7.2.1: - resolution: {integrity: sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==} - hasBin: true - - int64-buffer@0.1.10: - resolution: {integrity: sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==} - - interchain@1.10.4: - resolution: {integrity: sha512-tyJ3mfcuYqwLb3iZyuXDMOwMjWYptgiZrl6tu50pSSYoWrPN/9B6ztEC4IkYT1oKmWVOAiacNYuSRNmMUuWsmA==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - internmap@1.0.1: - resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} - - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ioredis@5.4.2: - resolution: {integrity: sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==} - engines: {node: '>=12.22.0'} - - iota-array@1.0.0: - resolution: {integrity: sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA==} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - ip-regex@4.3.0: - resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} - engines: {node: '>=8'} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - ipull@3.9.2: - resolution: {integrity: sha512-YbCDsqcf0ytc3b8304ygBlvRtKJTvyygkQX2xcmPkih6vdVKbRw13pDdtSR+vEqLql3owyuPj9m6iT6IfwFaCg==} - engines: {node: '>=18.0.0'} - hasBin: true - - iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - - irys@0.0.1: - resolution: {integrity: sha512-4ZUpC7cj7PjKjPeP/4j/JiEdev89dRoGdLZtv0wHnHCOEtCTbn/pJh1DukQ/NB+kBXCwMWiNke/bZrQoU9EndQ==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-async-function@2.1.0: - resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} - engines: {node: '>= 0.4'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - - is-bun-module@1.3.0: - resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-electron@2.2.2: - resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-ip@3.1.0: - resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} - engines: {node: '>=8'} - - is-ipfs@0.6.3: - resolution: {integrity: sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ==} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-my-ip-valid@1.0.1: - resolution: {integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==} - - is-my-json-valid@2.20.6: - resolution: {integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==} - - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-npm@6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-property@1.0.2: - resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-reference@3.0.3: - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - - is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - - is-root@2.1.0: - resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} - engines: {node: '>=6'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.0: - resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} - engines: {node: '>=8'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - - is-unix@2.0.10: - resolution: {integrity: sha512-CcasZSEOQUoE7JHy56se4wyRhdJfjohuMWYmceSTaDY4naKyd1fpLiY8rJsIT6AKfVstQAhHJOfPx7jcUxK61Q==} - engines: {node: '>= 12'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-yarn-global@0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - iso-url@0.4.7: - resolution: {integrity: sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==} - engines: {node: '>=10'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isomorphic-fetch@3.0.0: - resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} - - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - - isows@1.0.6: - resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} - peerDependencies: - ws: '*' - - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - iterare@1.2.1: - resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} - engines: {node: '>=6'} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - javascript-natural-sort@0.7.1: - resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} - - jayson@4.1.3: - resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} - engines: {node: '>=8'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jieba-wasm@2.2.0: - resolution: {integrity: sha512-IwxgUf+EMutjLair3k41i0ApM33qeHNY9EFBKlI5/XtHcISkGt5YPmUvpDJe3hUflwRYhy9g29ZzTetGZw6XgQ==} - - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - - jiti@2.4.0: - resolution: {integrity: sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==} - hasBin: true - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - jose@5.9.6: - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - jpeg-js@0.3.7: - resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} - - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - - js-git@0.7.8: - resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} - - js-sha1@0.7.0: - resolution: {integrity: sha512-oQZ1Mo7440BfLSv9TX87VNEyU52pXPVG19F9PL3gTgNt0tVxlZ8F4O6yze3CLuLx28TxotxvlyepCNaaV0ZjMw==} - - js-sha256@0.11.0: - resolution: {integrity: sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==} - - js-sha256@0.9.0: - resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-sha512@0.8.0: - resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} - - js-tiktoken@1.0.15: - resolution: {integrity: sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ==} - - js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbi@3.2.5: - resolution: {integrity: sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==} - - jsbi@4.3.0: - resolution: {integrity: sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==} - - jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} - engines: {node: '>=12.0.0'} - - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stable-stringify@1.2.1: - resolution: {integrity: sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==} - engines: {node: '>= 0.4'} - - json-stringify-nice@1.1.4: - resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json-text-sequence@0.1.1: - resolution: {integrity: sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - - jsondiffpatch@0.6.0: - resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - - jsrsasign@11.1.0: - resolution: {integrity: sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==} - - jssha@3.2.0: - resolution: {integrity: sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==} - - jstat@1.9.6: - resolution: {integrity: sha512-rPBkJbK2TnA8pzs93QcDDPlKcrtZWuuCo2dVR0TFLOJSxhqfWOVCSp8aV3/oSbn+4uY4yw1URtLpHQedtmXfug==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - - just-diff-apply@5.5.0: - resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} - - just-diff@6.0.2: - resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} - - jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - - jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - - jwt-decode@3.1.2: - resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} - - jwt-decode@4.0.0: - resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} - engines: {node: '>=18'} - - katex@0.16.20: - resolution: {integrity: sha512-jjuLaMGD/7P8jUTpdKhA9IoqnH+yMFB3sdAFtq5QdAqeP2PjiSbnC3EaguKPNtv6dXXanHxp1ckwvF4a86LBig==} - hasBin: true - - keccak256@1.0.6: - resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} - - keccak@3.0.2: - resolution: {integrity: sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==} - engines: {node: '>=10.0.0'} - - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - - keytar@7.9.0: - resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - - khroma@2.1.0: - resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - - kind-of@2.0.1: - resolution: {integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==} - engines: {node: '>=0.10.0'} - - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - - kuromoji@0.1.2: - resolution: {integrity: sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==} - - labeled-stream-splicer@2.0.2: - resolution: {integrity: sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==} - - langchain@0.3.11: - resolution: {integrity: sha512-PgAG4ZLeuSRkKsyf98cmWGdwKv3I1hOFC8a4fr7e+bm7E+F6Fx6xUkgbuC78ff0N/Cjs5BBryZIFMrqoKPqsvg==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/anthropic': '*' - '@langchain/aws': '*' - '@langchain/cerebras': '*' - '@langchain/cohere': '*' - '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/google-genai': '*' - '@langchain/google-vertexai': '*' - '@langchain/google-vertexai-web': '*' - '@langchain/groq': '*' - '@langchain/mistralai': '*' - '@langchain/ollama': '*' - axios: '*' - cheerio: '*' - handlebars: ^4.7.8 - peggy: ^3.0.2 - typeorm: '*' - peerDependenciesMeta: - '@langchain/anthropic': - optional: true - '@langchain/aws': - optional: true - '@langchain/cerebras': - optional: true - '@langchain/cohere': - optional: true - '@langchain/google-genai': - optional: true - '@langchain/google-vertexai': - optional: true - '@langchain/google-vertexai-web': - optional: true - '@langchain/groq': - optional: true - '@langchain/mistralai': - optional: true - '@langchain/ollama': - optional: true - axios: - optional: true - cheerio: - optional: true - handlebars: - optional: true - peggy: - optional: true - typeorm: - optional: true - - langchain@0.3.6: - resolution: {integrity: sha512-erZOIKXzwCOrQHqY9AyjkQmaX62zUap1Sigw1KrwMUOnVoLKkVNRmAyxFlNZDZ9jLs/58MaQcaT9ReJtbj3x6w==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/anthropic': '*' - '@langchain/aws': '*' - '@langchain/cohere': '*' - '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/google-genai': '*' - '@langchain/google-vertexai': '*' - '@langchain/groq': '*' - '@langchain/mistralai': '*' - '@langchain/ollama': '*' - axios: '*' - cheerio: '*' - handlebars: ^4.7.8 - peggy: ^3.0.2 - typeorm: '*' - peerDependenciesMeta: - '@langchain/anthropic': - optional: true - '@langchain/aws': - optional: true - '@langchain/cohere': - optional: true - '@langchain/google-genai': - optional: true - '@langchain/google-vertexai': - optional: true - '@langchain/groq': - optional: true - '@langchain/mistralai': - optional: true - '@langchain/ollama': - optional: true - axios: - optional: true - cheerio: - optional: true - handlebars: - optional: true - peggy: - optional: true - typeorm: - optional: true - - langdetect@0.2.1: - resolution: {integrity: sha512-vWK2xz8Urp6J0RFwnrR8+d0DQ2yIGjCOqAxBoXNMVFv4ZDmFsbCcNEtwuVnaQ5+ltwZ4Z5rTtuTwHSaEWFdw+A==} - - langium@3.0.0: - resolution: {integrity: sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==} - engines: {node: '>=16.0.0'} - - langsmith@0.2.15: - resolution: {integrity: sha512-homtJU41iitqIZVuuLW7iarCzD4f39KcfP9RTBWav9jifhrsDa1Ez89Ejr+4qi72iuBu8Y5xykchsGVgiEZ93w==} - peerDependencies: - openai: '*' - peerDependenciesMeta: - openai: - optional: true - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} - - launch-editor@2.9.1: - resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} - - layout-base@1.0.2: - resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} - - layout-base@2.0.1: - resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - - lazy-cache@0.2.7: - resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} - engines: {node: '>=0.10.0'} - - lazy-cache@1.0.4: - resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} - engines: {node: '>=0.10.0'} - - lazy@1.0.11: - resolution: {integrity: sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==} - engines: {node: '>=0.2.0'} - - leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - - lerna@8.1.5: - resolution: {integrity: sha512-/eigpa/JTfKl9RP9QHK9Tifeog+dymYICqBoZlR4fjp94ol2Q6adYQHy8dWRkv0VPrHh/Xuy5VlmPaGvIoGeDw==} - engines: {node: '>=18.0.0'} - hasBin: true - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - libnpmaccess@8.0.6: - resolution: {integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==} - engines: {node: ^16.14.0 || >=18.0.0} - - libnpmpublish@9.0.9: - resolution: {integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==} - engines: {node: ^16.14.0 || >=18.0.0} - - libsodium-sumo@0.7.15: - resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} - - libsodium-wrappers-sumo@0.7.15: - resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} - - libsodium-wrappers@0.7.15: - resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} - - libsodium@0.7.15: - resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} - - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - - lifecycle-utils@1.7.3: - resolution: {integrity: sha512-T7zs7J6/sgsqwVyG34Sfo5LTQmlPmmqaUe3yBhdF8nq24RtR/HtbkNZRhNbr9BEaKySdSgH+P9H5U9X+p0WjXw==} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - - lint-staged@15.2.10: - resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.2.5: - resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} - engines: {node: '>=18.0.0'} - - lit-connect-modal@0.1.11: - resolution: {integrity: sha512-EG6pcCqdxZQJt3MPDq3gJ5Sz4E5sJdydtAF7VFJu6z6GDHO1Ybp8WrTx8CUnHiF54/MQBRi6Nb7cbTvv+BKWvQ==} - - lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} - - lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} - - lit-siwe@1.1.8: - resolution: {integrity: sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw==} - peerDependencies: - '@ethersproject/contracts': ^5.2.0 - '@ethersproject/hash': ^5.4.0 - '@ethersproject/providers': ^5.2.0 - '@ethersproject/wallet': ^5.2.0 - - lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} - - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - - load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - - local-pkg@0.5.1: - resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} - engines: {node: '>=14'} - - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.deburr@4.1.0: - resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} - - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.ismatch@4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.memoize@3.0.4: - resolution: {integrity: sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - log-symbols@7.0.0: - resolution: {integrity: sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==} - engines: {node: '>=18'} - - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - - long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - - long@5.2.4: - resolution: {integrity: sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lossless-json@4.0.2: - resolution: {integrity: sha512-+z0EaLi2UcWi8MZRxA5iTb6m4Ys4E80uftGY+yG5KNFJb5EceQXOhdW/pWJZ8m97s26u7yZZAYMcKWNztSZssA==} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - - lowdb@7.0.1: - resolution: {integrity: sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==} - engines: {node: '>=18'} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - lru_map@0.4.1: - resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} - - lucide-react@0.469.0: - resolution: {integrity: sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - lunr-languages@1.14.0: - resolution: {integrity: sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==} - - lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - - mafmt@7.1.0: - resolution: {integrity: sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA==} - - magic-bytes.js@1.10.0: - resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-fetch-happen@13.0.1: - resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} - engines: {node: ^16.14.0 || >=18.0.0} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true - - markdown-table@2.0.0: - resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - marked@13.0.3: - resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} - engines: {node: '>= 18'} - hasBin: true - - math-expression-evaluator@2.0.6: - resolution: {integrity: sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mathjs@9.5.2: - resolution: {integrity: sha512-c0erTq0GP503/Ch2OtDOAn50GIOsuxTMjmE00NI/vKJFSWrDaQHRjx6ai+16xYv70yBSnnpUgHZGNf9FR9IwmA==} - engines: {node: '>= 12'} - hasBin: true - - md4w@0.2.6: - resolution: {integrity: sha512-CBLQ2PxVe9WA+/nndZCx/Y+1C3DtmtSeubmXTPhMIgsXtq9gVGleikREko5FYnV6Dz4cHDWm0Ea+YMLpIjP4Kw==} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - mdast-util-directive@3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - - mdast-util-frontmatter@2.0.1: - resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdbox@0.1.1: - resolution: {integrity: sha512-jvLISenzbLRPWWamTG3THlhTcMbKWzJQNyTi61AVXhCBOC+gsldNTUfUNH8d3Vay83zGehFw3wZpF3xChzkTIQ==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - memoizee@0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} - - memory-stream@1.0.0: - resolution: {integrity: sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} - - meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - - merge-deep@3.0.3: - resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==} - engines: {node: '>=0.10.0'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merkletreejs@0.3.11: - resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} - engines: {node: '>= 7.6.0'} - - mermaid@11.4.1: - resolution: {integrity: sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - - micromark-core-commonmark@2.0.2: - resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} - - micromark-extension-directive@3.0.2: - resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} - - micromark-extension-frontmatter@2.0.0: - resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.0.3: - resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} - - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - - micromark-util-types@2.0.1: - resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - - micromark@4.0.1: - resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - micromodal@0.4.10: - resolution: {integrity: sha512-BUrEnzMPFBwK8nOE4xUDYHLrlGlLULQVjpja99tpJQPSUEWgw3kTLp1n1qv0HmKU29AiHE7Y7sMLiRziDK4ghQ==} - engines: {node: '>=10'} - - microsoft-cognitiveservices-speech-sdk@1.42.0: - resolution: {integrity: sha512-ERrS1rwPPCN1foOwlJv3XmKO4NtBchjW+zYPQBgv4ffRfh87DcxuISXICPDjvlAU61w/r+y6p1W0pnX3gwVZ7A==} - - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - - mime-db@1.33.0: - resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} - engines: {node: '>= 0.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.18: - resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - - mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - - mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - mini-css-extract-plugin@2.9.2: - resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - - minimatch@3.0.5: - resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-fetch@3.0.5: - resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} - engines: {node: '>= 18'} - - mipd@0.0.7: - resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - mitt@3.0.0: - resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} - - mixin-object@2.0.1: - resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} - engines: {node: '>=0.10.0'} - - mixme@0.5.10: - resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} - engines: {node: '>= 8.0.0'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.3.0: - resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - - mkdist@1.6.0: - resolution: {integrity: sha512-nD7J/mx33Lwm4Q4qoPgRBVA9JQNKgyE7fLo5vdPWVDdjz96pXglGERp/fRnGPCTB37Kykfxs5bDdXa9BWOT9nw==} - hasBin: true - peerDependencies: - sass: ^1.78.0 - typescript: '>=5.5.4' - vue-tsc: ^1.8.27 || ^2.0.21 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue-tsc: - optional: true - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - - mock-socket@9.3.1: - resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} - engines: {node: '>= 8'} - - modify-values@1.0.1: - resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} - engines: {node: '>=0.10.0'} - - module-deps@6.2.3: - resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} - engines: {node: '>= 0.8.0'} - hasBin: true - - module-details-from-path@1.0.3: - resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} - - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - - motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - msgpack-lite@0.1.26: - resolution: {integrity: sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==} - hasBin: true - - multer@1.4.5-lts.1: - resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} - engines: {node: '>= 6.0.0'} - - multi-integer-range@3.0.0: - resolution: {integrity: sha512-uQzynjVJ8F7x5wjaK0g4Ybhy2TvO/pk96+YHyS5g1W4GuUEV6HMebZ8HcRwWgKIRCUT2MLbM5uCKwYcAqkS+8Q==} - - multiaddr@7.5.0: - resolution: {integrity: sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw==} - deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr - - multibase@0.6.1: - resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} - deprecated: This module has been superseded by the multiformats module - - multibase@0.7.0: - resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} - deprecated: This module has been superseded by the multiformats module - - multibase@1.0.1: - resolution: {integrity: sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw==} - engines: {node: '>=10.0.0', npm: '>=6.0.0'} - deprecated: This module has been superseded by the multiformats module - - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - - multicodec@1.0.4: - resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} - deprecated: This module has been superseded by the multiformats module - - multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - - multihashes@0.4.21: - resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} - - multihashes@1.0.1: - resolution: {integrity: sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw==} - engines: {node: '>=10.0.0', npm: '>=6.0.0'} - - multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - - multistream@4.1.0: - resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} - - mustache@4.0.0: - resolution: {integrity: sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==} - engines: {npm: '>=1.4.0'} - hasBin: true - - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nan@2.22.0: - resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - - nanoassert@1.1.0: - resolution: {integrity: sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==} - - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@5.0.9: - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} - engines: {node: ^18 || >=20} - hasBin: true - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - ndarray-ops@1.2.2: - resolution: {integrity: sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw==} - - ndarray-pack@1.2.1: - resolution: {integrity: sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==} - - ndarray@1.0.19: - resolution: {integrity: sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==} - - near-abi@0.1.1: - resolution: {integrity: sha512-RVDI8O+KVxRpC3KycJ1bpfVj9Zv+xvq9PlW1yIFl46GhrnLw83/72HqHGjGDjQ8DtltkcpSjY9X3YIGZ+1QyzQ==} - - near-api-js@0.44.2: - resolution: {integrity: sha512-eMnc4V+geggapEUa3nU2p8HSHn/njtloI4P2mceHQWO8vDE1NGpnAw8FuTBrLmXSgIv9m6oocgFc9t3VNf5zwg==} - - near-api-js@5.0.1: - resolution: {integrity: sha512-ZSQYIQdekIvSRfOFuRj6MW11jtK5lsOaiWM2VB0nq7eROuuxwSSXHg+syjCXl3HNNZ3hzg0CNdp+5Za0X1ZtYg==} - - near-hd-key@1.2.1: - resolution: {integrity: sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg==} - - near-seed-phrase@0.2.1: - resolution: {integrity: sha512-feMuums+kVL3LSuPcP4ld07xHCb2mu6z48SGfP3W+8tl1Qm5xIcjiQzY2IDPBvFgajRDxWSb8GzsRHoInazByw==} - - needle@2.4.0: - resolution: {integrity: sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==} - engines: {node: '>= 4.4.x'} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - net@1.0.2: - resolution: {integrity: sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ==} - - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - - neverthrow@7.2.0: - resolution: {integrity: sha512-iGBUfFB7yPczHHtA8dksKTJ9E8TESNTAx1UQWW6TzMF280vo9jdPYpLUXrMN1BCkPdHFdNG3fxOt2CUad8KhAw==} - engines: {node: '>=18'} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - nock@13.5.6: - resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} - engines: {node: '>= 10.13'} - - node-abi@3.73.0: - resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} - engines: {node: '>=10'} - - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - - node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-addon-api@8.3.0: - resolution: {integrity: sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==} - engines: {node: ^18 || ^20 || >= 21} - - node-api-headers@1.4.0: - resolution: {integrity: sha512-u83U3WnRbBpWlhc0sQbpF3slHRLV/a6/OXByc+QzHcLxiDiJUWLuKGZp4/ntZUchnXGOCnCq++JUEtwb1/tyow==} - - node-bitmap@0.0.1: - resolution: {integrity: sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==} - engines: {node: '>=v0.6.5'} - - node-cache@5.1.2: - resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} - engines: {node: '>= 8.0.0'} - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-emoji@2.2.0: - resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} - engines: {node: '>=18'} - - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - node-gyp@10.3.1: - resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-jose@2.2.0: - resolution: {integrity: sha512-XPCvJRr94SjLrSIm4pbYHKLEaOsDvJCpyFw/6V/KK/IXmyZ6SFBzAUDO9HQf4DB/nTEFcRGH87mNciOP23kFjw==} - - node-llama-cpp@3.1.1: - resolution: {integrity: sha512-CyXwxlJiAAELhy265wndAwV+nrUvVJk7+BjiYtz8BAUXCPpzZTeZTNnmcDO21FTutQyRuWhiNA/yzOLeDvmuAQ==} - engines: {node: '>=18.0.0'} - hasBin: true - peerDependencies: - typescript: '>=5.0.0' - peerDependenciesMeta: - typescript: - optional: true - - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - nodejs-whisper@0.1.18: - resolution: {integrity: sha512-2FETHL/Ur46jIEh3H4bhJ0WAdPJxWBcaLPcdHCy6oDAXfD7ZGomQAiIL+musqtY1G1IV6/5+zUZJNxdZIsfy6A==} - hasBin: true - - nodemon@3.1.7: - resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==} - engines: {node: '>=10'} - hasBin: true - - nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} - engines: {node: ^16.14.0 || >=18.0.0} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - - not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - - npm-bundled@3.0.1: - resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-install-checks@6.3.0: - resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-package-arg@11.0.2: - resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-packlist@8.0.2: - resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-pick-manifest@9.1.0: - resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-registry-fetch@17.1.0: - resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - - nssocket@0.6.0: - resolution: {integrity: sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==} - engines: {node: '>= 0.10.x'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - null-loader@4.0.1: - resolution: {integrity: sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} - - nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - - nx@19.8.14: - resolution: {integrity: sha512-yprBOWV16eQntz5h5SShYHMVeN50fUb6yHfzsqNiFneCJeyVjyJ585m+2TuVbE11vT1amU0xCjHcSGfJBBnm8g==} - hasBin: true - peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true - - nypm@0.3.12: - resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - o3@1.0.3: - resolution: {integrity: sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==} - - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} - engines: {node: '>= 0.4'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - - octokit@4.1.0: - resolution: {integrity: sha512-/UrQAOSvkc+lUUWKNzy4ByAgYU9KpFzZQt8DnC962YmQuDiZb1SNJ90YukCCK5aMzKqqCA+z1kkAlmzYvdYKag==} - engines: {node: '>= 18'} - - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - - ohash@1.1.4: - resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} - - ollama-ai-provider@0.16.1: - resolution: {integrity: sha512-0vSQVz5Y/LguyzfO4bi1JrrVGF/k2JvO8/uFR0wYmqDFp8KPp4+AhdENSynGBr1oRhMWOM4F1l6cv7UNDgRMjw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - omggif@1.0.10: - resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} - - on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - oniguruma-to-es@2.0.0: - resolution: {integrity: sha512-pE7+9jQgomy10aK6BJKRNHj1Nth0YLOzb3iRuhlz4gRzNSBSd7hga6U8BE6o0SoSuSkqv+PPtt511Msd1Hkl0w==} - - only-allow@1.2.1: - resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==} - hasBin: true - - onnxruntime-common@1.20.0-dev.20241016-2b8fc5529b: - resolution: {integrity: sha512-KZK8b6zCYGZFjd4ANze0pqBnqnFTS3GIVeclQpa2qseDpXrCQJfkWBixRcrZShNhm3LpFOZ8qJYFC5/qsJK9WQ==} - - onnxruntime-common@1.20.1: - resolution: {integrity: sha512-YiU0s0IzYYC+gWvqD1HzLc46Du1sXpSiwzKb63PACIJr6LfL27VsXSXQvt68EzD3V0D5Bc0vyJTjmMxp0ylQiw==} - - onnxruntime-node@1.20.1: - resolution: {integrity: sha512-di/I4HDXRw+FLgq+TyHmQEDd3cEp9iFFZm0r4uJ1Wd7b/WE1VXtKWo8yemex347c6GNF/3Pv86ZfPhIWxORr0w==} - os: [win32, darwin, linux] - - onnxruntime-web@1.21.0-dev.20241024-d9ca84ef96: - resolution: {integrity: sha512-ANSQfMALvCviN3Y4tvTViKofKToV1WUb2r2VjZVCi3uUBPaK15oNJyIxhsNyEckBr/Num3JmSXlkHOD8HfVzSQ==} - - open-jsonrpc-provider@0.2.1: - resolution: {integrity: sha512-b+pRxakRwAqp+4OTh2TeH+z2zwVGa0C4fbcwIn6JsZdjd4VBmsp7KfCdmmV3XH8diecwXa5UILCw4IwAtk1DTQ==} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openai@4.73.0: - resolution: {integrity: sha512-NZstV77w3CEol9KQTRBRQ15+Sw6nxVTicAULSjYO4wn9E5gw72Mtp3fAVaBFXyyVPws4241YmFG6ya4L8v03tA==} - hasBin: true - peerDependencies: - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true - - openai@4.78.1: - resolution: {integrity: sha512-drt0lHZBd2lMyORckOXFPQTmnGLWSLt8VK0W9BhOKWpMFBEoHMoz5gxMPmVq5icp+sOrsbMnsmZTVHUlKvD1Ow==} - hasBin: true - peerDependencies: - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true - - openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - - openapi-zod-client@1.18.2: - resolution: {integrity: sha512-mfqBxwnGbnfK1CwQb6TBmu8CqVUlHD013Aw82JhDf0iGZsd5oemlPzO8QtteLAaAE6cmLNmSG/tQeBjQV0vB9g==} - hasBin: true - - openapi3-ts@3.1.0: - resolution: {integrity: sha512-1qKTvCCVoV0rkwUh1zq5o8QyghmwYPuhdvtjv1rFjuOnJToXhQyF8eGjNETQ8QmGjr9Jz/tkAKLITIl2s7dw3A==} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - optional@0.1.4: - resolution: {integrity: sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} - engines: {node: '>=18'} - - os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - otpauth@9.3.6: - resolution: {integrity: sha512-eIcCvuEvcAAPHxUKC9Q4uCe0Fh/yRc5jv9z+f/kvyIF2LPrhgAOuLB7J9CssGYhND/BL8M9hlHBTFmffpoQlMQ==} - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - - ox@0.4.2: - resolution: {integrity: sha512-X3Ho21mTtJiCU2rWmfaheh2b0CG70Adre7Da/XQ0ECy+QppI6pLqdbGAJHiu/cTjumVXfwDGfv48APqePCU+ow==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - ox@0.4.4: - resolution: {integrity: sha512-oJPEeCDs9iNiPs6J0rTx+Y0KGeCGyCAA3zo94yZhm8G5WpOxrwUtn2Ie/Y8IyARSqqY/j9JTKA3Fc1xs1DvFnw==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map-series@2.1.0: - resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-pipe@3.1.0: - resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} - engines: {node: '>=8'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} - - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-timeout@4.1.0: - resolution: {integrity: sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==} - engines: {node: '>=10'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - p-waterfall@2.1.1: - resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} - engines: {node: '>=8'} - - pac-proxy-agent@7.1.0: - resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} - - package-manager-detector@0.2.8: - resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} - - pacote@18.0.6: - resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parents@1.0.1: - resolution: {integrity: sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==} - - parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} - engines: {node: '>= 0.10'} - - parse-cache-control@1.0.1: - resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} - - parse-conflict-json@3.0.1: - resolution: {integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - parse-data-uri@0.2.0: - resolution: {integrity: sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w==} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} - - parse-ms@3.0.0: - resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} - engines: {node: '>=12'} - - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - - parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - - parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} - - parse-url@8.1.0: - resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - - parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - partial-json@0.1.7: - resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - pastable@2.2.1: - resolution: {integrity: sha512-K4ClMxRKpgN4sXj6VIPPrvor/TMp2yPNCGtfhvV106C73SwefQ3FuegURsH7AQHpqu0WwbvKXRl1HQxF6qax9w==} - engines: {node: '>=14.x'} - peerDependencies: - react: '>=17' - xstate: '>=4.32.1' - peerDependenciesMeta: - react: - optional: true - xstate: - optional: true - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-data-parser@0.1.0: - resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} - - path-exists-cli@2.0.0: - resolution: {integrity: sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-platform@0.11.15: - resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} - engines: {node: '>= 0.8.0'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - - path-to-regexp@3.3.0: - resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - path2d@0.2.2: - resolution: {integrity: sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==} - engines: {node: '>=6'} - - path@0.12.7: - resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathe@2.0.1: - resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - pdfjs-dist@4.7.76: - resolution: {integrity: sha512-8y6wUgC/Em35IumlGjaJOCm3wV4aY/6sqnIT3fVW/67mXsOZ9HWBn8GDKmJUK0GSzpbmX3gQqwfoFayp78Mtqw==} - engines: {node: '>=18'} - - peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - percentile@1.6.0: - resolution: {integrity: sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - - pg-connection-string@2.7.0: - resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-numeric@1.0.2: - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} - engines: {node: '>=4'} - - pg-pool@3.7.0: - resolution: {integrity: sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.7.0: - resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg-types@4.0.2: - resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} - engines: {node: '>=10'} - - pg@8.13.1: - resolution: {integrity: sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pidusage@2.0.21: - resolution: {integrity: sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==} - engines: {node: '>=8'} - - pidusage@3.0.2: - resolution: {integrity: sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==} - engines: {node: '>=10'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} - - pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - - pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - - pkijs@3.2.4: - resolution: {integrity: sha512-Et9V5QpvBilPFgagJcaKBqXjKrrgF5JL2mSDELk1vvbOTt4fuBhSSsGn9Tcz0TQTfS5GCpXQ31Whrpqeqp0VRg==} - engines: {node: '>=12.0.0'} - - platform@1.3.6: - resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} - - playwright-core@1.48.2: - resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.48.2: - resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} - engines: {node: '>=18'} - hasBin: true - - pm2-axon-rpc@0.7.1: - resolution: {integrity: sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==} - engines: {node: '>=5'} - - pm2-axon@4.0.1: - resolution: {integrity: sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==} - engines: {node: '>=5'} - - pm2-deploy@1.0.2: - resolution: {integrity: sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==} - engines: {node: '>=4.0.0'} - - pm2-multimeter@0.1.2: - resolution: {integrity: sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==} - - pm2-sysmonit@1.2.8: - resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} - - pm2@5.4.3: - resolution: {integrity: sha512-4/I1htIHzZk1Y67UgOCo4F1cJtas1kSds31N8zN0PybO230id1nigyjGuGFzUnGmUFPmrJ0On22fO1ChFlp7VQ==} - engines: {node: '>=12.0.0'} - hasBin: true - - pngjs-nozlib@1.0.0: - resolution: {integrity: sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA==} - engines: {iojs: '>= 1.0.0', node: '>=0.10.0'} - - pngjs@2.3.1: - resolution: {integrity: sha512-ITNPqvx+SSssNFOgHQzGG87HrqQ0g2nMSHc1jjU5Piq9xJEJ40fiFEPz0S5HSSXxBHrTnhaBHIayTO5aRfk2vw==} - engines: {iojs: '>= 1.0.0', node: '>=0.10.0'} - - pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - - pnpm@9.14.4: - resolution: {integrity: sha512-yBgLP75OS8oCyUI0cXiWtVKXQKbLrfGfp4JUJwQD6i8n1OHUagig9WyJtj3I6/0+5TMm2nICc3lOYgD88NGEqw==} - engines: {node: '>=18.12'} - hasBin: true - - points-on-curve@0.2.0: - resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} - - points-on-path@0.2.1: - resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - - poly1305-js@0.4.4: - resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} - - portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - - poseidon-lite@0.2.1: - resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-attribute-case-insensitive@7.0.1: - resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-calc@10.1.0: - resolution: {integrity: sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-calc@9.0.1: - resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.2.2 - - postcss-clamp@4.1.0: - resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} - engines: {node: '>=7.6.0'} - peerDependencies: - postcss: ^8.4.6 - - postcss-cli@11.0.0: - resolution: {integrity: sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - postcss: ^8.0.0 - - postcss-color-functional-notation@7.0.7: - resolution: {integrity: sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-color-hex-alpha@10.0.0: - resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-color-rebeccapurple@10.0.0: - resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-colormin@6.1.0: - resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@6.1.0: - resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-custom-media@11.0.5: - resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-custom-properties@14.0.4: - resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-custom-selectors@8.0.4: - resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-dir-pseudo-class@9.0.1: - resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-discard-comments@6.0.2: - resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@6.0.3: - resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@6.0.3: - resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@6.0.2: - resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-unused@6.0.5: - resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-double-position-gradients@6.0.0: - resolution: {integrity: sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-focus-visible@10.0.1: - resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-focus-within@9.0.1: - resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-font-variant@5.0.0: - resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} - peerDependencies: - postcss: ^8.1.0 - - postcss-gap-properties@6.0.0: - resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-image-set-function@7.0.0: - resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-lab-function@7.0.7: - resolution: {integrity: sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - - postcss-loader@7.3.4: - resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} - engines: {node: '>= 14.15.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - - postcss-logical@8.0.0: - resolution: {integrity: sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-merge-idents@6.0.3: - resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@6.0.5: - resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@6.1.1: - resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@6.1.0: - resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@6.0.3: - resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@6.1.0: - resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@6.0.4: - resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-nesting@13.0.1: - resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-normalize-charset@6.0.2: - resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@6.0.2: - resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@6.0.2: - resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@6.0.2: - resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@6.0.2: - resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@6.0.2: - resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@6.1.0: - resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@6.0.2: - resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@6.0.2: - resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-opacity-percentage@3.0.0: - resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-ordered-values@6.0.2: - resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-overflow-shorthand@6.0.0: - resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-page-break@3.0.4: - resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} - peerDependencies: - postcss: ^8 - - postcss-place@10.0.0: - resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-preset-env@10.1.3: - resolution: {integrity: sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-pseudo-class-any-link@10.0.1: - resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-reduce-idents@6.0.3: - resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@6.1.0: - resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@6.0.2: - resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-replace-overflow-wrap@4.0.0: - resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} - peerDependencies: - postcss: ^8.0.3 - - postcss-reporter@7.1.0: - resolution: {integrity: sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==} - engines: {node: '>=10'} - peerDependencies: - postcss: ^8.1.0 - - postcss-selector-not@8.0.1: - resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.0.0: - resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} - engines: {node: '>=4'} - - postcss-sort-media-queries@5.2.0: - resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.4.23 - - postcss-svgo@6.0.3: - resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} - engines: {node: ^14 || ^16 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@6.0.4: - resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss-zindex@6.0.2: - resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} - engines: {node: ^10 || ^12 || >=14} - - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-array@3.0.2: - resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} - engines: {node: '>=12'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - postgres-bytea@3.0.0: - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} - engines: {node: '>= 6'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-date@2.1.0: - resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} - engines: {node: '>=12'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - - postgres-interval@3.0.0: - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} - engines: {node: '>=12'} - - postgres-range@1.1.4: - resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} - - preact@10.25.4: - resolution: {integrity: sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==} - - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.4.1: - resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - - pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} - - pretty-ms@8.0.0: - resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} - engines: {node: '>=14.16'} - - pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} - engines: {node: '>=18'} - - pretty-time@1.1.0: - resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} - engines: {node: '>=4'} - - prism-media@1.3.5: - resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} - version: 1.3.5 - peerDependencies: - '@discordjs/opus': '>=0.8.0 <1.0.0' - ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0 - node-opus: ^0.3.3 - opusscript: ^0.0.8 - peerDependenciesMeta: - '@discordjs/opus': - optional: true - ffmpeg-static: - optional: true - node-opus: - optional: true - opusscript: - optional: true - - prism-react-renderer@2.3.1: - resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} - peerDependencies: - react: '>=16.0.0' - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - proggy@2.0.0: - resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - prom-client@15.1.3: - resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} - engines: {node: ^16 || ^18 || >=20} - - promise-all-reject-late@1.0.1: - resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} - - promise-call-limit@3.0.2: - resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - promptly@2.2.0: - resolution: {integrity: sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - promzard@1.0.2: - resolution: {integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - propagate@2.0.1: - resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} - engines: {node: '>= 8'} - - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - - property-expr@2.0.6: - resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - - property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - protobufjs@6.11.4: - resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} - hasBin: true - - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} - engines: {node: '>=12.0.0'} - - protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} - engines: {node: '>= 14'} - - proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} - engines: {node: '>= 14'} - - proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - - pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - pumpdotfun-sdk@1.3.2: - resolution: {integrity: sha512-TkYY+ZztxyPzv1f38evgdam92Po3YATI8s6BzmvxH8FypBpPs3pBKS301z7k3KXc1WWfjGWG79K/BANWaAcvkQ==} - - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pupa@3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} - engines: {node: '>=12.20'} - - puppeteer-core@19.11.1: - resolution: {integrity: sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==} - engines: {node: '>=14.14.0'} - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true - - puppeteer-extra-plugin-capsolver@2.0.1: - resolution: {integrity: sha512-mohsbnHWgGR9yiLV7U5opiEBsn7k2wH9Qvs8IowurHCrQ6JoA/it6x9ZT5dJi8s6arUJPbUeE+VWpN0gH/xePQ==} - - puppeteer-extra-plugin@3.2.3: - resolution: {integrity: sha512-6RNy0e6pH8vaS3akPIKGg28xcryKscczt4wIl0ePciZENGE2yoaQJNd17UiEbdmh5/6WW6dPcfRWT9lxBwCi2Q==} - engines: {node: '>=9.11.2'} - peerDependencies: - playwright-extra: '*' - puppeteer-extra: '*' - peerDependenciesMeta: - playwright-extra: - optional: true - puppeteer-extra: - optional: true - - puppeteer-extra@3.3.6: - resolution: {integrity: sha512-rsLBE/6mMxAjlLd06LuGacrukP2bqbzKCLzV1vrhHFavqQE/taQ2UXv3H5P0Ls7nsrASa+6x3bDbXHpqMwq+7A==} - engines: {node: '>=8'} - peerDependencies: - '@types/puppeteer': '*' - puppeteer: '*' - puppeteer-core: '*' - peerDependenciesMeta: - '@types/puppeteer': - optional: true - puppeteer: - optional: true - puppeteer-core: - optional: true - - puppeteer@19.11.1: - resolution: {integrity: sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==} - deprecated: < 22.8.2 is no longer supported - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - pvtsutils@1.3.6: - resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} - - pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - - qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - - quais@1.0.0-alpha.25: - resolution: {integrity: sha512-dohlLbU55+7VYwmP2dENQ9ptPBBY+Rw6glRfgdMv5ClimQGfxF3DQHWe1G+qwWdyM9avkdoyBwBkw9BHwph/vA==} - engines: {node: '>=17.0.0'} - - query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} - - querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - - ramda@0.30.1: - resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - range-parser@1.2.0: - resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} - engines: {node: '>= 0.6'} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-aiwriter@1.0.0: - resolution: {integrity: sha512-MxNAN3FUMNeHlbuPIiWFtXJlHBJx1+o5wKGtkmbmEywc7DjdjK6Xq1XVK3w+vBsuRARTACza3uxwsae1SqrAAw==} - - react-dev-utils@12.0.1: - resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=2.7' - webpack: '>=4' - peerDependenciesMeta: - typescript: - optional: true - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-dom@19.0.0: - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} - peerDependencies: - react: ^19.0.0 - - react-error-overlay@6.0.11: - resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} - - react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - - react-helmet-async@1.3.0: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-helmet-async@2.0.5: - resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-json-view-lite@1.5.0: - resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} - engines: {node: '>=14'} - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - - react-loadable-ssr-addon-v5-slorber@1.0.1: - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} - engines: {node: '>=10.13.0'} - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - - react-remove-scroll-bar@2.3.8: - resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.6.2: - resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - react-router-config@5.1.1: - resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} - peerDependencies: - react: '>=15' - react-router: '>=5' - - react-router-dom@5.3.4: - resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} - peerDependencies: - react: '>=15' - - react-router-dom@6.22.1: - resolution: {integrity: sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router-dom@7.1.1: - resolution: {integrity: sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - react-router@5.3.4: - resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} - peerDependencies: - react: '>=15' - - react-router@6.22.1: - resolution: {integrity: sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - - react-router@7.1.1: - resolution: {integrity: sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - peerDependenciesMeta: - react-dom: - optional: true - - react-style-singleton@2.2.3: - resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - react-waypoint@10.3.0: - resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-cmd-shim@4.0.0: - resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - read-only-stream@2.0.0: - resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} - - read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - - read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} - - read@3.0.1: - resolution: {integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - - readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} - engines: {node: '>= 14.18.0'} - - reading-time@1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - - readline-sync@1.4.10: - resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} - engines: {node: '>= 0.8.0'} - - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - - readonly-date@1.0.0: - resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} - - real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.0: - resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - - reconnecting-websocket@4.4.0: - resolution: {integrity: sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==} - - recursive-readdir@2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - - redeyed@2.1.1: - resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} - - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - - reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} - - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regex-recursion@5.1.1: - resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} - - regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - - regex@5.1.1: - resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - - registry-auth-token@5.0.3: - resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} - engines: {node: '>=14'} - - registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - - rehype-parse@7.0.1: - resolution: {integrity: sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - - remark-emoji@4.0.1: - resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - remark-frontmatter@5.0.0: - resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-in-the-middle@5.2.0: - resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==} - engines: {node: '>=6'} - - require-like@0.1.2: - resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - - resolve-pathname@3.0.0: - resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - robot3@0.4.1: - resolution: {integrity: sha512-hzjy826lrxzx8eRgv80idkf8ua1JAepRc9Efdtj03N3KNJuznQCPlyCJ7gnUmDFwZCLQjxy567mQVKmdv2BsXQ==} - - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - - rollup-plugin-dts@6.1.1: - resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - - rollup-plugin-visualizer@5.14.0: - resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - rolldown: 1.x - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - - rollup@2.79.2: - resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} - engines: {node: '>=10.0.0'} - hasBin: true - - rollup@3.29.5: - resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.30.1: - resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - roughjs@4.6.6: - resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} - - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - - rtl-detect@1.1.2: - resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} - - rtlcss@4.3.0: - resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} - engines: {node: '>=12.0.0'} - hasBin: true - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - run-series@1.1.9: - resolution: {integrity: sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==} - - rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-compare@1.1.4: - resolution: {integrity: sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sam-js@0.3.1: - resolution: {integrity: sha512-X4GUr8Q/T8RgtjnPOssSwYDknxot69PgEAVvwsJ4kB8Lz8wytuHB6n1JqsXLmpdKGD8YR9tqKptm07jmw83eWQ==} - engines: {node: '>= 18.0.0', yarn: '>= 1.22.15'} - - sandwich-stream@2.0.2: - resolution: {integrity: sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==} - engines: {node: '>= 0.10'} - - save-pixels-jpeg-js-upgrade@2.3.4-jpeg-js-upgrade.0: - resolution: {integrity: sha512-mFeQrydaAVTYQjywMvuNtjHmYZwAXZlo96Xouh3I7wTYDdUhMttoEPQsfk6EP+Wxt+fo/B8SW/A8dfhBImhKIw==} - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scale-ts@1.6.1: - resolution: {integrity: sha512-PBMc2AWc6wSEqJYBDPcyCLUj9/tMKnLX70jLOSndMtcUoLQucP/DM0vnQo1wJAYjTrQiq8iG9rD0q6wFzgjH7g==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - - schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - scryptsy@2.1.0: - resolution: {integrity: sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==} - - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - - search-insights@2.17.3: - resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} - - secp256k1@5.0.0: - resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} - engines: {node: '>=14.0.0'} - - secp256k1@5.0.1: - resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} - engines: {node: '>=18.0.0'} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - - secure-random@1.1.2: - resolution: {integrity: sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ==} - - seedrandom@3.0.5: - resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} - - selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - - semaphore@1.1.0: - resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} - engines: {node: '>=0.8.0'} - - semver-diff@4.0.0: - resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} - engines: {node: '>=12'} - - semver-regex@4.0.5: - resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} - engines: {node: '>=12'} - - semver-truncate@3.0.0: - resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} - engines: {node: '>=12'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-handler@6.1.6: - resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} - - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - - setprototypeof@1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - sha3@2.1.4: - resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} - - shallow-clone@0.1.2: - resolution: {integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==} - engines: {node: '>=0.10.0'} - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} - - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - shasum-object@1.0.0: - resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} - engines: {node: '>= 0.4'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shiki@1.27.2: - resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} - - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sigstore@2.3.1: - resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - simple-cbor@0.4.1: - resolution: {integrity: sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - simple-git@3.27.0: - resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} - - simple-jsonrpc-js@1.2.0: - resolution: {integrity: sha512-owkAmh7fjSYBUZVestTPCZMKYQvNiDejqZ/iGfVaKs1nrC1ZBDA3qGraf94+JNFJmu536Tb8oPe8PSPuq7GO6Q==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - - siwe@2.3.2: - resolution: {integrity: sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA==} - peerDependencies: - ethers: ^5.6.8 || ^6.0.8 - - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - sleep-promise@9.1.0: - resolution: {integrity: sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - smoldot@2.0.22: - resolution: {integrity: sha512-B50vRgTY6v3baYH6uCgL15tfaag5tcS2o/P5q1OiXcKGv1axZDfz2dzzMuIkVpyMR2ug11F6EAtQlmYBQd292g==} - - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - sodium-native@3.4.1: - resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==} - - sodium-plus@0.9.0: - resolution: {integrity: sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==} - peerDependencies: - sodium-native: ^3.2.0 - - solana-agent-kit@1.4.0: - resolution: {integrity: sha512-4+lH6buQZoLqr6CYriqpAIidQncGnU67b5G7Cai9dvxyvOXgBY/zIPYbbrhD+zI4kXPGg9FEtq2ekC1OcBFeew==} - engines: {node: '>=22.0.0', pnpm: '>=8.0.0'} - - solc@0.8.28: - resolution: {integrity: sha512-AFCiJ+b4RosyyNhnfdVH4ZR1+TxiL91iluPjw0EJslIu4LXGM9NYqi2z5y8TqochC4tcH9QsHfwWhOIC9jPDKA==} - engines: {node: '>=10.0.0'} - hasBin: true - - sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - - sort-css-media-queries@2.2.0: - resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} - engines: {node: '>= 6.3.0'} - - sort-json@2.0.1: - resolution: {integrity: sha512-s8cs2bcsQCzo/P2T/uoU6Js4dS/jnX8+4xunziNoq9qmSpZNCrRIAIvp4avsz0ST18HycV4z/7myJ7jsHWB2XQ==} - hasBin: true - - sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - - space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - - spok@1.5.5: - resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sprintf-js@1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - - sql.js@1.12.0: - resolution: {integrity: sha512-Bi+43yMx/tUFZVYD4AUscmdL6NHn3gYQ+CM+YheFWLftOmrEC/Mz6Yh7E96Y2WDHYz3COSqT+LP6Z79zgrwJlA==} - - sqlite-vec-darwin-arm64@0.1.6: - resolution: {integrity: sha512-5duw/xhM3xE6BCQd//eAkyHgBp9FIwK6veldRhPG96dT6Zpjov3bG02RuE7JAQj0SVJYRW8bJwZ4LxqW0+Q7Dw==} - cpu: [arm64] - os: [darwin] - - sqlite-vec-darwin-x64@0.1.6: - resolution: {integrity: sha512-MFkKjNfJ5pamFHhyTsrqdxALrjuvpSEZdu6Q/0vMxFa6sr5YlfabeT5xGqEbuH0iobsT1Hca5EZxLhLy0jHYkw==} - cpu: [x64] - os: [darwin] - - sqlite-vec-linux-x64@0.1.6: - resolution: {integrity: sha512-411tWPswywIzdkp+zsAUav4A03f0FjnNfpZFlOw8fBebFR74RSFkwM8Xryf18gLHiYAXUBI4mjY9+/xjwBjKpg==} - cpu: [x64] - os: [linux] - - sqlite-vec-windows-x64@0.1.6: - resolution: {integrity: sha512-Dy9/KlKJDrjuQ/RRkBqGkMZuSh5bTJDMMOFZft9VJZaXzpYxb5alpgdvD4bbKegpDdfPi2BT4+PBivsNJSlMoQ==} - cpu: [x64] - os: [win32] - - sqlite-vec@0.1.6: - resolution: {integrity: sha512-hQZU700TU2vWPXZYDULODjKXeMio6rKX7UpPN7Tq9qjPW671IEgURGrcC5LDBMl0q9rBvAuzmcmJmImMqVibYQ==} - - srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - - srt@0.0.3: - resolution: {integrity: sha512-lak1bX2JSWpzar6NrXDSn1EQDfUeqKOikE+NY3EpjzH6sbqWl3oKlEWiVPFAFSFaMHjdyEXfYiwTrXhWNdeIOg==} - - sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - sswr@2.1.0: - resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - - starknet@6.18.0: - resolution: {integrity: sha512-nlxz7bK/YBY8W8NUevkycxFwphsX27oi+4YCl36TYFdrJpTOMqmJDnZ27ssr7z0eEDQLQscIxt1gXrZzCJua7g==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - stdout-update@4.0.1: - resolution: {integrity: sha512-wiS21Jthlvl1to+oorePvcyrIkiG/6M3D3VTmDUlJm7Cy6SbFhKkAvX+YBuHLxck/tO3mrdpC/cNesigQc3+UQ==} - engines: {node: '>=16.0.0'} - - steno@4.0.2: - resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==} - engines: {node: '>=18'} - - stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - - stream-combiner2@1.1.1: - resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} - - stream-http@3.2.0: - resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} - - stream-parser@0.3.1: - resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - stream-splicer@2.0.1: - resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} - - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - streamx@2.21.1: - resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} - - strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true - - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - - stylehacks@6.1.1: - resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - - stylis@4.3.5: - resolution: {integrity: sha512-K7npNOKGRYuhAFFzkzMGfxFDpN6gDwf8hcMiE+uveTVbBgm93HrNP3ZDUpKqzZ4pG7TP6fmb+EMAQPjq9FqqvA==} - - subarg@1.0.0: - resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - suffix-thumb@5.0.2: - resolution: {integrity: sha512-I5PWXAFKx3FYnI9a+dQMWNqTxoRt6vdBdb0O+BJ1sxXCWtSoQCusc13E58f+9p4MYx/qCnEMkD5jac6K2j3dgA==} - - super-regex@1.0.0: - resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} - engines: {node: '>=18'} - - superstruct@0.15.5: - resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svelte@5.18.0: - resolution: {integrity: sha512-/Eb81lB8bVUxQPmkPVNBYrU9cZ544+9hE91ZUUXTMf7eWcGW84N1hS3gvv/XsUNOWLLg3IicXP2qa8W3KpTUHA==} - engines: {node: '>=18'} - - svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - - swr@2.3.0: - resolution: {integrity: sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - swrev@4.0.0: - resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} - - swrv@1.0.4: - resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} - peerDependencies: - vue: '>=3.2.26 < 4' - - symbol-observable@2.0.3: - resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} - engines: {node: '>=0.10'} - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - symbol.inspect@1.0.1: - resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==} - - syntax-error@1.4.0: - resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} - - systeminformation@5.23.5: - resolution: {integrity: sha512-PEpJwhRYxZgBCAlWZhWIgfMTjXLqfcaZ1pJsJn9snWNfBW/Z1YQg1mbIUSWrEV3ErAHF7l/OoVLQeaZDlPzkpA==} - engines: {node: '>=8.0.0'} - os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] - hasBin: true - - tailwind-merge@2.6.0: - resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} - - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true - - tanu@0.1.13: - resolution: {integrity: sha512-UbRmX7ccZ4wMVOY/Uw+7ji4VOkEYSYJG1+I4qzbnn4qh/jtvVbrm6BFnF12NQQ4+jGv21wKmjb1iFyUSVnBWcQ==} - - tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-fs@2.1.2: - resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} - - tar-fs@3.0.8: - resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} - engines: {node: '>=18'} - - tdigest@0.1.2: - resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} - - telegraf@4.16.3: - resolution: {integrity: sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==} - engines: {node: ^12.20.0 || >=14.13.1} - hasBin: true - - temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - - terser-webpack-plugin@5.3.11: - resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} - engines: {node: '>=10'} - hasBin: true - - teslabot@1.5.0: - resolution: {integrity: sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenby@1.3.4: - resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thirdweb@5.84.0: - resolution: {integrity: sha512-mYvonenym2g6puAd4YMFD4NI/n8oWYIfkwvnOWdNR/ZwmBybRre3BLzhWVx2fId1RL9fDv5GQyDfR/1ORLgODA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@aws-sdk/client-kms': '*' - '@aws-sdk/client-lambda': ^3 - '@aws-sdk/credential-providers': ^3 - '@coinbase/wallet-mobile-sdk': ^1 - '@mobile-wallet-protocol/client': 0.1.1 - '@react-native-async-storage/async-storage': ^1 || ^2 - ethers: ^5 || ^6 - expo-linking: ^6 - expo-web-browser: ^13 || ^14 - react: ^18 || ^19 - react-native: '*' - react-native-aes-gcm-crypto: ^0.2 - react-native-passkey: ^3 - react-native-quick-crypto: '>=0.7.0-rc.6 || >=0.7' - react-native-svg: ^15 - typescript: '>=5.0.4' - peerDependenciesMeta: - '@aws-sdk/client-kms': - optional: true - '@aws-sdk/client-lambda': - optional: true - '@aws-sdk/credential-providers': - optional: true - '@coinbase/wallet-mobile-sdk': - optional: true - '@mobile-wallet-protocol/client': - optional: true - '@react-native-async-storage/async-storage': - optional: true - ethers: - optional: true - expo-linking: - optional: true - expo-web-browser: - optional: true - react: - optional: true - react-native: - optional: true - react-native-aes-gcm-crypto: - optional: true - react-native-passkey: - optional: true - react-native-quick-crypto: - optional: true - react-native-svg: - optional: true - typescript: - optional: true - - thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} - - three@0.146.0: - resolution: {integrity: sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==} - - throttleit@2.1.0: - resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} - engines: {node: '>=18'} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - - tiktoken@1.0.18: - resolution: {integrity: sha512-DXJesdYwmBHtkmz1sji+UMZ4AOEE8F7Uw/PS/uy0XfkKOzZC4vXkYXHMYyDT+grdflvF4bggtPt9cYaqOMslBw==} - - time-span@5.1.0: - resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} - engines: {node: '>=12'} - - timers-browserify@1.4.2: - resolution: {integrity: sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==} - engines: {node: '>=0.6.0'} - - timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} - - tiny-case@1.0.3: - resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} - - tiny-emitter@2.1.0: - resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} - - tiny-inflate@1.0.3: - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} - engines: {node: '>=12.0.0'} - - tinyld@1.3.4: - resolution: {integrity: sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw==} - engines: {node: '>= 12.10.0', npm: '>= 6.12.0', yarn: '>= 1.20.0'} - hasBin: true - - tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyspawn@1.3.3: - resolution: {integrity: sha512-CvvMFgecnQMyg59nOnAD5O4lV83cVj2ooDniJ3j2bYvMajqlK4wQ13k6OUHfA+J5nkInTxbSGJv2olUJIiAtJg==} - engines: {node: '>= 18'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - tldts-core@6.1.72: - resolution: {integrity: sha512-FW3H9aCaGTJ8l8RVCR3EX8GxsxDbQXuwetwwgXA2chYdsX+NY1ytCBl61narjjehWmCw92tc1AxlcY3668CU8g==} - - tldts-experimental@6.1.72: - resolution: {integrity: sha512-mfPL+Pzn3nJ0JeI9AHuO4l0NbxldZhpWUYokb8HdK8gbZ2k0/qEqs5E/FqcOjVr4vzTZpbRtiwMPXv77VwXpyQ==} - - tldts@6.1.72: - resolution: {integrity: sha512-QNtgIqSUb9o2CoUjX9T5TwaIvUUJFU1+12PJkgt42DFV2yf9J6549yTF2uGloQsJ/JOC8X+gIB81ind97hRiIQ==} - hasBin: true - - tmp-promise@3.0.3: - resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} - engines: {node: '>=0.10.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-vfile@6.1.0: - resolution: {integrity: sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==} - - toad-cache@3.7.0: - resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} - engines: {node: '>=12'} - - toformat@2.0.0: - resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} - - together-ai@0.7.0: - resolution: {integrity: sha512-/be/HOecBSwRTDHB14vCvHbp1WiNsFxyS4pJlyBoMup1X3n7xD1b/Gm5Z5amlKzD2zll9Y5wscDk7Ut5OsT1nA==} - - toidentifier@1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - - toposort@2.0.2: - resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - touch@3.1.1: - resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} - hasBin: true - - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tough-cookie@5.1.0: - resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} - engines: {node: '>=16'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} - - traverse@0.6.11: - resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==} - engines: {node: '>= 0.4'} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - - treeverse@3.0.0: - resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-jest@29.2.5: - resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-log@2.2.7: - resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} - - ts-mixer@6.0.4: - resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - ts-pattern@5.6.0: - resolution: {integrity: sha512-SL8u60X5+LoEy9tmQHWCdPc2hhb2pKI6I1tU5Jue3v8+iRqZdcT3mWPwKKJy1fMfky6uha82c8ByHAE8PMhKHw==} - - ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - - tsconfck@3.1.4: - resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@1.9.3: - resolution: {integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tslog@4.9.3: - resolution: {integrity: sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw==} - engines: {node: '>=16'} - - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - - tsup@8.3.5: - resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} - engines: {node: '>=18.0.0'} - hasBin: true - - tty-browserify@0.0.1: - resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} - - tuf-js@2.2.1: - resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} - engines: {node: ^16.14.0 || >=18.0.0} - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - turbo-darwin-64@2.3.3: - resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@2.3.3: - resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@2.3.3: - resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@2.3.3: - resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} - cpu: [arm64] - os: [linux] - - turbo-stream@2.4.0: - resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} - - turbo-windows-64@2.3.3: - resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@2.3.3: - resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} - cpu: [arm64] - os: [win32] - - turbo@2.3.3: - resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} - hasBin: true - - tv4@1.3.0: - resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} - engines: {node: '>= 0.8.0'} - - tweetnacl-util@0.13.5: - resolution: {integrity: sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A==} - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - twitter-api-v2@1.19.0: - resolution: {integrity: sha512-jfG4aapNPM9+4VxNxn0TXvD8Qj8NmVx6cY0hp5K626uZ41qXPaJz33Djd3y6gfHF/+W29+iZz0Y5qB869d/akA==} - - tx2@1.0.5: - resolution: {integrity: sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.4.1: - resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} - engines: {node: '>=6'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - - type-fest@4.32.0: - resolution: {integrity: sha512-rfgpoi08xagF3JSdtJlCwMq9DGNDE0IMh3Mkpc1wUypg9vPi786AiqeBBKcqvIkq42azsBM85N490fyZjeUftw==} - engines: {node: '>=16'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typed-function@2.1.0: - resolution: {integrity: sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==} - engines: {node: '>= 10'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray.prototype.slice@1.0.5: - resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==} - engines: {node: '>= 0.4'} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typedoc-plugin-markdown@4.2.10: - resolution: {integrity: sha512-PLX3pc1/7z13UJm4TDE9vo9jWGcClFUErXXtd5LdnoLjV6mynPpqZLU992DwMGFSRqJFZeKbVyqlNNeNHnk2tQ==} - engines: {node: '>= 18'} - peerDependencies: - typedoc: 0.26.x - - typedoc@0.26.11: - resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} - engines: {node: '>= 18'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x - - typedoc@0.27.6: - resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} - engines: {node: '>= 18'} - hasBin: true - peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x - - typeforce@1.18.0: - resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} - - typescript-collections@1.3.3: - resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} - - typescript-eslint@8.20.0: - resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - typescript-parsec@0.3.4: - resolution: {integrity: sha512-6RD4xOxp26BTZLopNbqT2iErqNhQZZWb5m5F07/UwGhldGvOAKOl41pZ3fxsFp04bNL+PbgMjNfb6IvJAC/uYQ==} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - u3@0.1.1: - resolution: {integrity: sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==} - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - - uid@2.0.2: - resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} - engines: {node: '>=8'} - - uint8array-tools@0.0.8: - resolution: {integrity: sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==} - engines: {node: '>=14.0.0'} - - uint8array-tools@0.0.9: - resolution: {integrity: sha512-9vqDWmoSXOoi+K14zNaf6LBV51Q8MayF0/IiQs3GlygIKUYtog603e6virExkjjFosfJUBI4LhbQK1iq8IG11A==} - engines: {node: '>=14.0.0'} - - uint8arrays@3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} - - umd@3.0.3: - resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} - hasBin: true - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - unbuild@2.0.0: - resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} - hasBin: true - peerDependencies: - typescript: ^5.1.6 - peerDependenciesMeta: - typescript: - optional: true - - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - - undeclared-identifiers@1.1.3: - resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} - hasBin: true - - undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - undici@6.19.8: - resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} - engines: {node: '>=18.17'} - - undici@7.2.3: - resolution: {integrity: sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==} - engines: {node: '>=20.18.1'} - - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - - unicode-9.0.0@0.7.0: - resolution: {integrity: sha512-aqL0GQ3LB2nC3ZEKBZ93hfn7QY80sVGk+OT9Sc6lTxl4wRiwzUBRlAjJB9Fe4+5XydXOV+tb8udp5oRBoED5Tw==} - deprecated: Use @unicode/unicode-9.0.0 instead. - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unified@9.2.2: - resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} - - uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - - unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-names-generator@4.7.1: - resolution: {integrity: sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==} - engines: {node: '>=8'} - - unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - - unist-util-find-after@3.0.0: - resolution: {integrity: sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==} - - unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universal-github-app-jwt@2.2.0: - resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} - - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - - universal-user-agent@7.0.2: - resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unruggable-core@0.1.1: - resolution: {integrity: sha512-lvnR2QDPmO2e8aZLMbx66g25a2UEoTwwXxBdCLOwd4leNLmCAaR582P6D5yfsRuWopuP+wWkKIDigMyGKvxXgg==} - peerDependencies: - starknet: '>=6.0.0' - - unruggable-sdk@1.4.0: - resolution: {integrity: sha512-j4SIwR+qihkHzx+qI6fJZ4hSDb2lv6IESh9tFDYuypxHRcFCrhqE85r/oF1wASfQmMTllK34YbS0ke+RZcRhuA==} - peerDependencies: - starknet: '>=5.0.0' - - unstorage@1.14.4: - resolution: {integrity: sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==} - peerDependencies: - '@azure/app-configuration': ^1.8.0 - '@azure/cosmos': ^4.2.0 - '@azure/data-tables': ^13.3.0 - '@azure/identity': ^4.5.0 - '@azure/keyvault-secrets': ^4.9.0 - '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 - '@deno/kv': '>=0.8.4' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.3 - '@vercel/blob': '>=0.27.0' - '@vercel/kv': ^1.0.1 - aws4fetch: ^1.0.20 - db0: '>=0.2.1' - idb-keyval: ^6.2.1 - ioredis: ^5.4.2 - uploadthing: ^7.4.1 - 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/kv': - optional: true - aws4fetch: - optional: true - db0: - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - uploadthing: - optional: true - - untyped@1.5.2: - resolution: {integrity: sha512-eL/8PlhLcMmlMDtNPKhyyz9kEBDS3Uk4yMu/ewlkT2WFbtzScjHWPJLdQLmaGPUKjXzwe9MumOtOgc4Fro96Kg==} - hasBin: true - - unzipper@0.12.3: - resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-notifier@6.0.2: - resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} - engines: {node: '>=14.16'} - - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - - url-loader@4.1.1: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - url-value-parser@2.2.0: - resolution: {integrity: sha512-yIQdxJpgkPamPPAPuGdS7Q548rLhny42tg8d4vyTNzFqvOnwqrgHXvgehT09U7fwrzxi3RxCiXjoNUNnNOlQ8A==} - engines: {node: '>=6.0.0'} - - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - - use-callback-ref@1.3.3: - resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.3: - resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - use-sync-external-store@1.4.0: - resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - utf-8-validate@6.0.5: - resolution: {integrity: sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==} - engines: {node: '>=6.14.2'} - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - utfstring@2.0.2: - resolution: {integrity: sha512-dlLwDU6nUrUVsUbA3bUQ6LzRpt8cmJFNCarbESKFqZGMdivOFmzapOlQq54ifHXB9zgR00lKpcpCo6CITG2bjQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - - utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - - uuid@11.0.3: - resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} - hasBin: true - - uuid@11.0.5: - resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} - hasBin: true - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - valibot@0.36.0: - resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} - - valibot@0.38.0: - resolution: {integrity: sha512-RCJa0fetnzp+h+KN9BdgYOgtsMAG9bfoJ9JSjIhFHobKWVWyzM3jjaeNTdpFK9tQtf3q1sguXeERJ/LcmdFE7w==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - - valid-url@1.0.9: - resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - valtio@1.11.2: - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - value-equal@1.0.1: - resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - - varint@5.0.2: - resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} - - varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - - varuint-bitcoin@2.0.0: - resolution: {integrity: sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - - vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - viem@2.21.58: - resolution: {integrity: sha512-mGVKlu3ici7SueEQatn44I7KePP8Nwb5JUjZaQOciWxWHCFP/WLyjdZDIK09qyaozHNTH/t78K3ptXCe+AnMuQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - vite-node@0.34.6: - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true - - vite-node@1.1.3: - resolution: {integrity: sha512-BLSO72YAkIUuNrOx+8uznYICJfTEbvBAmWClY3hpath5+h1mbPS5OMn42lrTxXuyCazVyZoDkSRnju78GiVCqA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-node@1.2.1: - resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-node@2.1.4: - resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-node@2.1.5: - resolution: {integrity: sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-node@2.1.8: - resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-plugin-compression@0.5.1: - resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} - peerDependencies: - vite: '>=2.0.0' - - vite-tsconfig-paths@4.3.2: - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@6.0.7: - resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - - vitest@1.1.3: - resolution: {integrity: sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@1.2.1: - resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@2.1.4: - resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.4 - '@vitest/ui': 2.1.4 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@2.1.5: - resolution: {integrity: sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.5 - '@vitest/ui': 2.1.5 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@2.1.8: - resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.8 - '@vitest/ui': 2.1.8 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vizion@2.2.1: - resolution: {integrity: sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==} - engines: {node: '>=4.0'} - - vlq@2.0.4: - resolution: {integrity: sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==} - - vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - - walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - wasm-feature-detect@1.8.0: - resolution: {integrity: sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - wav-encoder@1.3.0: - resolution: {integrity: sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw==} - - wav@1.0.2: - resolution: {integrity: sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==} - - wavefile@11.0.0: - resolution: {integrity: sha512-/OBiAALgWU24IG7sC84cDO/KfFuvajWc5Uec0oV2zrpOOZZDgGdOwHwgEzOrwh8jkubBk7PtZfQBIcI1OaE5Ng==} - engines: {node: '>=8'} - hasBin: true - - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - - web-vitals@3.5.2: - resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} - - web3-core@4.7.1: - resolution: {integrity: sha512-9KSeASCb/y6BG7rwhgtYC4CvYY66JfkmGNEYb7q1xgjt9BWfkf09MJPaRyoyT5trdOxYDHkT9tDlypvQWaU8UQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-errors@1.3.1: - resolution: {integrity: sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-abi@4.4.1: - resolution: {integrity: sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-accounts@4.3.1: - resolution: {integrity: sha512-rTXf+H9OKze6lxi7WMMOF1/2cZvJb2AOnbNQxPhBDssKOllAMzLhg1FbZ4Mf3lWecWfN6luWgRhaeSqO1l+IBQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-contract@4.7.2: - resolution: {integrity: sha512-3ETqs2pMNPEAc7BVY/C3voOhTUeJdkf2aM3X1v+edbngJLHAxbvxKpOqrcO0cjXzC4uc2Q8Zpf8n8zT5r0eLnA==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-ens@4.4.0: - resolution: {integrity: sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-iban@4.0.7: - resolution: {integrity: sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth-personal@4.1.0: - resolution: {integrity: sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-eth@4.11.1: - resolution: {integrity: sha512-q9zOkzHnbLv44mwgLjLXuyqszHuUgZWsQayD2i/rus2uk0G7hMn11bE2Q3hOVnJS4ws4VCtUznlMxwKQ+38V2w==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-net@4.1.0: - resolution: {integrity: sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-providers-http@4.2.0: - resolution: {integrity: sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-providers-ipc@4.0.7: - resolution: {integrity: sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-providers-ws@4.0.8: - resolution: {integrity: sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-rpc-methods@1.3.0: - resolution: {integrity: sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-rpc-providers@1.0.0-rc.4: - resolution: {integrity: sha512-PXosCqHW0EADrYzgmueNHP3Y5jcSmSwH+Dkqvn7EYD0T2jcsdDAIHqk6szBiwIdhumM7gv9Raprsu/s/f7h1fw==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-types@1.10.0: - resolution: {integrity: sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - web3-utils@4.3.3: - resolution: {integrity: sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3-validator@2.0.6: - resolution: {integrity: sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==} - engines: {node: '>=14', npm: '>=6.12.0'} - - web3@4.16.0: - resolution: {integrity: sha512-SgoMSBo6EsJ5GFCGar2E/pR2lcR/xmUSuQ61iK6yDqzxmm42aPPxSqZfJz2z/UCR6pk03u77pU8TGV6lgMDdIQ==} - engines: {node: '>=14.0.0', npm: '>=6.12.0'} - - webauthn-p256@0.0.10: - resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} - - webcrypto-core@1.8.1: - resolution: {integrity: sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - webpack-bundle-analyzer@4.10.2: - resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} - engines: {node: '>= 10.13.0'} - hasBin: true - - webpack-dev-middleware@5.3.4: - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - webpack-dev-server@4.15.2: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - - webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.97.1: - resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - webpackbar@6.0.1: - resolution: {integrity: sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - webpack: 3 || 4 || 5 - - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - websocket@1.0.35: - resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} - engines: {node: '>=4.0.0'} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@14.1.0: - resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} - engines: {node: '>=18'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - whence@2.0.1: - resolution: {integrity: sha512-VtcCE1Pe3BKofF/k+P5xcpuoqQ0f1NJY6TmdUw5kInl9/pEr1ZEFD9+ZOUicf52tvpTbhMS93aWXriu2IQYTTw==} - engines: {node: '>=14'} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - - wif@2.0.6: - resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} - - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - write-json-file@3.2.0: - resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} - engines: {node: '>=6'} - - write-pkg@4.0.0: - resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} - engines: {node: '>=8'} - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - 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 - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - 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 - - ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - wtf_wikipedia@10.3.2: - resolution: {integrity: sha512-8C1eUKDK6NaosrtocTEA4fz5Lm5nO6Hb92zLUqI7S1uVVjwEtI0mvSGSdGd/xR1nfSpDYm1ckBG1aLHEAF1pBg==} - engines: {node: '>=12.0.0'} - hasBin: true - - xdg-basedir@5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} - engines: {node: '>=12'} - - xml-js@1.6.11: - resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} - hasBin: true - - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xsalsa20@1.2.0: - resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} - - xstream@11.14.0: - resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yaeti@0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} - engines: {node: '>= 14'} - hasBin: true - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yargs@17.7.1: - resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} - engines: {node: '>=18'} - - youtube-dl-exec@3.0.10: - resolution: {integrity: sha512-t3ih+3bn2rFYSStuVjKVHUPyPYhPvPjIPjJZAzjFb6qD8uJxgJ5GHicSwbPkezM8IVdnoKPRkZ6XuIPHCqRRZg==} - engines: {node: '>= 18'} - - yup@1.6.1: - resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==} - - zimmerframe@1.1.2: - resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} - - zksync-ethers@6.15.3: - resolution: {integrity: sha512-AAFf5HKlkGpLRSE1CB8gBIlswbnWBPHD2ex4bcFG8GJFr1iQuq+LbMrisDm17jNR4Msi1WkNgIartS7nXcOrTg==} - engines: {node: '>=18.9.0'} - peerDependencies: - ethers: ^6.7.1 - - zlibjs@0.3.1: - resolution: {integrity: sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==} - - zod-to-json-schema@3.24.1: - resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} - peerDependencies: - zod: ^3.24.1 - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - - zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - - zstddec@0.0.2: - resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} - - zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@0glabs/0g-ts-sdk@0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5)': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - open-jsonrpc-provider: 0.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - '@0no-co/graphql.web@1.0.13(graphql@16.10.0)': - optionalDependencies: - graphql: 16.10.0 - - '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3)': - dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) - graphql: 16.10.0 - typescript: 5.7.3 - - '@3land/listings-sdk@0.0.4(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn: 1.0.5 - bn.js: 5.2.1 - bs58: 6.0.0 - cyrb53: 1.0.0 - fs: 0.0.1-security - irys: 0.0.1 - node-fetch: 3.3.2 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) - tweetnacl: 1.0.3 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - arweave - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@acuminous/bitsyntax@0.1.2': - dependencies: - buffer-more-ints: 1.0.0 - debug: 4.4.0 - safe-buffer: 5.1.2 - transitivePeerDependencies: - - supports-color - - '@adraffy/ens-normalize@1.10.1': {} - - '@adraffy/ens-normalize@1.11.0': {} - - '@ai-sdk/anthropic@0.0.56(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/google-vertex@0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@google-cloud/vertexai': 1.9.2(encoding@0.1.13) - zod: 3.23.8 - - '@ai-sdk/google@0.0.55(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/groq@0.0.3(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/mistral@1.0.8(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/openai@1.0.19(zod@3.24.1)': - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - zod: 3.24.1 - - '@ai-sdk/openai@1.0.5(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 1.0.1 - '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/provider-utils@1.0.20(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.24 - eventsource-parser: 1.1.2 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/provider-utils@1.0.22(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - eventsource-parser: 1.1.2 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/provider-utils@1.0.22(zod@3.24.1)': - dependencies: - '@ai-sdk/provider': 0.0.26 - eventsource-parser: 1.1.2 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.24.1 - - '@ai-sdk/provider-utils@2.0.2(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 1.0.1 - eventsource-parser: 3.0.0 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/provider-utils@2.0.7(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 1.0.4 - eventsource-parser: 3.0.0 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/provider-utils@2.0.7(zod@3.24.1)': - dependencies: - '@ai-sdk/provider': 1.0.4 - eventsource-parser: 3.0.0 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.24.1 - - '@ai-sdk/provider@0.0.24': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@0.0.26': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@1.0.1': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@1.0.4': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@0.0.70(react@19.0.0)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - swr: 2.3.0(react@19.0.0) - throttleit: 2.1.0 - optionalDependencies: - react: 19.0.0 - zod: 3.23.8 - - '@ai-sdk/react@1.0.11(react@19.0.0)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.10(zod@3.23.8) - swr: 2.3.0(react@19.0.0) - throttleit: 2.1.0 - optionalDependencies: - react: 19.0.0 - zod: 3.23.8 - - '@ai-sdk/react@1.0.11(react@19.0.0)(zod@3.24.1)': - dependencies: - '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.10(zod@3.24.1) - swr: 2.3.0(react@19.0.0) - throttleit: 2.1.0 - optionalDependencies: - react: 19.0.0 - zod: 3.24.1 - - '@ai-sdk/solid@0.0.54(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - transitivePeerDependencies: - - zod - - '@ai-sdk/svelte@0.0.57(svelte@5.18.0)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - sswr: 2.1.0(svelte@5.18.0) - optionalDependencies: - svelte: 5.18.0 - transitivePeerDependencies: - - zod - - '@ai-sdk/ui-utils@0.0.50(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - json-schema: 0.4.0 - secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.1(zod@3.23.8) - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/ui-utils@1.0.10(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - zod-to-json-schema: 3.24.1(zod@3.23.8) - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/ui-utils@1.0.10(zod@3.24.1)': - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - zod-to-json-schema: 3.24.1(zod@3.24.1) - optionalDependencies: - zod: 3.24.1 - - '@ai-sdk/vue@0.0.59(vue@3.5.13(typescript@5.6.3))(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - swrv: 1.0.4(vue@3.5.13(typescript@5.6.3)) - optionalDependencies: - vue: 3.5.13(typescript@5.6.3) - transitivePeerDependencies: - - zod - - '@akashnetwork/akash-api@1.4.0(@grpc/grpc-js@1.12.5)': - dependencies: - '@grpc/grpc-js': 1.12.5 - rxjs: 7.8.1 - - '@akashnetwork/akashjs@0.10.1(@grpc/grpc-js@1.12.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@akashnetwork/akash-api': 1.4.0(@grpc/grpc-js@1.12.5) - '@cosmjs/amino': 0.32.4 - '@cosmjs/launchpad': 0.27.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stargate': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/tendermint-rpc': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - asn1js: 2.4.0 - atob: 2.1.2 - axios: 0.24.0 - console-browserify: 1.2.0 - js-yaml: 4.1.0 - json-stable-stringify: 1.2.1 - jsrsasign: 11.1.0 - keytar: 7.9.0 - node-fetch: 2.7.0(encoding@0.1.13) - pkijs: 3.2.4 - process: 0.11.10 - pvutils: 1.1.3 - simple-jsonrpc-js: 1.2.0 - sort-json: 2.0.1 - transitivePeerDependencies: - - '@grpc/grpc-js' - - bufferutil - - debug - - encoding - - utf-8-validate - - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': - dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) - '@algolia/client-search': 5.19.0 - algoliasearch: 5.19.0 - - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': - dependencies: - '@algolia/client-search': 5.19.0 - algoliasearch: 5.19.0 - - '@algolia/cache-browser-local-storage@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/cache-common@4.24.0': {} - - '@algolia/cache-in-memory@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/client-abtesting@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/client-account@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-analytics@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-analytics@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/client-common@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-common@5.19.0': {} - - '@algolia/client-insights@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/client-personalization@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-personalization@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/client-query-suggestions@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/client-search@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-search@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/events@4.0.1': {} - - '@algolia/ingestion@1.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/logger-common@4.24.0': {} - - '@algolia/logger-console@4.24.0': - dependencies: - '@algolia/logger-common': 4.24.0 - - '@algolia/monitoring@1.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/recommend@4.24.0': - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/recommend@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - '@algolia/requester-browser-xhr@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/requester-browser-xhr@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - - '@algolia/requester-common@4.24.0': {} - - '@algolia/requester-fetch@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - - '@algolia/requester-node-http@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/requester-node-http@5.19.0': - dependencies: - '@algolia/client-common': 5.19.0 - - '@algolia/transporter@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - - '@alloc/quick-lru@5.2.0': {} - - '@alloralabs/allora-sdk@0.0.4': - dependencies: - '@types/node': 22.10.7 - typescript: 5.7.3 - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@antfu/install-pkg@0.4.1': - dependencies: - package-manager-detector: 0.2.8 - tinyexec: 0.3.2 - - '@antfu/utils@0.7.10': {} - - '@anthropic-ai/sdk@0.30.1(encoding@0.1.13)': - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@anush008/tokenizers-darwin-universal@0.0.0': - optional: true - - '@anush008/tokenizers-linux-x64-gnu@0.0.0': - optional: true - - '@anush008/tokenizers-win32-x64-msvc@0.0.0': - optional: true - - '@anush008/tokenizers@0.0.0': - optionalDependencies: - '@anush008/tokenizers-darwin-universal': 0.0.0 - '@anush008/tokenizers-linux-x64-gnu': 0.0.0 - '@anush008/tokenizers-win32-x64-msvc': 0.0.0 - - '@anyone-protocol/anyone-client@0.4.3': - dependencies: - '@types/node': 20.17.9 - '@types/unzipper': 0.10.10 - axios: 1.7.9(debug@4.4.0) - chalk: 4.1.2 - net: 1.0.2 - socks-proxy-agent: 8.0.5 - typescript: 5.6.3 - unzipper: 0.12.3 - transitivePeerDependencies: - - debug - - supports-color - - '@apidevtools/json-schema-ref-parser@11.7.2': - dependencies: - '@jsdevtools/ono': 7.1.3 - '@types/json-schema': 7.0.15 - js-yaml: 4.1.0 - - '@apidevtools/openapi-schemas@2.1.0': {} - - '@apidevtools/swagger-methods@3.0.2': {} - - '@apidevtools/swagger-parser@10.1.1(openapi-types@12.1.3)': - dependencies: - '@apidevtools/json-schema-ref-parser': 11.7.2 - '@apidevtools/openapi-schemas': 2.1.0 - '@apidevtools/swagger-methods': 3.0.2 - '@jsdevtools/ono': 7.1.3 - ajv: 8.17.1 - ajv-draft-04: 1.0.0(ajv@8.17.1) - call-me-maybe: 1.0.2 - openapi-types: 12.1.3 - - '@aptos-labs/aptos-cli@1.0.2': - dependencies: - commander: 12.1.0 - - '@aptos-labs/aptos-client@0.1.1': - dependencies: - axios: 1.7.4 - got: 11.8.6 - transitivePeerDependencies: - - debug - - '@aptos-labs/ts-sdk@1.33.1': - dependencies: - '@aptos-labs/aptos-cli': 1.0.2 - '@aptos-labs/aptos-client': 0.1.1 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/bip32': 1.6.1 - '@scure/bip39': 1.5.1 - eventemitter3: 5.0.1 - form-data: 4.0.1 - js-base64: 3.7.7 - jwt-decode: 4.0.0 - poseidon-lite: 0.2.1 - transitivePeerDependencies: - - debug - - '@asamuzakjp/css-color@2.8.3': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - lru-cache: 10.4.3 - - '@asterai/client@0.1.6': - dependencies: - buffer: 6.0.3 - eventsource-parser: 2.0.1 - protobufjs: 7.4.0 - typescript: 5.6.3 - - '@avnu/avnu-sdk@2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13))': - dependencies: - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - qs: 6.14.0 - starknet: 6.18.0(encoding@0.1.13) - - '@aws-crypto/crc32@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - tslib: 2.8.1 - - '@aws-crypto/crc32c@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - tslib: 2.8.1 - - '@aws-crypto/sha1-browser@5.2.0': - dependencies: - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-locate-window': 3.723.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-locate-window': 3.723.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - tslib: 2.8.1 - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.8.1 - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-sdk/client-polly@3.726.1': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-stream': 4.0.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-s3@3.729.0': - dependencies: - '@aws-crypto/sha1-browser': 5.2.0 - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-bucket-endpoint': 3.726.0 - '@aws-sdk/middleware-expect-continue': 3.723.0 - '@aws-sdk/middleware-flexible-checksums': 3.729.0 - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-location-constraint': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-sdk-s3': 3.723.0 - '@aws-sdk/middleware-ssec': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/signature-v4-multi-region': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@aws-sdk/xml-builder': 3.723.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/eventstream-serde-browser': 4.0.1 - '@smithy/eventstream-serde-config-resolver': 4.0.1 - '@smithy/eventstream-serde-node': 4.0.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-blob-browser': 4.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/hash-stream-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/md5-js': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-stream': 4.0.2 - '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.726.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.726.1': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-transcribe-streaming@3.726.1': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/eventstream-handler-node': 3.723.0 - '@aws-sdk/middleware-eventstream': 3.723.0 - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-sdk-transcribe-streaming': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/middleware-websocket': 3.723.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 - '@smithy/eventstream-serde-browser': 4.0.1 - '@smithy/eventstream-serde-config-resolver': 4.0.1 - '@smithy/eventstream-serde-node': 4.0.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/core': 3.1.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/util-middleware': 4.0.1 - fast-xml-parser: 4.4.1 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-env@3.723.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-http@3.723.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/property-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/util-stream': 4.0.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-env': 3.723.0 - '@aws-sdk/credential-provider-http': 3.723.0 - '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/credential-provider-imds': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-sdk/credential-provider-env': 3.723.0 - '@aws-sdk/credential-provider-http': 3.723.0 - '@aws-sdk/credential-provider-ini': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/credential-provider-imds': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/credential-provider-process@3.723.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-sso@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': - dependencies: - '@aws-sdk/client-sso': 3.726.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/token-providers': 3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/eventstream-handler-node@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/eventstream-codec': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-bucket-endpoint@3.726.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/node-config-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-config-provider': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-eventstream@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-expect-continue@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.729.0': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-host-header@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-logger@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-recursion-detection@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-s3@3.723.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.1.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-transcribe-streaming@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-format-url': 3.723.0 - '@smithy/eventstream-serde-browser': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/signature-v4': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - uuid: 9.0.1 - - '@aws-sdk/middleware-ssec@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-user-agent@3.726.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@smithy/core': 3.1.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-websocket@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-format-url': 3.723.0 - '@smithy/eventstream-codec': 4.0.1 - '@smithy/eventstream-serde-browser': 4.0.1 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/signature-v4': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-hex-encoding': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/region-config-resolver@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/node-config-provider': 4.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.1 - tslib: 2.8.1 - - '@aws-sdk/s3-request-presigner@3.729.0': - dependencies: - '@aws-sdk/signature-v4-multi-region': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-format-url': 3.723.0 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.723.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/signature-v4': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': - dependencies: - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/types@3.723.0': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/util-arn-parser@3.723.0': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.726.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.1.0 - '@smithy/util-endpoints': 3.0.1 - tslib: 2.8.1 - - '@aws-sdk/util-format-url@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/querystring-builder': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/util-locate-window@3.723.0': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-browser@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.1.0 - bowser: 2.11.0 - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-node@3.726.0': - dependencies: - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/types': 3.723.0 - '@smithy/node-config-provider': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@aws-sdk/xml-builder@3.723.0': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.26.5': {} - - '@babel/core@7.26.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.5 - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.26.5': - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.26.5 - - '@babel/helper-compilation-targets@7.26.5': - dependencies: - '@babel/compat-data': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.5 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.0(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.26.5 - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helper-wrap-function@7.25.9': - dependencies: - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.26.0': - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - - '@babel/parser@7.26.5': - dependencies: - '@babel/types': 7.26.5 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) - '@babel/traverse': 7.26.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.25.9 - - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-typescript@7.26.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/preset-env@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.26.5 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.0) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.40.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.26.5 - esutils: 2.0.3 - - '@babel/preset-react@7.26.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.26.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/runtime-corejs3@7.26.0': - dependencies: - core-js-pure: 3.40.0 - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/standalone@7.26.6': {} - - '@babel/template@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - - '@babel/traverse@7.26.5': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.26.5': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@bigmi/core@0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': - dependencies: - '@noble/hashes': 1.7.0 - bech32: 2.0.0 - bitcoinjs-lib: 7.0.0-rc.0(typescript@5.7.3) - bs58: 6.0.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - - '@binance/connector@3.6.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - axios: 1.7.9(debug@4.4.0) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@bitcoinerlab/secp256k1@1.2.0': - dependencies: - '@noble/curves': 1.8.0 - - '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - borsh: 1.0.0 - bs58: 5.0.0 - buffer: 6.0.3 - - '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.0 - '@scure/base': 1.2.1 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - borsh: 2.0.0 - buffer: 6.0.3 - graphemesplit: 2.4.4 - ipaddr.js: 2.2.0 - punycode: 2.3.1 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@braintree/sanitize-url@7.1.1': {} - - '@brandonblack/musig@0.0.1-alpha.1': {} - - '@cfworker/json-schema@4.1.0': {} - - '@chain-registry/types@0.50.50': {} - - '@chain-registry/utils@1.51.50': - dependencies: - '@chain-registry/types': 0.50.50 - bignumber.js: 9.1.2 - sha.js: 2.4.11 - - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} - - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 6.0.0 - express: 4.21.1 - express-prom-bundle: 7.0.2(prom-client@15.1.3) - js-sha256: 0.11.0 - keccak256: 1.0.6 - percentile: 1.6.0 - prom-client: 15.1.3 - rimraf: 5.0.10 - typedoc: 0.26.11(typescript@5.7.3) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - zstddec: 0.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@cliqz/adblocker-content@1.34.0': - dependencies: - '@cliqz/adblocker-extended-selectors': 1.34.0 - - '@cliqz/adblocker-extended-selectors@1.34.0': {} - - '@cliqz/adblocker-playwright@1.34.0(playwright@1.48.2)': - dependencies: - '@cliqz/adblocker': 1.34.0 - '@cliqz/adblocker-content': 1.34.0 - playwright: 1.48.2 - tldts-experimental: 6.1.72 - - '@cliqz/adblocker@1.34.0': - dependencies: - '@cliqz/adblocker-content': 1.34.0 - '@cliqz/adblocker-extended-selectors': 1.34.0 - '@remusao/guess-url-type': 1.3.0 - '@remusao/small': 1.3.0 - '@remusao/smaz': 1.10.0 - '@types/chrome': 0.0.278 - '@types/firefox-webext-browser': 120.0.4 - tldts-experimental: 6.1.72 - - '@coinbase-samples/advanced-sdk-ts@file:packages/plugin-coinbase/advanced-sdk-ts(encoding@0.1.13)': - dependencies: - jsonwebtoken: 9.0.2 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@coinbase/coinbase-sdk@0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1)': - dependencies: - '@scure/bip32': 1.6.1 - abitype: 1.0.8(typescript@5.6.3)(zod@3.24.1) - axios: 1.7.9 - axios-mock-adapter: 1.22.0(axios@1.7.9) - axios-retry: 4.5.0(axios@1.7.9) - bip32: 4.0.0 - bip39: 3.1.0 - decimal.js: 10.4.3 - dotenv: 16.4.7 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - node-jose: 2.2.0 - secp256k1: 5.0.1 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) - transitivePeerDependencies: - - bufferutil - - debug - - typescript - - utf-8-validate - - zod - - '@coinbase/wallet-sdk@4.2.4': - dependencies: - '@noble/hashes': 1.6.1 - clsx: 1.2.1 - eventemitter3: 5.0.1 - preact: 10.25.4 - - '@colors/colors@1.5.0': - optional: true - - '@commitlint/cli@18.6.1(@types/node@20.17.9)(typescript@5.6.3)': - dependencies: - '@commitlint/format': 18.6.1 - '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@20.17.9)(typescript@5.6.3) - '@commitlint/read': 18.6.1 - '@commitlint/types': 18.6.1 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/config-conventional@18.6.3': - dependencies: - '@commitlint/types': 18.6.1 - conventional-changelog-conventionalcommits: 7.0.2 - - '@commitlint/config-validator@18.6.1': - dependencies: - '@commitlint/types': 18.6.1 - ajv: 8.17.1 - - '@commitlint/ensure@18.6.1': - dependencies: - '@commitlint/types': 18.6.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@18.6.1': {} - - '@commitlint/format@18.6.1': - dependencies: - '@commitlint/types': 18.6.1 - chalk: 4.1.2 - - '@commitlint/is-ignored@18.6.1': - dependencies: - '@commitlint/types': 18.6.1 - semver: 7.6.0 - - '@commitlint/lint@18.6.1': - dependencies: - '@commitlint/is-ignored': 18.6.1 - '@commitlint/parse': 18.6.1 - '@commitlint/rules': 18.6.1 - '@commitlint/types': 18.6.1 - - '@commitlint/load@18.6.1(@types/node@20.17.9)(typescript@5.6.3)': - dependencies: - '@commitlint/config-validator': 18.6.1 - '@commitlint/execute-rule': 18.6.1 - '@commitlint/resolve-extends': 18.6.1 - '@commitlint/types': 18.6.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.9)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/message@18.6.1': {} - - '@commitlint/parse@18.6.1': - dependencies: - '@commitlint/types': 18.6.1 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - - '@commitlint/read@18.6.1': - dependencies: - '@commitlint/top-level': 18.6.1 - '@commitlint/types': 18.6.1 - git-raw-commits: 2.0.11 - minimist: 1.2.8 - - '@commitlint/resolve-extends@18.6.1': - dependencies: - '@commitlint/config-validator': 18.6.1 - '@commitlint/types': 18.6.1 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - - '@commitlint/rules@18.6.1': - dependencies: - '@commitlint/ensure': 18.6.1 - '@commitlint/message': 18.6.1 - '@commitlint/to-lines': 18.6.1 - '@commitlint/types': 18.6.1 - execa: 5.1.1 - - '@commitlint/to-lines@18.6.1': {} - - '@commitlint/top-level@18.6.1': - dependencies: - find-up: 5.0.0 - - '@commitlint/types@18.6.1': - dependencies: - chalk: 4.1.2 - - '@confio/ics23@0.6.8': - dependencies: - '@noble/hashes': 1.7.0 - protobufjs: 6.11.4 - - '@coral-xyz/anchor-errors@0.30.1': {} - - '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/anchor@0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor-errors': 0.30.1 - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@coral-xyz/anchor-errors': 0.30.1 - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@cosmjs/amino@0.27.1': - dependencies: - '@cosmjs/crypto': 0.27.1 - '@cosmjs/encoding': 0.27.1 - '@cosmjs/math': 0.27.1 - '@cosmjs/utils': 0.27.1 - - '@cosmjs/amino@0.31.3': - dependencies: - '@cosmjs/crypto': 0.31.3 - '@cosmjs/encoding': 0.31.3 - '@cosmjs/math': 0.31.3 - '@cosmjs/utils': 0.31.3 - - '@cosmjs/amino@0.32.2': - dependencies: - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/utils': 0.32.4 - - '@cosmjs/amino@0.32.4': - dependencies: - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/utils': 0.32.4 - - '@cosmjs/cosmwasm-stargate@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/amino': 0.32.4 - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stargate': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/tendermint-rpc': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - pako: 2.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/crypto@0.27.1': - dependencies: - '@cosmjs/encoding': 0.27.1 - '@cosmjs/math': 0.27.1 - '@cosmjs/utils': 0.27.1 - bip39: 3.1.0 - bn.js: 5.2.1 - elliptic: 6.6.1 - js-sha3: 0.8.0 - libsodium-wrappers: 0.7.15 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - '@cosmjs/crypto@0.31.3': - dependencies: - '@cosmjs/encoding': 0.31.3 - '@cosmjs/math': 0.31.3 - '@cosmjs/utils': 0.31.3 - '@noble/hashes': 1.7.0 - bn.js: 5.2.1 - elliptic: 6.6.1 - libsodium-wrappers-sumo: 0.7.15 - - '@cosmjs/crypto@0.32.4': - dependencies: - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/utils': 0.32.4 - '@noble/hashes': 1.7.0 - bn.js: 5.2.1 - elliptic: 6.6.1 - libsodium-wrappers-sumo: 0.7.15 - - '@cosmjs/encoding@0.27.1': - dependencies: - base64-js: 1.5.1 - bech32: 1.1.4 - readonly-date: 1.0.0 - - '@cosmjs/encoding@0.31.3': - dependencies: - base64-js: 1.5.1 - bech32: 1.1.4 - readonly-date: 1.0.0 - - '@cosmjs/encoding@0.32.4': - dependencies: - base64-js: 1.5.1 - bech32: 1.1.4 - readonly-date: 1.0.0 - - '@cosmjs/json-rpc@0.31.3': - dependencies: - '@cosmjs/stream': 0.31.3 - xstream: 11.14.0 - - '@cosmjs/json-rpc@0.32.4': - dependencies: - '@cosmjs/stream': 0.32.4 - xstream: 11.14.0 - - '@cosmjs/launchpad@0.27.1': - dependencies: - '@cosmjs/amino': 0.27.1 - '@cosmjs/crypto': 0.27.1 - '@cosmjs/encoding': 0.27.1 - '@cosmjs/math': 0.27.1 - '@cosmjs/utils': 0.27.1 - axios: 0.21.4 - fast-deep-equal: 3.1.3 - transitivePeerDependencies: - - debug - - '@cosmjs/math@0.27.1': - dependencies: - bn.js: 5.2.1 - - '@cosmjs/math@0.31.3': - dependencies: - bn.js: 5.2.1 - - '@cosmjs/math@0.32.4': - dependencies: - bn.js: 5.2.1 - - '@cosmjs/proto-signing@0.31.3': - dependencies: - '@cosmjs/amino': 0.31.3 - '@cosmjs/crypto': 0.31.3 - '@cosmjs/encoding': 0.31.3 - '@cosmjs/math': 0.31.3 - '@cosmjs/utils': 0.31.3 - cosmjs-types: 0.8.0 - long: 4.0.0 - - '@cosmjs/proto-signing@0.32.2': - dependencies: - '@cosmjs/amino': 0.32.2 - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - - '@cosmjs/proto-signing@0.32.4': - dependencies: - '@cosmjs/amino': 0.32.4 - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - - '@cosmjs/socket@0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/stream': 0.31.3 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@cosmjs/socket@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/stream': 0.32.4 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@cosmjs/stargate@0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@confio/ics23': 0.6.8 - '@cosmjs/amino': 0.31.3 - '@cosmjs/encoding': 0.31.3 - '@cosmjs/math': 0.31.3 - '@cosmjs/proto-signing': 0.31.3 - '@cosmjs/stream': 0.31.3 - '@cosmjs/tendermint-rpc': 0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.31.3 - cosmjs-types: 0.8.0 - long: 4.0.0 - protobufjs: 6.11.4 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/stargate@0.32.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@confio/ics23': 0.6.8 - '@cosmjs/amino': 0.32.2 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stream': 0.32.4 - '@cosmjs/tendermint-rpc': 0.32.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/stargate@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@confio/ics23': 0.6.8 - '@cosmjs/amino': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stream': 0.32.4 - '@cosmjs/tendermint-rpc': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/stream@0.31.3': - dependencies: - xstream: 11.14.0 - - '@cosmjs/stream@0.32.4': - dependencies: - xstream: 11.14.0 - - '@cosmjs/tendermint-rpc@0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/crypto': 0.31.3 - '@cosmjs/encoding': 0.31.3 - '@cosmjs/json-rpc': 0.31.3 - '@cosmjs/math': 0.31.3 - '@cosmjs/socket': 0.31.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/stream': 0.31.3 - '@cosmjs/utils': 0.31.3 - axios: 0.21.4 - readonly-date: 1.0.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/tendermint-rpc@0.32.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/json-rpc': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/socket': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/stream': 0.32.4 - '@cosmjs/utils': 0.32.4 - axios: 1.7.9(debug@4.4.0) - readonly-date: 1.0.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/tendermint-rpc@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/json-rpc': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/socket': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/stream': 0.32.4 - '@cosmjs/utils': 0.32.4 - axios: 1.7.9(debug@4.4.0) - readonly-date: 1.0.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@cosmjs/utils@0.27.1': {} - - '@cosmjs/utils@0.31.3': {} - - '@cosmjs/utils@0.32.4': {} - - '@cosmology/lcd@0.13.5': - dependencies: - axios: 1.7.4 - transitivePeerDependencies: - - debug - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/color-helpers@5.0.1': {} - - '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-tokenizer@3.0.3': {} - - '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.1)': - dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - '@csstools/postcss-color-function@4.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-color-mix-function@3.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.1)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-exponential-functions@2.0.6(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.1)': - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-gamut-mapping@2.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-hwb-function@4.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-ic-unit@4.0.0(postcss@8.5.1)': - dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-initial@2.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.1)': - dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - '@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.1)': - dependencies: - '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-media-minmax@2.0.6(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.1 - - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.1)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.1 - - '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.1)': - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-oklab-function@4.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-random-function@1.0.2(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.5.1)': - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - '@csstools/postcss-sign-functions@1.1.1(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.5.1)': - dependencies: - '@csstools/color-helpers': 5.0.1 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.5.1)': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - - '@csstools/postcss-unset-value@4.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)': - dependencies: - postcss-selector-parser: 7.0.0 - - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)': - dependencies: - postcss-selector-parser: 7.0.0 - - '@csstools/utilities@2.0.0(postcss@8.5.1)': - dependencies: - postcss: 8.5.1 - - '@deepgram/captions@1.2.0': - dependencies: - dayjs: 1.11.13 - - '@deepgram/sdk@3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@deepgram/captions': 1.2.0 - '@types/node': 18.19.71 - cross-fetch: 3.2.0(encoding@0.1.13) - deepmerge: 4.3.1 - events: 3.3.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@derhuerst/http-basic@8.2.4': - dependencies: - caseless: 0.12.0 - concat-stream: 2.0.0 - http-response-object: 3.0.2 - parse-cache-control: 1.0.1 - - '@dfinity/agent@2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3)': - dependencies: - '@dfinity/candid': 2.1.3(@dfinity/principal@2.1.3) - '@dfinity/principal': 2.1.3 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - base64-arraybuffer: 0.2.0 - borc: 2.1.2 - buffer: 6.0.3 - simple-cbor: 0.4.1 - - '@dfinity/candid@2.1.3(@dfinity/principal@2.1.3)': - dependencies: - '@dfinity/principal': 2.1.3 - - '@dfinity/identity@2.1.3(@dfinity/agent@2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3)(@peculiar/webcrypto@1.5.0)': - dependencies: - '@dfinity/agent': 2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3) - '@dfinity/principal': 2.1.3 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@peculiar/webcrypto': 1.5.0 - borc: 2.1.2 - - '@dfinity/principal@2.1.3': - dependencies: - '@noble/hashes': 1.7.0 - - '@discordjs/builders@1.10.0': - dependencies: - '@discordjs/formatters': 0.6.0 - '@discordjs/util': 1.1.1 - '@sapphire/shapeshift': 4.0.0 - discord-api-types: 0.37.115 - fast-deep-equal: 3.1.3 - ts-mixer: 6.0.4 - tslib: 2.8.1 - - '@discordjs/collection@1.5.3': {} - - '@discordjs/collection@2.1.1': {} - - '@discordjs/formatters@0.5.0': - dependencies: - discord-api-types: 0.37.97 - - '@discordjs/formatters@0.6.0': - dependencies: - discord-api-types: 0.37.115 - - '@discordjs/node-pre-gyp@0.4.5(encoding@0.1.13)': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13)': - dependencies: - '@discordjs/node-pre-gyp': 0.4.5(encoding@0.1.13) - node-addon-api: 8.3.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@discordjs/rest@2.4.0': - dependencies: - '@discordjs/collection': 2.1.1 - '@discordjs/util': 1.1.1 - '@sapphire/async-queue': 1.5.5 - '@sapphire/snowflake': 3.5.5 - '@vladfrangu/async_event_emitter': 2.4.6 - discord-api-types: 0.37.97 - magic-bytes.js: 1.10.0 - tslib: 2.8.1 - undici: 6.19.8 - - '@discordjs/util@1.1.1': {} - - '@discordjs/voice@0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.9)(ffmpeg-static@5.2.0)(utf-8-validate@6.0.5)': - dependencies: - '@types/ws': 8.5.13 - discord-api-types: 0.37.83 - prism-media: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0) - tslib: 2.8.1 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - '@discordjs/opus' - - bufferutil - - ffmpeg-static - - node-opus - - opusscript - - utf-8-validate - - '@discordjs/ws@1.1.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@discordjs/collection': 2.1.1 - '@discordjs/rest': 2.4.0 - '@discordjs/util': 1.1.1 - '@sapphire/async-queue': 1.5.5 - '@types/ws': 8.5.13 - '@vladfrangu/async_event_emitter': 2.4.6 - discord-api-types: 0.37.83 - tslib: 2.8.1 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@discoveryjs/json-ext@0.5.7': {} - - '@docsearch/css@3.8.2': {} - - '@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) - '@docsearch/css': 3.8.2 - algoliasearch: 5.19.0 - optionalDependencies: - '@types/react': 19.0.7 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/babel@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-react': 7.26.3(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@babel/runtime': 7.26.0 - '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.26.5 - '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - babel-plugin-dynamic-import-node: 2.3.3 - fs-extra: 11.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - react - - react-dom - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/bundler@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@babel/core': 7.26.0 - '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/cssnano-preset': 3.6.3 - '@docusaurus/logger': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - cssnano: 6.1.2(postcss@8.5.1) - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - null-loader: 4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - postcss: 8.5.1 - postcss-loader: 7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - postcss-preset-env: 10.1.3(postcss@8.5.1) - react-dev-utils: 12.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - webpackbar: 6.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - csso - - esbuild - - eslint - - lightningcss - - react - - react-dom - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack-cli - - '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/bundler': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@mdx-js/react': 3.0.1(@types/react@19.0.7)(react@18.3.1) - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - core-js: 3.40.0 - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 2.2.0 - eval: 0.1.8 - fs-extra: 11.2.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - leven: 3.1.0 - lodash: 4.17.21 - p-map: 4.0.0 - prompts: 2.4.2 - react: 18.3.1 - react-dev-utils: 12.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - react-router: 5.3.4(react@18.3.1) - react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) - react-router-dom: 5.3.4(react@18.3.1) - rtl-detect: 1.1.2 - semver: 7.6.3 - serve-handler: 6.1.6 - shelljs: 0.8.5 - tslib: 2.8.1 - update-notifier: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - webpack-dev-server: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - webpack-merge: 6.0.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/cssnano-preset@3.6.3': - dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-sort-media-queries: 5.2.0(postcss@8.5.1) - tslib: 2.8.1 - - '@docusaurus/logger@3.6.3': - dependencies: - chalk: 4.1.2 - tslib: 2.8.1 - - '@docusaurus/lqip-loader@3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)))': - dependencies: - '@docusaurus/logger': 3.6.3 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - lodash: 4.17.21 - sharp: 0.32.6 - tslib: 2.8.1 - transitivePeerDependencies: - - bare-buffer - - webpack - - '@docusaurus/mdx-loader@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@mdx-js/mdx': 3.1.0(acorn@8.14.0) - '@slorber/remark-comment': 1.0.0 - escape-html: 1.0.3 - estree-util-value-to-estree: 3.2.1 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - fs-extra: 11.2.0 - image-size: 1.2.0 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - rehype-raw: 7.0.0 - remark-directive: 3.0.0 - remark-emoji: 4.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.0 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 11.0.5 - unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - vfile: 6.0.3 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/module-type-aliases@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/history': 4.7.11 - '@types/react': 19.0.7 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 2.0.5(react@18.3.1) - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/plugin-content-blog@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - cheerio: 1.0.0-rc.12 - feed: 4.2.2 - fs-extra: 11.2.0 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reading-time: 1.5.0 - srcset: 4.0.0 - tslib: 2.8.1 - unist-util-visit: 5.0.0 - utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 11.2.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - fs-extra: 11.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - fs-extra: 11.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-json-view-lite: 1.5.0(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@types/gtag.js': 0.0.12 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/lqip-loader': 3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) - '@docusaurus/theme-translations': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-waypoint: 10.3.0(react@18.3.1) - sharp: 0.32.6 - tslib: 2.8.1 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bare-buffer - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - prop-types - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-sitemap@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/logger': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - fs-extra: 11.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - sitemap: 7.1.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-classic': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/react-loadable@6.0.0(react@18.3.1)': - dependencies: - '@types/react': 19.0.7 - react: 18.3.1 - - '@docusaurus/responsive-loader@1.7.0(sharp@0.32.6)': - dependencies: - loader-utils: 2.0.4 - optionalDependencies: - sharp: 0.32.6 - - '@docusaurus/theme-classic@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/theme-translations': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@mdx-js/react': 3.0.1(@types/react@19.0.7)(react@18.3.1) - clsx: 2.1.1 - copy-text-to-clipboard: 3.2.0 - infima: 0.2.0-alpha.45 - lodash: 4.17.21 - nprogress: 0.2.0 - postcss: 8.5.1 - prism-react-renderer: 2.3.1(react@18.3.1) - prismjs: 1.29.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router-dom: 5.3.4(react@18.3.1) - rtlcss: 4.3.0 - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/theme-common@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/history': 4.7.11 - '@types/react': 19.0.7 - '@types/react-router-config': 5.0.11 - clsx: 2.1.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 2.3.1(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/theme-mermaid@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - mermaid: 11.4.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@docusaurus/faster' - - '@docusaurus/plugin-content-docs' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/logger': 3.6.3 - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/theme-translations': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - algoliasearch: 4.24.0 - algoliasearch-helper: 3.23.0(algoliasearch@4.24.0) - clsx: 2.1.1 - eta: 2.2.0 - fs-extra: 11.2.0 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/faster' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - acorn - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/theme-translations@3.6.3': - dependencies: - fs-extra: 11.2.0 - tslib: 2.8.1 - - '@docusaurus/types@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.14.0) - '@types/history': 4.7.11 - '@types/react': 19.0.7 - commander: 5.1.0 - joi: 17.13.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/utils-common@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - react - - react-dom - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/utils-validation@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fs-extra: 11.2.0 - joi: 17.13.3 - js-yaml: 4.1.0 - lodash: 4.17.21 - tslib: 2.8.1 - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - react - - react-dom - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/utils@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': - dependencies: - '@docusaurus/logger': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@svgr/webpack': 8.1.0(typescript@5.7.3) - escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - fs-extra: 11.2.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - jiti: 1.21.7 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.8 - prompts: 2.4.2 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - '@swc/core' - - acorn - - esbuild - - react - - react-dom - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@echogarden/audio-io@0.2.3': {} - - '@echogarden/espeak-ng-emscripten@0.3.3': {} - - '@echogarden/fasttext-wasm@0.1.0': {} - - '@echogarden/flite-wasi@0.1.1': {} - - '@echogarden/fvad-wasm@0.2.0': {} - - '@echogarden/kissfft-wasm@0.2.0': {} - - '@echogarden/pffft-wasm@0.4.2': {} - - '@echogarden/rnnoise-wasm@0.2.0': {} - - '@echogarden/rubberband-wasm@0.2.0': {} - - '@echogarden/sonic-wasm@0.2.0': {} - - '@echogarden/speex-resampler-wasm@0.2.1': {} - - '@echogarden/speex-resampler-wasm@0.3.0': {} - - '@echogarden/svoxpico-wasm@0.2.0': {} - - '@echogarden/transformers-nodejs-lite@2.17.1-lite.3(onnxruntime-node@1.20.1)': - dependencies: - '@huggingface/jinja': 0.2.2 - onnxruntime-node: 1.20.1 - - '@electric-sql/pglite@0.2.15': {} - - '@elizaos/core@0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))': - dependencies: - '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) - '@ai-sdk/google': 0.0.55(zod@3.23.8) - '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) - '@ai-sdk/groq': 0.0.3(zod@3.23.8) - '@ai-sdk/mistral': 1.0.8(zod@3.23.8) - '@ai-sdk/openai': 1.0.5(zod@3.23.8) - '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) - '@fal-ai/client': 1.2.0 - '@types/uuid': 10.0.0 - ai: 3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) - anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) - fastembed: 1.14.1 - fastestsmallesttextencoderdecoder: 1.0.22 - gaxios: 6.7.1(encoding@0.1.13) - glob: 11.0.0 - handlebars: 4.7.8 - js-sha1: 0.7.0 - js-tiktoken: 1.0.15 - langchain: 0.3.6(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - ollama-ai-provider: 0.16.1(zod@3.23.8) - openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) - tinyld: 1.3.4 - together-ai: 0.7.0(encoding@0.1.13) - unique-names-generator: 4.7.1 - uuid: 11.0.3 - zod: 3.23.8 - transitivePeerDependencies: - - '@google-cloud/vertexai' - - '@langchain/anthropic' - - '@langchain/aws' - - '@langchain/cohere' - - '@langchain/core' - - '@langchain/google-genai' - - '@langchain/google-vertexai' - - '@langchain/groq' - - '@langchain/mistralai' - - '@langchain/ollama' - - axios - - cheerio - - encoding - - peggy - - react - - solid-js - - sswr - - supports-color - - svelte - - typeorm - - vue - - '@emnapi/core@1.3.1': - dependencies: - '@emnapi/wasi-threads': 1.0.1 - tslib: 2.8.1 - - '@emnapi/runtime@1.3.1': - dependencies: - tslib: 2.8.1 - - '@emnapi/wasi-threads@1.0.1': - dependencies: - tslib: 2.8.1 - - '@emotion/babel-plugin@11.13.5': - dependencies: - '@babel/helper-module-imports': 7.25.9 - '@babel/runtime': 7.26.0 - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/cache@11.14.0': - dependencies: - '@emotion/memoize': 0.9.0 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - stylis: 4.2.0 - - '@emotion/hash@0.9.2': {} - - '@emotion/is-prop-valid@1.3.1': - dependencies: - '@emotion/memoize': 0.9.0 - - '@emotion/memoize@0.9.0': {} - - '@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.0 - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - transitivePeerDependencies: - - supports-color - - '@emotion/serialize@1.3.3': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.10.0 - '@emotion/utils': 1.4.2 - csstype: 3.1.3 - - '@emotion/sheet@1.4.0': {} - - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.0 - '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) - '@emotion/utils': 1.4.2 - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - transitivePeerDependencies: - - supports-color - - '@emotion/unitless@0.10.0': {} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.0.0)': - dependencies: - react: 19.0.0 - - '@emotion/utils@1.4.2': {} - - '@emotion/weak-memoize@0.4.0': {} - - '@es-joy/jsdoccomment@0.41.0': - dependencies: - comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.0.0 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/aix-ppc64@0.23.1': - optional: true - - '@esbuild/aix-ppc64@0.24.2': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.23.1': - optional: true - - '@esbuild/android-arm64@0.24.2': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-arm@0.23.1': - optional: true - - '@esbuild/android-arm@0.24.2': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/android-x64@0.23.1': - optional: true - - '@esbuild/android-x64@0.24.2': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.23.1': - optional: true - - '@esbuild/darwin-arm64@0.24.2': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.23.1': - optional: true - - '@esbuild/darwin-x64@0.24.2': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.23.1': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.23.1': - optional: true - - '@esbuild/freebsd-x64@0.24.2': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.23.1': - optional: true - - '@esbuild/linux-arm64@0.24.2': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-arm@0.23.1': - optional: true - - '@esbuild/linux-arm@0.24.2': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.23.1': - optional: true - - '@esbuild/linux-ia32@0.24.2': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.23.1': - optional: true - - '@esbuild/linux-loong64@0.24.2': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.23.1': - optional: true - - '@esbuild/linux-mips64el@0.24.2': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.23.1': - optional: true - - '@esbuild/linux-ppc64@0.24.2': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.23.1': - optional: true - - '@esbuild/linux-riscv64@0.24.2': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.23.1': - optional: true - - '@esbuild/linux-s390x@0.24.2': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/linux-x64@0.23.1': - optional: true - - '@esbuild/linux-x64@0.24.2': - optional: true - - '@esbuild/netbsd-arm64@0.24.2': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.23.1': - optional: true - - '@esbuild/netbsd-x64@0.24.2': - optional: true - - '@esbuild/openbsd-arm64@0.23.1': - optional: true - - '@esbuild/openbsd-arm64@0.24.2': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.23.1': - optional: true - - '@esbuild/openbsd-x64@0.24.2': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.23.1': - optional: true - - '@esbuild/sunos-x64@0.24.2': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.23.1': - optional: true - - '@esbuild/win32-arm64@0.24.2': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.23.1': - optional: true - - '@esbuild/win32-ia32@0.24.2': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@esbuild/win32-x64@0.23.1': - optional: true - - '@esbuild/win32-x64@0.24.2': - optional: true - - '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0(jiti@2.4.2))': - dependencies: - eslint: 9.16.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': - dependencies: - eslint: 9.18.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.19.1': - dependencies: - '@eslint/object-schema': 2.1.5 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.10.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.9.1': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.2.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.1': {} - - '@eslint/js@9.16.0': {} - - '@eslint/js@9.18.0': {} - - '@eslint/object-schema@2.1.5': {} - - '@eslint/plugin-kit@0.2.5': - dependencies: - '@eslint/core': 0.10.0 - levn: 0.4.1 - - '@ethereumjs/rlp@4.0.1': {} - - '@ethereumjs/rlp@5.0.2': {} - - '@ethereumjs/util@8.1.0': - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.2.1 - micro-ftch: 0.3.1 - - '@ethersproject/abi@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/abstract-provider@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - '@ethersproject/abstract-signer@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/address@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/contracts@5.7.0': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - - '@ethersproject/hash@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/hdnode@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/json-wallets@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - - '@ethersproject/keccak256@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/networks@5.7.1': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/pbkdf2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - - '@ethersproject/properties@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/random@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@ethersproject/signing-key@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - - '@ethersproject/solidity@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/strings@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/transactions@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - - '@ethersproject/units@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/wallet@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/web@5.7.1': - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/wordlists@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@fal-ai/client@1.2.0': - dependencies: - '@msgpack/msgpack': 3.0.0-beta2 - eventsource-parser: 1.1.2 - robot3: 0.4.1 - - '@ffmpeg-installer/darwin-arm64@4.1.5': - optional: true - - '@ffmpeg-installer/darwin-x64@4.1.0': - optional: true - - '@ffmpeg-installer/ffmpeg@1.1.0': - optionalDependencies: - '@ffmpeg-installer/darwin-arm64': 4.1.5 - '@ffmpeg-installer/darwin-x64': 4.1.0 - '@ffmpeg-installer/linux-arm': 4.1.3 - '@ffmpeg-installer/linux-arm64': 4.1.4 - '@ffmpeg-installer/linux-ia32': 4.1.0 - '@ffmpeg-installer/linux-x64': 4.1.0 - '@ffmpeg-installer/win32-ia32': 4.1.0 - '@ffmpeg-installer/win32-x64': 4.1.0 - - '@ffmpeg-installer/linux-arm64@4.1.4': - optional: true - - '@ffmpeg-installer/linux-arm@4.1.3': - optional: true - - '@ffmpeg-installer/linux-ia32@4.1.0': - optional: true - - '@ffmpeg-installer/linux-x64@4.1.0': - optional: true - - '@ffmpeg-installer/win32-ia32@4.1.0': - optional: true - - '@ffmpeg-installer/win32-x64@4.1.0': - optional: true - - '@floating-ui/core@1.6.9': - dependencies: - '@floating-ui/utils': 0.2.9 - - '@floating-ui/dom@1.6.13': - dependencies: - '@floating-ui/core': 1.6.9 - '@floating-ui/utils': 0.2.9 - - '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@floating-ui/dom': 1.6.13 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - '@floating-ui/utils@0.2.9': {} - - '@fuel-ts/abi-coder@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - type-fest: 4.32.0 - transitivePeerDependencies: - - vitest - - '@fuel-ts/abi-typegen@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/versions': 0.97.2 - commander: 12.1.0 - glob: 10.4.5 - handlebars: 4.7.8 - mkdirp: 3.0.1 - ramda: 0.30.1 - rimraf: 5.0.10 - transitivePeerDependencies: - - vitest - - '@fuel-ts/account@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/versions': 0.97.2 - '@fuels/vm-asm': 0.58.2 - '@noble/curves': 1.8.0 - events: 3.3.0 - graphql: 16.10.0 - graphql-request: 6.1.0(encoding@0.1.13)(graphql@16.10.0) - graphql-tag: 2.12.6(graphql@16.10.0) - ramda: 0.30.1 - transitivePeerDependencies: - - encoding - - vitest - - '@fuel-ts/address@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@noble/hashes': 1.7.0 - bech32: 2.0.0 - transitivePeerDependencies: - - vitest - - '@fuel-ts/contract@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/versions': 0.97.2 - '@fuels/vm-asm': 0.58.2 - ramda: 0.30.1 - transitivePeerDependencies: - - encoding - - vitest - - '@fuel-ts/crypto@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@noble/hashes': 1.7.0 - transitivePeerDependencies: - - vitest - - '@fuel-ts/errors@0.97.2': - dependencies: - '@fuel-ts/versions': 0.97.2 - - '@fuel-ts/hasher@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@noble/hashes': 1.7.0 - transitivePeerDependencies: - - vitest - - '@fuel-ts/interfaces@0.97.2': {} - - '@fuel-ts/math@0.97.2': - dependencies: - '@fuel-ts/errors': 0.97.2 - '@types/bn.js': 5.1.6 - bn.js: 5.2.1 - - '@fuel-ts/merkle@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/math': 0.97.2 - transitivePeerDependencies: - - vitest - - '@fuel-ts/program@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuels/vm-asm': 0.58.2 - ramda: 0.30.1 - transitivePeerDependencies: - - encoding - - vitest - - '@fuel-ts/recipes@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - transitivePeerDependencies: - - encoding - - vitest - - '@fuel-ts/script@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - transitivePeerDependencies: - - encoding - - vitest - - '@fuel-ts/transactions@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - transitivePeerDependencies: - - vitest - - '@fuel-ts/utils@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/versions': 0.97.2 - fflate: 0.8.2 - vitest: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - '@fuel-ts/versions@0.97.2': - dependencies: - chalk: 4.1.2 - cli-table: 0.3.11 - - '@fuels/vm-asm@0.58.2': {} - - '@gerrit0/mini-shiki@1.27.2': - dependencies: - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/types': 1.27.2 - '@shikijs/vscode-textmate': 10.0.1 - - '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.38(react@19.0.0)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.4.0 - ai: 4.0.38(react@19.0.0)(zod@3.23.8) - zod: 3.23.8 - - '@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - abitype: 1.0.8(typescript@5.7.3)(zod@3.23.8) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - '@goat-sdk/core@0.4.0': - dependencies: - reflect-metadata: 0.2.2 - zod: 3.23.8 - - '@goat-sdk/plugin-coingecko@0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) - zod: 3.23.8 - - '@goat-sdk/plugin-erc20@0.1.7(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) - zod: 3.23.8 - - '@goat-sdk/plugin-erc20@0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.4.0 - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - '@goat-sdk/plugin-kim@0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.4.0 - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - '@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)': - dependencies: - '@goat-sdk/core': 0.4.0 - abitype: 1.0.8(typescript@5.7.3)(zod@3.23.8) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - '@goat-sdk/wallet-viem@0.1.3(@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': 0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) - - '@goat-sdk/wallet-viem@0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8))': - dependencies: - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) - - '@google-cloud/vertexai@1.9.2(encoding@0.1.13)': - dependencies: - google-auth-library: 9.15.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - '@google/model-viewer@2.1.1': - dependencies: - lit: 2.8.0 - three: 0.146.0 - - '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3)': - dependencies: - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) - graphql: 16.10.0 - typescript: 5.7.3 - - '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.3)': - dependencies: - '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) - graphql: 16.10.0 - typescript: 5.7.3 - - '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': - dependencies: - graphql: 16.10.0 - - '@grpc/grpc-js@1.12.5': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.4 - protobufjs: 7.4.0 - yargs: 17.7.2 - - '@hapi/hoek@9.3.0': {} - - '@hapi/topo@5.1.0': - dependencies: - '@hapi/hoek': 9.3.0 - - '@huggingface/jinja@0.2.2': {} - - '@huggingface/jinja@0.3.2': {} - - '@huggingface/transformers@3.0.2': - dependencies: - '@huggingface/jinja': 0.3.2 - onnxruntime-node: 1.20.1 - onnxruntime-web: 1.21.0-dev.20241024-d9ca84ef96 - sharp: 0.33.5 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.1': {} - - '@hutson/parse-repository-url@3.0.2': {} - - '@iconify/types@2.0.0': {} - - '@iconify/utils@2.2.1': - dependencies: - '@antfu/install-pkg': 0.4.1 - '@antfu/utils': 0.7.10 - '@iconify/types': 2.0.0 - debug: 4.4.0(supports-color@5.5.0) - globals: 15.14.0 - kolorist: 1.8.0 - local-pkg: 0.5.1 - mlly: 1.7.4 - transitivePeerDependencies: - - supports-color - - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - - '@img/sharp-darwin-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - - '@img/sharp-libvips-linux-s390x@1.0.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - optional: true - - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - - '@img/sharp-linux-s390x@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - optional: true - - '@img/sharp-linux-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - optional: true - - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.3.1 - optional: true - - '@img/sharp-win32-ia32@0.33.5': - optional: true - - '@img/sharp-win32-x64@0.33.5': - optional: true - - '@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.4)': - dependencies: - browser-headers: 0.4.1 - google-protobuf: 3.21.4 - - '@ioredis/commands@1.2.0': {} - - '@irys/arweave@0.0.2': - dependencies: - asn1.js: 5.4.1 - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - base64-js: 1.5.1 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - debug - - '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@irys/arweave': 0.0.2 - '@noble/ed25519': 1.7.3 - base64url: 3.0.1 - bs58: 4.0.1 - keccak: 3.0.4 - secp256k1: 5.0.1 - optionalDependencies: - '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) - arweave-stream-tx: 1.2.2(arweave@1.15.5) - multistream: 4.1.0 - tmp-promise: 3.0.3 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@irys/query@0.0.8': - dependencies: - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - transitivePeerDependencies: - - debug - - '@irys/query@0.0.9': - dependencies: - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - transitivePeerDependencies: - - debug - - '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@aptos-labs/ts-sdk': 1.33.1 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/wallet': 5.7.0 - '@irys/query': 0.0.8 - '@near-js/crypto': 0.0.3 - '@near-js/keystores-browser': 0.0.3 - '@near-js/providers': 0.0.4(encoding@0.1.13) - '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@supercharge/promise-pool': 3.2.0 - algosdk: 1.24.1(encoding@0.1.13) - arbundles: 0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - base64url: 3.0.1 - bignumber.js: 9.1.2 - bs58: 5.0.0 - commander: 8.3.0 - csv: 5.5.3 - inquirer: 8.2.6 - js-sha256: 0.9.0 - mime-types: 2.1.35 - near-seed-phrase: 0.2.1 - tslib: 2.8.1 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@irys/upload-core@0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/query': 0.0.9 - '@supercharge/promise-pool': 3.2.0 - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - base64url: 3.0.1 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@irys/upload-ethereum@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/wallet': 5.7.0 - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber.js: 9.1.2 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@irys/upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) - base64url: 3.0.1 - bignumber.js: 9.1.2 - csv-parse: 5.6.0 - csv-stringify: 6.5.2 - inquirer: 8.2.6 - mime-types: 2.1.35 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 - - '@isaacs/string-locale-compare@1.1.0': {} - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jclem/logfmt2@2.4.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.9 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.17.9 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.26.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.9 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@js-sdsl/ordered-map@4.4.2': {} - - '@jsdevtools/ono@7.1.3': {} - - '@jspm/core@2.1.0': {} - - '@kikobeats/time-span@1.0.5': {} - - '@kwsites/file-exists@1.1.1': - dependencies: - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@kwsites/promise-deferred@1.1.1': {} - - '@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': - dependencies: - '@cfworker/json-schema': 4.1.0 - ansi-styles: 5.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - js-tiktoken: 1.0.15 - langsmith: 0.2.15(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - openai - - '@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': - dependencies: - '@cfworker/json-schema': 4.1.0 - ansi-styles: 5.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - js-tiktoken: 1.0.15 - langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - openai - - '@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': - dependencies: - '@langchain/core': 0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) - groq-sdk: 0.5.0(encoding@0.1.13) - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - optional: true - - '@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - groq-sdk: 0.5.0(encoding@0.1.13) - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - uuid: 10.0.0 - - '@langchain/langgraph-sdk@0.0.36': - dependencies: - '@types/json-schema': 7.0.15 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - - '@langchain/langgraph@0.2.40(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.36 - uuid: 10.0.0 - zod: 3.23.8 - - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': - dependencies: - '@langchain/core': 0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - js-tiktoken: 1.0.15 - openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - js-tiktoken: 1.0.15 - openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))': - dependencies: - '@langchain/core': 0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - js-tiktoken: 1.0.15 - - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - js-tiktoken: 1.0.15 - - '@leichtgewicht/ip-codec@2.0.5': {} - - '@lens-network/sdk@0.0.0-canary-20241203140504(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1))(zksync-ethers@6.15.3(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5)))': - optionalDependencies: - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - zksync-ethers: 6.15.3(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - - '@lens-protocol/blockchain-bindings@0.10.2(@jest/globals@29.7.0)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/units': 5.7.0 - '@lens-protocol/domain': 0.12.0(@jest/globals@29.7.0) - '@lens-protocol/shared-kernel': 0.12.0 - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - tslib: 2.8.1 - transitivePeerDependencies: - - '@faker-js/faker' - - '@jest/globals' - - bufferutil - - jest-mock-extended - - jest-when - - utf-8-validate - - wait-for-expect - - '@lens-protocol/client@2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/wallet': 5.7.0 - '@lens-protocol/blockchain-bindings': 0.10.2(@jest/globals@29.7.0)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lens-protocol/gated-content': 0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(zod@3.23.8) - '@lens-protocol/shared-kernel': 0.12.0 - '@lens-protocol/storage': 0.8.1 - graphql: 16.10.0 - graphql-request: 6.1.0(encoding@0.1.13)(graphql@16.10.0) - graphql-tag: 2.12.6(graphql@16.10.0) - jwt-decode: 3.1.2 - tslib: 2.8.1 - zod: 3.23.8 - optionalDependencies: - '@lens-protocol/metadata': 1.2.0(zod@3.23.8) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@faker-js/faker' - - '@jest/globals' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ethers - - ioredis - - jest-mock-extended - - jest-when - - react - - uploadthing - - utf-8-validate - - wait-for-expect - - '@lens-protocol/domain@0.12.0(@jest/globals@29.7.0)': - dependencies: - '@lens-protocol/shared-kernel': 0.12.0 - tslib: 2.8.1 - optionalDependencies: - '@jest/globals': 29.7.0 - - '@lens-protocol/gated-content@0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(zod@3.23.8)': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/wallet': 5.7.0 - '@lens-protocol/metadata': 1.2.0(zod@3.23.8) - '@lens-protocol/shared-kernel': 0.12.0 - '@lens-protocol/storage': 0.8.1 - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/encryption': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/node-client': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@lit-protocol/types': 2.1.62 - siwe: 2.3.2(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - tslib: 2.8.1 - zod: 3.23.8 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ethers - - ioredis - - react - - uploadthing - - utf-8-validate - - '@lens-protocol/metadata@1.2.0(zod@3.23.8)': - dependencies: - json-stable-stringify: 1.2.1 - uuid: 9.0.1 - optionalDependencies: - zod: 3.23.8 - - '@lens-protocol/shared-kernel@0.12.0': - dependencies: - '@ethersproject/address': 5.7.0 - decimal.js: 10.4.3 - lodash: 4.17.21 - traverse: 0.6.11 - tslib: 2.8.1 - - '@lens-protocol/storage@0.8.1': - dependencies: - '@lens-protocol/shared-kernel': 0.12.0 - tslib: 2.8.1 - zod: 3.23.8 - - '@lerna/create@8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.6.3)': - dependencies: - '@npmcli/arborist': 7.5.3 - '@npmcli/package-json': 5.2.0 - '@npmcli/run-script': 8.1.0 - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11(encoding@0.1.13) - aproba: 2.0.0 - byte-size: 8.1.1 - chalk: 4.1.0 - clone-deep: 4.0.1 - cmd-shim: 6.0.3 - color-support: 1.1.3 - columnify: 1.6.0 - console-control-strings: 1.1.0 - conventional-changelog-core: 5.0.1 - conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.6.3) - dedent: 1.5.3(babel-plugin-macros@3.1.0) - execa: 5.0.0 - fs-extra: 11.2.0 - get-stream: 6.0.0 - git-url-parse: 14.0.0 - glob-parent: 6.0.2 - globby: 11.1.0 - graceful-fs: 4.2.11 - has-unicode: 2.0.1 - ini: 1.3.8 - init-package-json: 6.0.3 - inquirer: 8.2.6 - is-ci: 3.0.1 - is-stream: 2.0.0 - js-yaml: 4.1.0 - libnpmpublish: 9.0.9 - load-json-file: 6.2.0 - lodash: 4.17.21 - make-dir: 4.0.0 - minimatch: 3.0.5 - multimatch: 5.0.0 - node-fetch: 2.6.7(encoding@0.1.13) - npm-package-arg: 11.0.2 - npm-packlist: 8.0.2 - npm-registry-fetch: 17.1.0 - nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) - p-map: 4.0.0 - p-map-series: 2.1.0 - p-queue: 6.6.2 - p-reduce: 2.1.0 - pacote: 18.0.6 - pify: 5.0.0 - read-cmd-shim: 4.0.0 - resolve-from: 5.0.0 - rimraf: 4.4.1 - semver: 7.6.3 - set-blocking: 2.0.0 - signal-exit: 3.0.7 - slash: 3.0.0 - ssri: 10.0.6 - strong-log-transformer: 2.1.0 - tar: 6.2.1 - temp-dir: 1.0.0 - upath: 2.0.1 - uuid: 10.0.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.1 - wide-align: 1.1.5 - write-file-atomic: 5.0.1 - write-pkg: 4.0.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - babel-plugin-macros - - bluebird - - debug - - encoding - - supports-color - - typescript - - '@lifi/data-types@5.15.5': - dependencies: - '@lifi/types': 16.3.0 - - '@lifi/sdk@3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.7.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': - dependencies: - '@bigmi/core': 0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - '@lifi/types': 16.3.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bech32: 2.0.0 - bitcoinjs-lib: 7.0.0-rc.0(typescript@5.7.3) - bs58: 6.0.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - transitivePeerDependencies: - - typescript - - '@lifi/types@16.3.0': {} - - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@noble/hashes': 1.5.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - superstruct: 2.0.2 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@lit-labs/ssr-dom-shim@1.3.0': {} - - '@lit-protocol/access-control-conditions@2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lit-protocol/auth-browser@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/misc-browser': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - lit-connect-modal: 0.1.11 - lit-siwe: 1.1.8(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0) - tslib: 2.8.1 - tweetnacl: 1.0.3 - tweetnacl-util: 0.13.5 - util: 0.12.5 - web-vitals: 3.5.2 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@ethersproject/contracts' - - '@ethersproject/hash' - - '@ethersproject/providers' - - '@ethersproject/wallet' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - uploadthing - - utf-8-validate - - '@lit-protocol/bls-sdk@2.1.62': {} - - '@lit-protocol/constants@2.1.62': - dependencies: - '@lit-protocol/types': 2.1.62 - tslib: 2.8.1 - - '@lit-protocol/crypto@2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/bls-sdk': 2.1.62 - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/ecdsa-sdk': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/nacl': 2.1.62 - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lit-protocol/ecdsa-sdk@2.1.62': {} - - '@lit-protocol/encryption@2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/bls-sdk': 2.1.62 - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/ecdsa-sdk': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/nacl': 2.1.62 - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - jszip: 3.10.1 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lit-protocol/lit-third-party-libs@2.1.62': {} - - '@lit-protocol/misc-browser@2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lit-protocol/misc@2.1.62': - dependencies: - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/types': 2.1.62 - tslib: 2.8.1 - - '@lit-protocol/nacl@2.1.62': {} - - '@lit-protocol/node-client@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@lit-protocol/access-control-conditions': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/auth-browser': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@lit-protocol/bls-sdk': 2.1.62 - '@lit-protocol/constants': 2.1.62 - '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/ecdsa-sdk': 2.1.62 - '@lit-protocol/encryption': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/lit-third-party-libs': 2.1.62 - '@lit-protocol/misc': 2.1.62 - '@lit-protocol/misc-browser': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/nacl': 2.1.62 - '@lit-protocol/types': 2.1.62 - '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - jszip: 3.10.1 - lit-connect-modal: 0.1.11 - lit-siwe: 1.1.8(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0) - node-fetch: 2.7.0(encoding@0.1.13) - tslib: 2.8.1 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@ethersproject/contracts' - - '@ethersproject/hash' - - '@ethersproject/providers' - - '@ethersproject/wallet' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - uploadthing - - utf-8-validate - - '@lit-protocol/types@2.1.62': {} - - '@lit-protocol/uint8arrays@2.1.62': {} - - '@lit/reactive-element@1.6.3': - dependencies: - '@lit-labs/ssr-dom-shim': 1.3.0 - - '@liuli-util/fs-extra@0.1.0': - dependencies: - '@types/fs-extra': 9.0.13 - fs-extra: 10.1.0 - - '@lukeed/csprng@1.1.0': {} - - '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - '@massalabs/massa-web3@5.1.1': - dependencies: - '@noble/ed25519': 1.7.3 - '@noble/hashes': 1.7.0 - bs58check: 4.0.0 - decimal.js: 10.4.3 - dotenv: 16.4.7 - eventemitter3: 5.0.1 - lodash.isequal: 4.5.0 - secure-random: 1.1.2 - tslib: 2.8.1 - varint: 6.0.0 - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - - '@mdx-js/mdx@3.1.0(acorn@8.14.0)': - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.2 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - source-map: 0.7.4 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - acorn - - supports-color - - '@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 19.0.7 - react: 18.3.1 - - '@mermaid-js/parser@0.3.0': - dependencies: - langium: 3.0.0 - - '@metaplex-foundation/beet-solana@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.4.0': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.6.1': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.7.1': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.6.1 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - js-sha3: 0.8.0 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@msgpack/msgpack': 3.0.0-beta2 - '@noble/hashes': 1.7.0 - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/rustbin@0.3.5': - dependencies: - debug: 4.4.0(supports-color@5.5.0) - semver: 7.6.3 - text-table: 0.2.0 - toml: 3.0.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/rustbin': 0.3.5 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - camelcase: 6.3.0 - debug: 4.4.0(supports-color@5.5.0) - js-sha256: 0.9.0 - prettier: 2.8.8 - snake-case: 3.0.4 - spok: 1.5.5 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13) - '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - encoding - - '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13) - '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - encoding - - '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.0 - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@metaplex-foundation/umi-options@0.8.9': {} - - '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-public-keys@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-encodings': 0.8.9 - - '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-serializers-core@0.8.9': {} - - '@metaplex-foundation/umi-serializers-encodings@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-core': 0.8.9 - - '@metaplex-foundation/umi-serializers-numbers@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-core': 0.8.9 - - '@metaplex-foundation/umi-serializers@0.9.0': - dependencies: - '@metaplex-foundation/umi-options': 0.8.9 - '@metaplex-foundation/umi-public-keys': 0.8.9 - '@metaplex-foundation/umi-serializers-core': 0.8.9 - '@metaplex-foundation/umi-serializers-encodings': 0.8.9 - '@metaplex-foundation/umi-serializers-numbers': 0.8.9 - - '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - - '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - - '@metaplex-foundation/umi@0.9.2': - dependencies: - '@metaplex-foundation/umi-options': 0.8.9 - '@metaplex-foundation/umi-public-keys': 0.8.9 - '@metaplex-foundation/umi-serializers': 0.9.0 - - '@motionone/animation@10.18.0': - dependencies: - '@motionone/easing': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/dom@10.18.0': - dependencies: - '@motionone/animation': 10.18.0 - '@motionone/generators': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@motionone/easing@10.18.0': - dependencies: - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/generators@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/svelte@10.16.4': - dependencies: - '@motionone/dom': 10.18.0 - tslib: 2.8.1 - - '@motionone/types@10.17.1': {} - - '@motionone/utils@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@motionone/vue@10.16.4': - dependencies: - '@motionone/dom': 10.18.0 - tslib: 2.8.1 - - '@mozilla/readability@0.5.0': {} - - '@msgpack/msgpack@2.8.0': {} - - '@msgpack/msgpack@3.0.0-beta2': {} - - '@multiversx/sdk-bls-wasm@0.3.5': - optional: true - - '@multiversx/sdk-core@13.15.0(bignumber.js@9.1.2)(protobufjs@7.4.0)': - dependencies: - '@multiversx/sdk-transaction-decoder': 1.0.2 - '@noble/ed25519': 1.7.3 - '@noble/hashes': 1.3.0 - bech32: 1.1.4 - bignumber.js: 9.1.2 - blake2b: 2.1.3 - buffer: 6.0.3 - ed25519-hd-key: 1.1.2 - ed2curve: 0.3.0 - json-bigint: 1.0.0 - keccak: 3.0.2 - protobufjs: 7.4.0 - scryptsy: 2.1.0 - tweetnacl: 1.0.3 - uuid: 8.3.2 - optionalDependencies: - '@multiversx/sdk-bls-wasm': 0.3.5 - axios: 1.7.9(debug@4.4.0) - bip39: 3.1.0 - transitivePeerDependencies: - - debug - - '@multiversx/sdk-transaction-decoder@1.0.2': - dependencies: - bech32: 2.0.0 - - '@mysten/bcs@1.2.1': - dependencies: - bs58: 6.0.0 - - '@mysten/sui@1.19.0(typescript@5.7.3)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - '@mysten/bcs': 1.2.1 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/bip32': 1.6.1 - '@scure/bip39': 1.5.1 - '@simplewebauthn/typescript-types': 7.4.0 - '@suchipi/femver': 1.0.0 - bech32: 2.0.0 - gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) - graphql: 16.10.0 - jose: 5.9.6 - poseidon-lite: 0.2.1 - valibot: 0.36.0 - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - typescript - - '@napi-rs/wasm-runtime@0.2.4': - dependencies: - '@emnapi/core': 1.3.1 - '@emnapi/runtime': 1.3.1 - '@tybys/wasm-util': 0.9.0 - - '@near-js/accounts@1.3.1(encoding@0.1.13)': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/providers': 1.0.1(encoding@0.1.13) - '@near-js/signers': 0.2.1 - '@near-js/transactions': 1.3.1 - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - '@noble/hashes': 1.3.3 - borsh: 1.0.0 - depd: 2.0.0 - is-my-json-valid: 2.20.6 - isomorphic-unfetch: 3.1.0(encoding@0.1.13) - lru_map: 0.4.1 - near-abi: 0.1.1 - transitivePeerDependencies: - - encoding - - '@near-js/crypto@0.0.3': - dependencies: - '@near-js/types': 0.0.3 - bn.js: 5.2.1 - borsh: 0.7.0 - tweetnacl: 1.0.3 - - '@near-js/crypto@0.0.4': - dependencies: - '@near-js/types': 0.0.4 - bn.js: 5.2.1 - borsh: 0.7.0 - tweetnacl: 1.0.3 - - '@near-js/crypto@1.4.1': - dependencies: - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - '@noble/curves': 1.2.0 - borsh: 1.0.0 - randombytes: 2.1.0 - secp256k1: 5.0.0 - - '@near-js/keystores-browser@0.0.3': - dependencies: - '@near-js/crypto': 0.0.3 - '@near-js/keystores': 0.0.3 - - '@near-js/keystores-browser@0.2.1': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/keystores': 0.2.1 - - '@near-js/keystores-node@0.1.1': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/keystores': 0.2.1 - - '@near-js/keystores@0.0.3': - dependencies: - '@near-js/crypto': 0.0.3 - '@near-js/types': 0.0.3 - - '@near-js/keystores@0.0.4': - dependencies: - '@near-js/crypto': 0.0.4 - '@near-js/types': 0.0.4 - - '@near-js/keystores@0.2.1': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/types': 0.3.1 - - '@near-js/providers@0.0.4(encoding@0.1.13)': - dependencies: - '@near-js/transactions': 0.1.0 - '@near-js/types': 0.0.3 - '@near-js/utils': 0.0.3 - bn.js: 5.2.1 - borsh: 0.7.0 - http-errors: 1.8.1 - optionalDependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@near-js/providers@1.0.1(encoding@0.1.13)': - dependencies: - '@near-js/transactions': 1.3.1 - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - borsh: 1.0.0 - exponential-backoff: 3.1.1 - isomorphic-unfetch: 3.1.0(encoding@0.1.13) - optionalDependencies: - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@near-js/signers@0.0.3': - dependencies: - '@near-js/crypto': 0.0.3 - '@near-js/keystores': 0.0.3 - js-sha256: 0.9.0 - - '@near-js/signers@0.0.4': - dependencies: - '@near-js/crypto': 0.0.4 - '@near-js/keystores': 0.0.4 - js-sha256: 0.9.0 - - '@near-js/signers@0.2.1': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/keystores': 0.2.1 - '@noble/hashes': 1.3.3 - - '@near-js/transactions@0.1.0': - dependencies: - '@near-js/crypto': 0.0.3 - '@near-js/signers': 0.0.3 - '@near-js/types': 0.0.3 - '@near-js/utils': 0.0.3 - bn.js: 5.2.1 - borsh: 0.7.0 - js-sha256: 0.9.0 - - '@near-js/transactions@0.1.1': - dependencies: - '@near-js/crypto': 0.0.4 - '@near-js/signers': 0.0.4 - '@near-js/types': 0.0.4 - '@near-js/utils': 0.0.4 - bn.js: 5.2.1 - borsh: 0.7.0 - js-sha256: 0.9.0 - - '@near-js/transactions@1.3.1': - dependencies: - '@near-js/crypto': 1.4.1 - '@near-js/signers': 0.2.1 - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - '@noble/hashes': 1.3.3 - borsh: 1.0.0 - - '@near-js/types@0.0.3': - dependencies: - bn.js: 5.2.1 - - '@near-js/types@0.0.4': - dependencies: - bn.js: 5.2.1 - - '@near-js/types@0.3.1': {} - - '@near-js/utils@0.0.3': - dependencies: - '@near-js/types': 0.0.3 - bn.js: 5.2.1 - depd: 2.0.0 - mustache: 4.2.0 - - '@near-js/utils@0.0.4': - dependencies: - '@near-js/types': 0.0.4 - bn.js: 5.2.1 - depd: 2.0.0 - mustache: 4.2.0 - - '@near-js/utils@1.0.1': - dependencies: - '@near-js/types': 0.3.1 - bs58: 4.0.0 - depd: 2.0.0 - mustache: 4.0.0 - - '@near-js/wallet-account@1.3.1(encoding@0.1.13)': - dependencies: - '@near-js/accounts': 1.3.1(encoding@0.1.13) - '@near-js/crypto': 1.4.1 - '@near-js/keystores': 0.2.1 - '@near-js/providers': 1.0.1(encoding@0.1.13) - '@near-js/signers': 0.2.1 - '@near-js/transactions': 1.3.1 - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - borsh: 1.0.0 - transitivePeerDependencies: - - encoding - - '@near-wallet-selector/core@7.9.3(near-api-js@0.44.2(encoding@0.1.13))': - dependencies: - near-api-js: 0.44.2(encoding@0.1.13) - rxjs: 7.8.1 - - '@nestjs/axios@3.1.1(@nestjs/common@10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1)': - dependencies: - '@nestjs/common': 10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - axios: 1.7.7 - rxjs: 7.8.1 - - '@nestjs/common@10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1)': - dependencies: - iterare: 1.2.1 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.7.0 - uid: 2.0.2 - optionalDependencies: - class-transformer: 0.5.1 - - '@nestjs/core@10.4.6(@nestjs/common@10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1))(encoding@0.1.13)(reflect-metadata@0.1.13)(rxjs@7.8.1)': - dependencies: - '@nestjs/common': 10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nuxtjs/opencollective': 0.3.2(encoding@0.1.13) - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 3.3.0 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.7.0 - uid: 2.0.2 - transitivePeerDependencies: - - encoding - - '@neynar/nodejs-sdk@2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1)': - dependencies: - '@openapitools/openapi-generator-cli': 2.15.3(class-transformer@0.5.1)(encoding@0.1.13) - semver: 7.6.3 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - transitivePeerDependencies: - - '@nestjs/microservices' - - '@nestjs/platform-express' - - '@nestjs/websockets' - - bufferutil - - class-transformer - - class-validator - - debug - - encoding - - supports-color - - typescript - - utf-8-validate - - zod - - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - - '@noble/curves@1.3.0': - dependencies: - '@noble/hashes': 1.3.3 - - '@noble/curves@1.4.2': - dependencies: - '@noble/hashes': 1.4.0 - - '@noble/curves@1.7.0': - dependencies: - '@noble/hashes': 1.6.0 - - '@noble/curves@1.8.0': - dependencies: - '@noble/hashes': 1.7.0 - - '@noble/ed25519@1.7.3': {} - - '@noble/hashes@1.3.0': {} - - '@noble/hashes@1.3.2': {} - - '@noble/hashes@1.3.3': {} - - '@noble/hashes@1.4.0': {} - - '@noble/hashes@1.5.0': {} - - '@noble/hashes@1.6.0': {} - - '@noble/hashes@1.6.1': {} - - '@noble/hashes@1.7.0': {} - - '@node-llama-cpp/linux-arm64@3.1.1': - optional: true - - '@node-llama-cpp/linux-armv7l@3.1.1': - optional: true - - '@node-llama-cpp/linux-x64-cuda@3.1.1': - optional: true - - '@node-llama-cpp/linux-x64-vulkan@3.1.1': - optional: true - - '@node-llama-cpp/linux-x64@3.1.1': - optional: true - - '@node-llama-cpp/mac-arm64-metal@3.1.1': - optional: true - - '@node-llama-cpp/mac-x64@3.1.1': - optional: true - - '@node-llama-cpp/win-arm64@3.1.1': - optional: true - - '@node-llama-cpp/win-x64-cuda@3.1.1': - optional: true - - '@node-llama-cpp/win-x64-vulkan@3.1.1': - optional: true - - '@node-llama-cpp/win-x64@3.1.1': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 - - '@nolyfill/is-core-module@1.0.39': {} - - '@npmcli/agent@2.2.2': - dependencies: - agent-base: 7.1.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - '@npmcli/arborist@7.5.3': - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/fs': 3.1.1 - '@npmcli/installed-package-contents': 2.1.0 - '@npmcli/map-workspaces': 3.0.6 - '@npmcli/metavuln-calculator': 7.1.1 - '@npmcli/name-from-folder': 2.0.0 - '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.2.0 - '@npmcli/query': 3.1.0 - '@npmcli/redact': 2.0.1 - '@npmcli/run-script': 8.1.0 - bin-links: 4.0.4 - cacache: 18.0.4 - common-ancestor-path: 1.0.1 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - json-stringify-nice: 1.1.4 - lru-cache: 10.4.3 - minimatch: 9.0.5 - nopt: 7.2.1 - npm-install-checks: 6.3.0 - npm-package-arg: 11.0.2 - npm-pick-manifest: 9.1.0 - npm-registry-fetch: 17.1.0 - pacote: 18.0.6 - parse-conflict-json: 3.0.1 - proc-log: 4.2.0 - proggy: 2.0.0 - promise-all-reject-late: 1.0.1 - promise-call-limit: 3.0.2 - read-package-json-fast: 3.0.2 - semver: 7.6.3 - ssri: 10.0.6 - treeverse: 3.0.0 - walk-up-path: 3.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/fs@3.1.1': - dependencies: - semver: 7.6.3 - - '@npmcli/git@5.0.8': - dependencies: - '@npmcli/promise-spawn': 7.0.2 - ini: 4.1.3 - lru-cache: 10.4.3 - npm-pick-manifest: 9.1.0 - proc-log: 4.2.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.3 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - '@npmcli/installed-package-contents@2.1.0': - dependencies: - npm-bundled: 3.0.1 - npm-normalize-package-bin: 3.0.1 - - '@npmcli/map-workspaces@3.0.6': - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 10.4.5 - minimatch: 9.0.5 - read-package-json-fast: 3.0.2 - - '@npmcli/metavuln-calculator@7.1.1': - dependencies: - cacache: 18.0.4 - json-parse-even-better-errors: 3.0.2 - pacote: 18.0.6 - proc-log: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/name-from-folder@2.0.0': {} - - '@npmcli/node-gyp@3.0.0': {} - - '@npmcli/package-json@5.2.0': - dependencies: - '@npmcli/git': 5.0.8 - glob: 10.4.5 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - normalize-package-data: 6.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - bluebird - - '@npmcli/promise-spawn@7.0.2': - dependencies: - which: 4.0.0 - - '@npmcli/query@3.1.0': - dependencies: - postcss-selector-parser: 6.1.2 - - '@npmcli/redact@2.0.1': {} - - '@npmcli/run-script@8.1.0': - dependencies: - '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.2.0 - '@npmcli/promise-spawn': 7.0.2 - node-gyp: 10.3.1 - proc-log: 4.2.0 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@nrwl/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)))': - dependencies: - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) - transitivePeerDependencies: - - nx - - '@nrwl/tao@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))': - dependencies: - nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) - tslib: 2.8.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nuxtjs/opencollective@0.3.2(encoding@0.1.13)': - dependencies: - chalk: 4.1.2 - consola: 2.15.3 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@nx/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)))': - dependencies: - '@nrwl/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) - ejs: 3.1.10 - enquirer: 2.3.6 - ignore: 5.3.2 - minimatch: 9.0.3 - nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) - semver: 7.6.3 - tmp: 0.2.3 - tslib: 2.8.1 - yargs-parser: 21.1.1 - - '@nx/nx-darwin-arm64@19.8.14': - optional: true - - '@nx/nx-darwin-x64@19.8.14': - optional: true - - '@nx/nx-freebsd-x64@19.8.14': - optional: true - - '@nx/nx-linux-arm-gnueabihf@19.8.14': - optional: true - - '@nx/nx-linux-arm64-gnu@19.8.14': - optional: true - - '@nx/nx-linux-arm64-musl@19.8.14': - optional: true - - '@nx/nx-linux-x64-gnu@19.8.14': - optional: true - - '@nx/nx-linux-x64-musl@19.8.14': - optional: true - - '@nx/nx-win32-arm64-msvc@19.8.14': - optional: true - - '@nx/nx-win32-x64-msvc@19.8.14': - optional: true - - '@octokit/app@15.1.2': - dependencies: - '@octokit/auth-app': 7.1.4 - '@octokit/auth-unauthenticated': 6.1.1 - '@octokit/core': 6.1.3 - '@octokit/oauth-app': 7.1.5 - '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) - '@octokit/types': 13.7.0 - '@octokit/webhooks': 13.4.2 - - '@octokit/auth-app@7.1.4': - dependencies: - '@octokit/auth-oauth-app': 8.1.2 - '@octokit/auth-oauth-user': 5.1.2 - '@octokit/request': 9.1.4 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - toad-cache: 3.7.0 - universal-github-app-jwt: 2.2.0 - universal-user-agent: 7.0.2 - - '@octokit/auth-oauth-app@8.1.2': - dependencies: - '@octokit/auth-oauth-device': 7.1.2 - '@octokit/auth-oauth-user': 5.1.2 - '@octokit/request': 9.1.4 - '@octokit/types': 13.7.0 - universal-user-agent: 7.0.2 - - '@octokit/auth-oauth-device@7.1.2': - dependencies: - '@octokit/oauth-methods': 5.1.3 - '@octokit/request': 9.1.4 - '@octokit/types': 13.7.0 - universal-user-agent: 7.0.2 - - '@octokit/auth-oauth-user@5.1.2': - dependencies: - '@octokit/auth-oauth-device': 7.1.2 - '@octokit/oauth-methods': 5.1.3 - '@octokit/request': 9.1.4 - '@octokit/types': 13.7.0 - universal-user-agent: 7.0.2 - - '@octokit/auth-token@3.0.4': {} - - '@octokit/auth-token@4.0.0': {} - - '@octokit/auth-token@5.1.1': {} - - '@octokit/auth-unauthenticated@6.1.1': - dependencies: - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - - '@octokit/core@4.2.4(encoding@0.1.13)': - dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6(encoding@0.1.13) - '@octokit/request': 6.2.8(encoding@0.1.13) - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/core@5.2.0': - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.1.0 - '@octokit/request': 8.4.0 - '@octokit/request-error': 5.1.0 - '@octokit/types': 13.7.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - - '@octokit/core@6.1.3': - dependencies: - '@octokit/auth-token': 5.1.1 - '@octokit/graphql': 8.1.2 - '@octokit/request': 9.1.4 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - before-after-hook: 3.0.2 - universal-user-agent: 7.0.2 - - '@octokit/endpoint@10.1.2': - dependencies: - '@octokit/types': 13.7.0 - universal-user-agent: 7.0.2 - - '@octokit/endpoint@7.0.6': - dependencies: - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - - '@octokit/endpoint@9.0.5': - dependencies: - '@octokit/types': 13.7.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@5.0.6(encoding@0.1.13)': - dependencies: - '@octokit/request': 6.2.8(encoding@0.1.13) - '@octokit/types': 9.3.2 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/graphql@7.1.0': - dependencies: - '@octokit/request': 8.4.0 - '@octokit/types': 13.7.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@8.1.2': - dependencies: - '@octokit/request': 9.1.4 - '@octokit/types': 13.7.0 - universal-user-agent: 7.0.2 - - '@octokit/oauth-app@7.1.5': - dependencies: - '@octokit/auth-oauth-app': 8.1.2 - '@octokit/auth-oauth-user': 5.1.2 - '@octokit/auth-unauthenticated': 6.1.1 - '@octokit/core': 6.1.3 - '@octokit/oauth-authorization-url': 7.1.1 - '@octokit/oauth-methods': 5.1.3 - '@types/aws-lambda': 8.10.147 - universal-user-agent: 7.0.2 - - '@octokit/oauth-authorization-url@7.1.1': {} - - '@octokit/oauth-methods@5.1.3': - dependencies: - '@octokit/oauth-authorization-url': 7.1.1 - '@octokit/request': 9.1.4 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - - '@octokit/openapi-types@18.1.1': {} - - '@octokit/openapi-types@20.0.0': {} - - '@octokit/openapi-types@23.0.1': {} - - '@octokit/openapi-webhooks-types@8.5.1': {} - - '@octokit/plugin-enterprise-rest@6.0.1': {} - - '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.3)': - dependencies: - '@octokit/core': 6.1.3 - - '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)': - dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 13.7.0 - - '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': - dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 - - '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/tsconfig': 1.0.2 - '@octokit/types': 9.3.2 - - '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4(encoding@0.1.13))': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': - dependencies: - '@octokit/core': 5.2.0 - - '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)': - dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 13.7.0 - - '@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3)': - dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 - - '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/types': 10.0.0 - - '@octokit/plugin-retry@7.1.3(@octokit/core@6.1.3)': - dependencies: - '@octokit/core': 6.1.3 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - bottleneck: 2.19.5 - - '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.3)': - dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 - bottleneck: 2.19.5 - - '@octokit/request-error@3.0.3': - dependencies: - '@octokit/types': 9.3.2 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request-error@5.1.0': - dependencies: - '@octokit/types': 13.7.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request-error@6.1.6': - dependencies: - '@octokit/types': 13.7.0 - - '@octokit/request@6.2.8(encoding@0.1.13)': - dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/request@8.4.0': - dependencies: - '@octokit/endpoint': 9.0.5 - '@octokit/request-error': 5.1.0 - '@octokit/types': 13.7.0 - universal-user-agent: 6.0.1 - - '@octokit/request@9.1.4': - dependencies: - '@octokit/endpoint': 10.1.2 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - fast-content-type-parse: 2.0.1 - universal-user-agent: 7.0.2 - - '@octokit/rest@19.0.11(encoding@0.1.13)': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/rest@20.1.1': - dependencies: - '@octokit/core': 5.2.0 - '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@5.2.0) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) - '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0) - - '@octokit/tsconfig@1.0.2': {} - - '@octokit/types@10.0.0': - dependencies: - '@octokit/openapi-types': 18.1.1 - - '@octokit/types@12.6.0': - dependencies: - '@octokit/openapi-types': 20.0.0 - - '@octokit/types@13.7.0': - dependencies: - '@octokit/openapi-types': 23.0.1 - - '@octokit/types@9.3.2': - dependencies: - '@octokit/openapi-types': 18.1.1 - - '@octokit/webhooks-methods@5.1.0': {} - - '@octokit/webhooks@13.4.2': - dependencies: - '@octokit/openapi-webhooks-types': 8.5.1 - '@octokit/request-error': 6.1.6 - '@octokit/webhooks-methods': 5.1.0 - - '@onflow/config@1.5.1': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/util-actor': 1.3.4 - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - eslint: 8.57.1 - eslint-plugin-jsdoc: 46.10.1(eslint@8.57.1) - transitivePeerDependencies: - - '@onflow/util-config' - - supports-color - - '@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.4) - '@onflow/config': 1.5.1 - '@onflow/interaction': 0.0.11 - '@onflow/rlp': 1.2.3 - '@onflow/sdk': 1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@onflow/transport-http': 1.10.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@onflow/types': 1.4.1 - '@onflow/util-actor': 1.3.4 - '@onflow/util-address': 1.2.3 - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - '@onflow/util-semver': 1.0.3 - '@onflow/util-template': 1.2.3 - '@onflow/util-uid': 1.2.3 - abort-controller: 3.0.0 - cross-fetch: 4.1.0(encoding@0.1.13) - transitivePeerDependencies: - - '@onflow/util-config' - - bufferutil - - encoding - - google-protobuf - - supports-color - - utf-8-validate - - '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.7)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/config': 1.5.1 - '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5) - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) - '@walletconnect/sign-client': 2.17.4(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@6.0.5) - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2) - preact: 10.25.4 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@onflow/util-config' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - jiti - - postcss - - react - - supports-color - - ts-node - - tsx - - uploadthing - - utf-8-validate - - '@onflow/fcl@1.13.1(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/config': 1.5.1 - '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5) - '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.7)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) - '@onflow/interaction': 0.0.11 - '@onflow/rlp': 1.2.3 - '@onflow/sdk': 1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@onflow/types': 1.4.1 - '@onflow/util-actor': 1.3.4 - '@onflow/util-address': 1.2.3 - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - '@onflow/util-rpc': 0.0.2 - '@onflow/util-semver': 1.0.3 - '@onflow/util-template': 1.2.3 - '@onflow/util-uid': 1.2.3 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - abort-controller: 3.0.0 - cross-fetch: 4.1.0(encoding@0.1.13) - events: 3.3.0 - sha3: 2.1.4 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@onflow/util-config' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - google-protobuf - - ioredis - - jiti - - postcss - - react - - supports-color - - ts-node - - tsx - - uploadthing - - utf-8-validate - - '@onflow/interaction@0.0.11': {} - - '@onflow/rlp@1.2.3': - dependencies: - '@babel/runtime': 7.26.0 - buffer: 6.0.3 - - '@onflow/sdk@1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/config': 1.5.1 - '@onflow/rlp': 1.2.3 - '@onflow/transport-http': 1.10.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@onflow/typedefs': 1.4.0 - '@onflow/util-actor': 1.3.4 - '@onflow/util-address': 1.2.3 - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - '@onflow/util-template': 1.2.3 - deepmerge: 4.3.1 - events: 3.3.0 - sha3: 2.1.4 - uuid: 9.0.1 - transitivePeerDependencies: - - '@onflow/util-config' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@onflow/transport-http@1.10.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/util-address': 1.2.3 - '@onflow/util-invariant': 1.2.4 - '@onflow/util-logger': 1.3.3 - '@onflow/util-template': 1.2.3 - abort-controller: 3.0.0 - cross-fetch: 4.1.0(encoding@0.1.13) - events: 3.3.0 - isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - '@onflow/util-config' - - bufferutil - - encoding - - utf-8-validate - - '@onflow/typedefs@1.4.0': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/types@1.4.1': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/util-logger': 1.3.3 - transitivePeerDependencies: - - '@onflow/util-config' - - '@onflow/util-actor@1.3.4': - dependencies: - '@babel/runtime': 7.26.0 - queue-microtask: 1.2.3 - - '@onflow/util-address@1.2.3': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/util-invariant@1.2.4': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/util-logger@1.3.3': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/util-rpc@0.0.2': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/util-semver@1.0.3': - dependencies: - '@babel/runtime': 7.26.0 - - '@onflow/util-template@1.2.3': - dependencies: - '@babel/runtime': 7.26.0 - '@onflow/util-logger': 1.3.3 - transitivePeerDependencies: - - '@onflow/util-config' - - '@onflow/util-uid@1.2.3': - dependencies: - '@babel/runtime': 7.26.0 - - '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/sha2': 5.7.0 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 2.0.0 - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@openapitools/openapi-generator-cli@2.15.3(class-transformer@0.5.1)(encoding@0.1.13)': - dependencies: - '@nestjs/axios': 3.1.1(@nestjs/common@10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1) - '@nestjs/common': 10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.4.6(@nestjs/common@10.4.6(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.8.1))(encoding@0.1.13)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nuxtjs/opencollective': 0.3.2(encoding@0.1.13) - axios: 1.7.7 - chalk: 4.1.2 - commander: 8.3.0 - compare-versions: 4.1.4 - concurrently: 6.5.1 - console.table: 0.10.0 - fs-extra: 10.1.0 - glob: 9.3.5 - inquirer: 8.2.6 - lodash: 4.17.21 - proxy-agent: 6.4.0 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@nestjs/microservices' - - '@nestjs/platform-express' - - '@nestjs/websockets' - - class-transformer - - class-validator - - debug - - encoding - - supports-color - - '@opendocsg/pdf2md@0.1.32(encoding@0.1.13)': - dependencies: - enumify: 1.0.4 - minimist: 1.2.8 - pdfjs-dist: 4.7.76(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - '@opentelemetry/api@1.9.0': {} - - '@openzeppelin/contracts@5.2.0': {} - - '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - decimal.js: 10.4.3 - tiny-invariant: 1.3.3 - - '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - decimal.js: 10.4.3 - tiny-invariant: 1.3.3 - - '@parcel/watcher-android-arm64@2.5.0': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.0': - optional: true - - '@parcel/watcher-darwin-x64@2.5.0': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.0': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.0': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.5.0': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-x64-musl@2.5.0': - optional: true - - '@parcel/watcher-win32-arm64@2.5.0': - optional: true - - '@parcel/watcher-win32-ia32@2.5.0': - optional: true - - '@parcel/watcher-win32-x64@2.5.0': - optional: true - - '@parcel/watcher@2.5.0': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.0 - '@parcel/watcher-darwin-arm64': 2.5.0 - '@parcel/watcher-darwin-x64': 2.5.0 - '@parcel/watcher-freebsd-x64': 2.5.0 - '@parcel/watcher-linux-arm-glibc': 2.5.0 - '@parcel/watcher-linux-arm-musl': 2.5.0 - '@parcel/watcher-linux-arm64-glibc': 2.5.0 - '@parcel/watcher-linux-arm64-musl': 2.5.0 - '@parcel/watcher-linux-x64-glibc': 2.5.0 - '@parcel/watcher-linux-x64-musl': 2.5.0 - '@parcel/watcher-win32-arm64': 2.5.0 - '@parcel/watcher-win32-ia32': 2.5.0 - '@parcel/watcher-win32-x64': 2.5.0 - - '@passwordless-id/webauthn@2.1.2': {} - - '@peculiar/asn1-schema@2.3.15': - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.6 - tslib: 2.8.1 - - '@peculiar/json-schema@1.1.12': - dependencies: - tslib: 2.8.1 - - '@peculiar/webcrypto@1.5.0': - dependencies: - '@peculiar/asn1-schema': 2.3.15 - '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.3.6 - tslib: 2.8.1 - webcrypto-core: 1.8.1 - - '@phala/dstack-sdk@0.1.7(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': - optionalDependencies: - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - '@pinata/sdk@2.1.0': - dependencies: - axios: 0.21.4 - form-data: 2.5.2 - is-ipfs: 0.6.3 - path: 0.12.7 - transitivePeerDependencies: - - debug - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pm2/agent@2.0.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - async: 3.2.6 - chalk: 3.0.0 - dayjs: 1.8.36 - debug: 4.3.7 - eventemitter2: 5.0.1 - fast-json-patch: 3.1.1 - fclone: 1.0.11 - nssocket: 0.6.0 - pm2-axon: 4.0.1 - pm2-axon-rpc: 0.7.1 - proxy-agent: 6.3.1 - semver: 7.5.4 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@pm2/io@6.0.1': - dependencies: - async: 2.6.4 - debug: 4.3.7 - eventemitter2: 6.4.9 - require-in-the-middle: 5.2.0 - semver: 7.5.4 - shimmer: 1.2.1 - signal-exit: 3.0.7 - tslib: 1.9.3 - transitivePeerDependencies: - - supports-color - - '@pm2/js-api@0.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - async: 2.6.4 - debug: 4.3.7 - eventemitter2: 6.4.9 - extrareqp2: 1.0.0(debug@4.3.7) - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@pm2/pm2-version-check@1.0.4': - dependencies: - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@pnpm/config.env-replace@1.1.0': {} - - '@pnpm/network.ca-file@1.0.2': - dependencies: - graceful-fs: 4.2.10 - - '@pnpm/npm-conf@2.3.1': - dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 - - '@polka/url@1.0.0-next.28': {} - - '@polkadot-api/client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0(rxjs@7.8.1)': - dependencies: - '@polkadot-api/metadata-builders': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/substrate-bindings': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/substrate-client': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - rxjs: 7.8.1 - optional: true - - '@polkadot-api/json-rpc-provider-proxy@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - optional: true - - '@polkadot-api/json-rpc-provider@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - optional: true - - '@polkadot-api/metadata-builders@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - dependencies: - '@polkadot-api/substrate-bindings': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - optional: true - - '@polkadot-api/substrate-bindings@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - dependencies: - '@noble/hashes': 1.7.0 - '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@scure/base': 1.2.1 - scale-ts: 1.6.1 - optional: true - - '@polkadot-api/substrate-client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - optional: true - - '@polkadot-api/utils@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0': - optional: true - - '@polkadot/api-augment@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/api-base': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/rpc-augment': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/types-augment': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/api-base@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/rpc-core': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/util': 12.6.2 - rxjs: 7.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/api-derive@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/api': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/api-augment': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/api-base': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/rpc-core': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - rxjs: 7.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/api@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/api-augment': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/api-base': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/api-derive': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2))(@polkadot/util@12.6.2) - '@polkadot/rpc-augment': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/rpc-core': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/rpc-provider': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/types-augment': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/types-create': 10.13.1 - '@polkadot/types-known': 10.13.1 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - eventemitter3: 5.0.1 - rxjs: 7.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/keyring@12.6.2(@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2))(@polkadot/util@12.6.2)': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - tslib: 2.8.1 - - '@polkadot/networks@12.6.2': - dependencies: - '@polkadot/util': 12.6.2 - '@substrate/ss58-registry': 1.51.0 - tslib: 2.8.1 - - '@polkadot/rpc-augment@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/rpc-core': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/rpc-core@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/rpc-augment': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/rpc-provider': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@polkadot/types': 10.13.1 - '@polkadot/util': 12.6.2 - rxjs: 7.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/rpc-provider@10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2))(@polkadot/util@12.6.2) - '@polkadot/types': 10.13.1 - '@polkadot/types-support': 10.13.1 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - '@polkadot/x-fetch': 12.6.2 - '@polkadot/x-global': 12.6.2 - '@polkadot/x-ws': 12.6.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - eventemitter3: 5.0.1 - mock-socket: 9.3.1 - nock: 13.5.6 - tslib: 2.8.1 - optionalDependencies: - '@substrate/connect': 0.8.8(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@polkadot/types-augment@10.13.1': - dependencies: - '@polkadot/types': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/types-codec@10.13.1': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/x-bigint': 12.6.2 - tslib: 2.8.1 - - '@polkadot/types-create@10.13.1': - dependencies: - '@polkadot/types-codec': 10.13.1 - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/types-known@10.13.1': - dependencies: - '@polkadot/networks': 12.6.2 - '@polkadot/types': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/types-create': 10.13.1 - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/types-support@10.13.1': - dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/types@10.13.1': - dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2))(@polkadot/util@12.6.2) - '@polkadot/types-augment': 10.13.1 - '@polkadot/types-codec': 10.13.1 - '@polkadot/types-create': 10.13.1 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - rxjs: 7.8.1 - tslib: 2.8.1 - - '@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2)': - dependencies: - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@polkadot/networks': 12.6.2 - '@polkadot/util': 12.6.2 - '@polkadot/wasm-crypto': 7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2))) - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/x-bigint': 12.6.2 - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)) - '@scure/base': 1.2.1 - tslib: 2.8.1 - - '@polkadot/util@12.6.2': - dependencies: - '@polkadot/x-bigint': 12.6.2 - '@polkadot/x-global': 12.6.2 - '@polkadot/x-textdecoder': 12.6.2 - '@polkadot/x-textencoder': 12.6.2 - '@types/bn.js': 5.1.6 - bn.js: 5.2.1 - tslib: 2.8.1 - - '@polkadot/wasm-bridge@7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)))': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)) - tslib: 2.8.1 - - '@polkadot/wasm-crypto-asmjs@7.4.1(@polkadot/util@12.6.2)': - dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/wasm-crypto-init@7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)))': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-bridge': 7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-asmjs': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/wasm-crypto-wasm': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)) - tslib: 2.8.1 - - '@polkadot/wasm-crypto-wasm@7.4.1(@polkadot/util@12.6.2)': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - tslib: 2.8.1 - - '@polkadot/wasm-crypto@7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)))': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-bridge': 7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-asmjs': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/wasm-crypto-init': 7.4.1(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-wasm': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)) - tslib: 2.8.1 - - '@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2)': - dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.8.1 - - '@polkadot/x-bigint@12.6.2': - dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.8.1 - - '@polkadot/x-fetch@12.6.2': - dependencies: - '@polkadot/x-global': 12.6.2 - node-fetch: 3.3.2 - tslib: 2.8.1 - - '@polkadot/x-global@12.6.2': - dependencies: - tslib: 2.8.1 - - '@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.4.1(@polkadot/util@12.6.2))': - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.4.1(@polkadot/util@12.6.2) - '@polkadot/x-global': 12.6.2 - tslib: 2.8.1 - - '@polkadot/x-textdecoder@12.6.2': - dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.8.1 - - '@polkadot/x-textencoder@12.6.2': - dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.8.1 - - '@polkadot/x-ws@12.6.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.8.1 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@primuslabs/zktls-core-sdk@0.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - uuid: 11.0.5 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@project-serum/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@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': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 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': {} - - '@puppeteer/browsers@0.5.0(typescript@5.7.3)': - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - proxy-from-env: 1.1.0 - tar-fs: 2.1.1 - unbzip2-stream: 1.4.3 - yargs: 17.7.1 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@pythnetwork/client@2.22.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@pythnetwork/hermes-client@1.3.0(axios@1.7.9)': - dependencies: - '@zodios/core': 10.9.6(axios@1.7.9)(zod@3.23.8) - eventsource: 2.0.2 - zod: 3.23.8 - transitivePeerDependencies: - - axios - - '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@pythnetwork/price-service-sdk': 1.8.0 - '@types/ws': 8.5.13 - axios: 1.7.9(debug@4.4.0) - axios-retry: 3.9.1 - isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ts-log: 2.2.7 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@pythnetwork/price-service-sdk@1.8.0': - dependencies: - bn.js: 5.2.1 - - '@radix-ui/primitive@1.1.1': {} - - '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-avatar@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-collapsible@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-context@1.1.1(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - aria-hidden: 1.2.4 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.7)(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-direction@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-dismissable-layer@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-icons@1.3.2(react@19.0.0)': - dependencies: - react: 19.0.0 - - '@radix-ui/react-id@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-label@2.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/rect': 1.1.0 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-separator@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-slot@1.1.1(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-toast@1.2.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-tooltip@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-tooltip@1.1.6(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-use-size@1.1.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.7 - - '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - '@types/react-dom': 19.0.3(@types/react@19.0.7) - - '@radix-ui/rect@1.1.0': {} - - '@randlabs/communication-bridge@1.0.1': - optional: true - - '@randlabs/myalgo-connect@1.4.2': - dependencies: - '@randlabs/communication-bridge': 1.0.1 - optional: true - - '@raydium-io/raydium-sdk-v2@0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - axios: 1.7.9(debug@4.4.0) - big.js: 6.2.2 - bn.js: 5.2.1 - dayjs: 1.11.13 - decimal.js-light: 2.5.1 - lodash: 4.17.21 - toformat: 2.0.0 - tsconfig-paths: 4.2.0 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - axios: 1.7.9(debug@4.4.0) - big.js: 6.2.2 - bn.js: 5.2.1 - dayjs: 1.11.13 - decimal.js-light: 2.5.1 - jsonfile: 6.1.0 - lodash: 4.17.21 - toformat: 2.0.0 - tsconfig-paths: 4.2.0 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@react-icons/all-files@4.1.0(react@19.0.0)': - dependencies: - react: 19.0.0 - - '@react-spring/animated@9.7.5(react@19.0.0)': - dependencies: - '@react-spring/shared': 9.7.5(react@19.0.0) - '@react-spring/types': 9.7.5 - react: 19.0.0 - - '@react-spring/core@9.7.5(react@19.0.0)': - dependencies: - '@react-spring/animated': 9.7.5(react@19.0.0) - '@react-spring/shared': 9.7.5(react@19.0.0) - '@react-spring/types': 9.7.5 - react: 19.0.0 - - '@react-spring/rafz@9.7.5': {} - - '@react-spring/shared@9.7.5(react@19.0.0)': - dependencies: - '@react-spring/rafz': 9.7.5 - '@react-spring/types': 9.7.5 - react: 19.0.0 - - '@react-spring/types@9.7.5': {} - - '@react-spring/web@9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-spring/animated': 9.7.5(react@19.0.0) - '@react-spring/core': 9.7.5(react@19.0.0) - '@react-spring/shared': 9.7.5(react@19.0.0) - '@react-spring/types': 9.7.5 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - '@ref-finance/ref-sdk@1.4.6(encoding@0.1.13)(react@19.0.0)': - dependencies: - '@near-wallet-selector/core': 7.9.3(near-api-js@0.44.2(encoding@0.1.13)) - '@react-icons/all-files': 4.1.0(react@19.0.0) - '@types/big.js': 6.2.2 - '@types/bn.js': 5.1.6 - '@types/lodash': 4.17.14 - big.js: 6.2.2 - bn.js: 5.2.1 - lodash: 4.17.21 - lodash-es: 4.17.21 - mathjs: 9.5.2 - near-api-js: 0.44.2(encoding@0.1.13) - react: 19.0.0 - transitivePeerDependencies: - - encoding - - '@reflink/reflink-darwin-arm64@0.1.19': - optional: true - - '@reflink/reflink-darwin-x64@0.1.19': - optional: true - - '@reflink/reflink-linux-arm64-gnu@0.1.19': - optional: true - - '@reflink/reflink-linux-arm64-musl@0.1.19': - optional: true - - '@reflink/reflink-linux-x64-gnu@0.1.19': - optional: true - - '@reflink/reflink-linux-x64-musl@0.1.19': - optional: true - - '@reflink/reflink-win32-arm64-msvc@0.1.19': - optional: true - - '@reflink/reflink-win32-x64-msvc@0.1.19': - optional: true - - '@reflink/reflink@0.1.19': - optionalDependencies: - '@reflink/reflink-darwin-arm64': 0.1.19 - '@reflink/reflink-darwin-x64': 0.1.19 - '@reflink/reflink-linux-arm64-gnu': 0.1.19 - '@reflink/reflink-linux-arm64-musl': 0.1.19 - '@reflink/reflink-linux-x64-gnu': 0.1.19 - '@reflink/reflink-linux-x64-musl': 0.1.19 - '@reflink/reflink-win32-arm64-msvc': 0.1.19 - '@reflink/reflink-win32-x64-msvc': 0.1.19 - optional: true - - '@remix-run/router@1.15.1': {} - - '@remusao/guess-url-type@1.3.0': {} - - '@remusao/small@1.3.0': {} - - '@remusao/smaz-compress@1.10.0': - dependencies: - '@remusao/trie': 1.5.0 - - '@remusao/smaz-decompress@1.10.0': {} - - '@remusao/smaz@1.10.0': - dependencies: - '@remusao/smaz-compress': 1.10.0 - '@remusao/smaz-decompress': 1.10.0 - - '@remusao/trie@1.5.0': {} - - '@roamhq/wrtc-darwin-arm64@0.8.0': - optional: true - - '@roamhq/wrtc-darwin-x64@0.8.0': - optional: true - - '@roamhq/wrtc-linux-arm64@0.8.1': - optional: true - - '@roamhq/wrtc-linux-x64@0.8.1': - optional: true - - '@roamhq/wrtc-win32-x64@0.8.0': - optional: true - - '@roamhq/wrtc@0.8.0': - optionalDependencies: - '@roamhq/wrtc-darwin-arm64': 0.8.0 - '@roamhq/wrtc-darwin-x64': 0.8.0 - '@roamhq/wrtc-linux-arm64': 0.8.1 - '@roamhq/wrtc-linux-x64': 0.8.1 - '@roamhq/wrtc-win32-x64': 0.8.0 - domexception: 4.0.0 - - '@rollup/plugin-alias@5.1.1(rollup@3.29.5)': - optionalDependencies: - rollup: 3.29.5 - - '@rollup/plugin-commonjs@25.0.8(rollup@2.79.2)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.17 - optionalDependencies: - rollup: 2.79.2 - - '@rollup/plugin-commonjs@25.0.8(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.17 - optionalDependencies: - rollup: 3.29.5 - - '@rollup/plugin-json@6.1.0(rollup@2.79.2)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - optionalDependencies: - rollup: 2.79.2 - - '@rollup/plugin-json@6.1.0(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - optionalDependencies: - rollup: 3.29.5 - - '@rollup/plugin-json@6.1.0(rollup@4.30.1)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - optionalDependencies: - rollup: 4.30.1 - - '@rollup/plugin-node-resolve@15.3.0(rollup@2.79.2)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 2.79.2 - - '@rollup/plugin-node-resolve@15.3.0(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 3.29.5 - - '@rollup/plugin-replace@5.0.7(rollup@2.79.2)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - magic-string: 0.30.17 - optionalDependencies: - rollup: 2.79.2 - - '@rollup/plugin-replace@5.0.7(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - magic-string: 0.30.17 - optionalDependencies: - rollup: 3.29.5 - - '@rollup/plugin-terser@0.1.0(rollup@2.79.2)': - dependencies: - terser: 5.37.0 - optionalDependencies: - rollup: 2.79.2 - - '@rollup/plugin-typescript@11.1.6(rollup@2.79.2)(tslib@2.8.1)(typescript@5.6.3)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - resolve: 1.22.10 - typescript: 5.6.3 - optionalDependencies: - rollup: 2.79.2 - tslib: 2.8.1 - - '@rollup/pluginutils@5.1.4(rollup@2.79.2)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 2.79.2 - - '@rollup/pluginutils@5.1.4(rollup@3.29.5)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 3.29.5 - - '@rollup/pluginutils@5.1.4(rollup@4.30.1)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.30.1 - - '@rollup/rollup-android-arm-eabi@4.30.1': - optional: true - - '@rollup/rollup-android-arm64@4.30.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.30.1': - optional: true - - '@rollup/rollup-darwin-x64@4.30.1': - optional: true - - '@rollup/rollup-freebsd-arm64@4.30.1': - optional: true - - '@rollup/rollup-freebsd-x64@4.30.1': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.30.1': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.30.1': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.30.1': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-x64-musl@4.30.1': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.30.1': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.30.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.30.1': - optional: true - - '@rtsao/scc@1.1.0': {} - - '@saberhq/option-utils@1.15.0': - dependencies: - tslib: 2.8.1 - - '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)': - dependencies: - '@saberhq/option-utils': 1.15.0 - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@types/promise-retry': 1.1.6 - '@types/retry': 0.12.5 - bn.js: 5.2.1 - promise-retry: 2.0.1 - retry: 0.13.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - - '@sapphire/async-queue@1.5.5': {} - - '@sapphire/shapeshift@4.0.0': - dependencies: - fast-deep-equal: 3.1.3 - lodash: 4.17.21 - - '@sapphire/snowflake@3.5.3': {} - - '@sapphire/snowflake@3.5.5': {} - - '@scure/base@1.1.9': {} - - '@scure/base@1.2.1': {} - - '@scure/bip32@1.4.0': - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@scure/bip32@1.6.0': - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/base': 1.2.1 - - '@scure/bip32@1.6.1': - dependencies: - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/base': 1.2.1 - - '@scure/bip39@1.3.0': - dependencies: - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.5.0': - dependencies: - '@noble/hashes': 1.6.1 - '@scure/base': 1.2.1 - - '@scure/bip39@1.5.1': - dependencies: - '@noble/hashes': 1.7.0 - '@scure/base': 1.2.1 - - '@scure/starknet@1.0.0': - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - - '@selderee/plugin-htmlparser2@0.11.0': - dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - - '@shikijs/core@1.27.2': - dependencies: - '@shikijs/engine-javascript': 1.27.2 - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/types': 1.27.2 - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/engine-javascript@1.27.2': - dependencies: - '@shikijs/types': 1.27.2 - '@shikijs/vscode-textmate': 10.0.1 - oniguruma-to-es: 2.0.0 - - '@shikijs/engine-oniguruma@1.27.2': - dependencies: - '@shikijs/types': 1.27.2 - '@shikijs/vscode-textmate': 10.0.1 - - '@shikijs/langs@1.27.2': - dependencies: - '@shikijs/types': 1.27.2 - - '@shikijs/themes@1.27.2': - dependencies: - '@shikijs/types': 1.27.2 - - '@shikijs/types@1.27.2': - dependencies: - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - - '@shikijs/vscode-textmate@10.0.1': {} - - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - - '@sigstore/bundle@2.3.2': - dependencies: - '@sigstore/protobuf-specs': 0.3.3 - - '@sigstore/core@1.1.0': {} - - '@sigstore/protobuf-specs@0.3.3': {} - - '@sigstore/sign@2.3.2': - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.3 - make-fetch-happen: 13.0.1 - proc-log: 4.2.0 - promise-retry: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@2.3.4': - dependencies: - '@sigstore/protobuf-specs': 0.3.3 - tuf-js: 2.2.1 - transitivePeerDependencies: - - supports-color - - '@sigstore/verify@1.2.1': - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.3 - - '@simplewebauthn/typescript-types@7.4.0': {} - - '@sinclair/typebox@0.27.8': {} - - '@sinclair/typebox@0.32.35': {} - - '@sindresorhus/is@4.6.0': {} - - '@sindresorhus/is@5.6.0': {} - - '@sindresorhus/merge-streams@2.3.0': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@slack/events-api@3.0.1': - dependencies: - '@types/debug': 4.1.12 - '@types/express': 4.17.21 - '@types/lodash.isstring': 4.0.9 - '@types/node': 12.20.55 - '@types/yargs': 15.0.19 - debug: 2.6.9 - lodash.isstring: 4.0.1 - raw-body: 2.5.2 - tsscmp: 1.0.6 - yargs: 15.4.1 - optionalDependencies: - express: 4.21.1 - transitivePeerDependencies: - - supports-color - - '@slack/logger@3.0.0': - dependencies: - '@types/node': 20.17.9 - - '@slack/types@2.14.0': {} - - '@slack/web-api@6.13.0': - dependencies: - '@slack/logger': 3.0.0 - '@slack/types': 2.14.0 - '@types/is-stream': 1.1.0 - '@types/node': 20.17.9 - axios: 1.7.9(debug@4.4.0) - eventemitter3: 3.1.2 - form-data: 2.5.2 - is-electron: 2.2.2 - is-stream: 1.1.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - transitivePeerDependencies: - - debug - - '@slorber/react-ideal-image@0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1)': - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-waypoint: 10.3.0(react@18.3.1) - - '@slorber/remark-comment@1.0.0': - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - - '@smithy/abort-controller@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader-native@4.0.0': - dependencies: - '@smithy/util-base64': 4.0.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader@5.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/config-resolver@4.0.1': - dependencies: - '@smithy/node-config-provider': 4.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.1 - tslib: 2.8.1 - - '@smithy/core@3.1.1': - dependencies: - '@smithy/middleware-serde': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/credential-provider-imds@4.0.1': - dependencies: - '@smithy/node-config-provider': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - tslib: 2.8.1 - - '@smithy/eventstream-codec@4.0.1': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.1.0 - '@smithy/util-hex-encoding': 4.0.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-browser@4.0.1': - dependencies: - '@smithy/eventstream-serde-universal': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-node@4.0.1': - dependencies: - '@smithy/eventstream-serde-universal': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-universal@4.0.1': - dependencies: - '@smithy/eventstream-codec': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/fetch-http-handler@5.0.1': - dependencies: - '@smithy/protocol-http': 5.0.1 - '@smithy/querystring-builder': 4.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-base64': 4.0.0 - tslib: 2.8.1 - - '@smithy/hash-blob-browser@4.0.1': - dependencies: - '@smithy/chunked-blob-reader': 5.0.0 - '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/hash-node@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/hash-stream-node@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/invalid-dependency@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/is-array-buffer@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/md5-js@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/middleware-content-length@4.0.1': - dependencies: - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/middleware-endpoint@4.0.2': - dependencies: - '@smithy/core': 3.1.1 - '@smithy/middleware-serde': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@smithy/util-middleware': 4.0.1 - tslib: 2.8.1 - - '@smithy/middleware-retry@4.0.3': - dependencies: - '@smithy/node-config-provider': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/service-error-classification': 4.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - tslib: 2.8.1 - uuid: 9.0.1 - - '@smithy/middleware-serde@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/middleware-stack@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/node-config-provider@4.0.1': - dependencies: - '@smithy/property-provider': 4.0.1 - '@smithy/shared-ini-file-loader': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/node-http-handler@4.0.2': - dependencies: - '@smithy/abort-controller': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/querystring-builder': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/property-provider@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/protocol-http@5.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/querystring-builder@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - '@smithy/util-uri-escape': 4.0.0 - tslib: 2.8.1 - - '@smithy/querystring-parser@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/service-error-classification@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - - '@smithy/shared-ini-file-loader@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/signature-v4@5.0.1': - dependencies: - '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-uri-escape': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/smithy-client@4.1.2': - dependencies: - '@smithy/core': 3.1.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-stack': 4.0.1 - '@smithy/protocol-http': 5.0.1 - '@smithy/types': 4.1.0 - '@smithy/util-stream': 4.0.2 - tslib: 2.8.1 - - '@smithy/types@4.1.0': - dependencies: - tslib: 2.8.1 - - '@smithy/url-parser@4.0.1': - dependencies: - '@smithy/querystring-parser': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/util-base64@4.0.0': - dependencies: - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-body-length-browser@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-body-length-node@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-buffer-from@4.0.0': - dependencies: - '@smithy/is-array-buffer': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-config-provider@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-defaults-mode-browser@4.0.3': - dependencies: - '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - bowser: 2.11.0 - tslib: 2.8.1 - - '@smithy/util-defaults-mode-node@4.0.3': - dependencies: - '@smithy/config-resolver': 4.0.1 - '@smithy/credential-provider-imds': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.2 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/util-endpoints@3.0.1': - dependencies: - '@smithy/node-config-provider': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/util-hex-encoding@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-middleware@4.0.1': - dependencies: - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/util-retry@4.0.1': - dependencies: - '@smithy/service-error-classification': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@smithy/util-stream@4.0.2': - dependencies: - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/node-http-handler': 4.0.2 - '@smithy/types': 4.1.0 - '@smithy/util-base64': 4.0.0 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-uri-escape@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-utf8@4.0.0': - dependencies: - '@smithy/util-buffer-from': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-waiter@4.0.2': - dependencies: - '@smithy/abort-controller': 4.0.1 - '@smithy/types': 4.1.0 - tslib: 2.8.1 - - '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 6.0.0 - dotenv: 16.4.7 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-preview.2': - dependencies: - '@solana/errors': 2.0.0-preview.2 - - '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.3)': - dependencies: - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.3)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-data-structures@2.0.0-preview.2': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/errors': 2.0.0-preview.2 - - '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-numbers@2.0.0-preview.2': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/errors': 2.0.0-preview.2 - - '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 - - '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/errors': 2.0.0-preview.2 - fastestsmallesttextencoderdecoder: 1.0.22 - - '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.3 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.3 - - '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-data-structures': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/options': 2.0.0-preview.2 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-preview.2': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - - '@solana/errors@2.0.0-preview.4(typescript@5.7.3)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 5.7.3 - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/errors@2.0.0-rc.1(typescript@5.7.3)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 5.7.3 - - '@solana/options@2.0.0-preview.2': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - - '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 0.7.0 - js-sha3: 0.8.0 - typescript-collections: 1.3.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': - dependencies: - '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer: 6.0.3 - buffer-layout: 1.2.2 - dotenv: 10.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-type-length-value@0.1.0': - dependencies: - buffer: 6.0.3 - - '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/wallet-standard-features': 1.3.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@wallet-standard/base': 1.1.0 - '@wallet-standard/features': 1.1.0 - eventemitter3: 4.0.7 - - '@solana/wallet-standard-features@1.3.0': - dependencies: - '@wallet-standard/base': 1.1.0 - '@wallet-standard/features': 1.1.0 - - '@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - 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.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - 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.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - 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.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - 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.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - 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.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@spheron/protocol-sdk@1.2.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - base64-js: 1.5.1 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - js-yaml: 4.1.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@spruceid/siwe-parser@1.1.3': - dependencies: - apg-js: 4.4.0 - - '@spruceid/siwe-parser@2.1.2': - dependencies: - '@noble/hashes': 1.7.0 - apg-js: 4.4.0 - uri-js: 4.4.1 - valid-url: 1.0.9 - - '@sqds/multisig@2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@types/bn.js': 5.1.6 - assert: 2.1.0 - bn.js: 5.2.1 - buffer: 6.0.3 - invariant: 2.2.4 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@stablelib/aead@1.0.1': {} - - '@stablelib/binary@1.0.1': - dependencies: - '@stablelib/int': 1.0.1 - - '@stablelib/bytes@1.0.1': {} - - '@stablelib/chacha20poly1305@1.0.1': - dependencies: - '@stablelib/aead': 1.0.1 - '@stablelib/binary': 1.0.1 - '@stablelib/chacha': 1.0.1 - '@stablelib/constant-time': 1.0.1 - '@stablelib/poly1305': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/chacha@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/constant-time@1.0.1': {} - - '@stablelib/ed25519@1.0.3': - dependencies: - '@stablelib/random': 1.0.2 - '@stablelib/sha512': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/hash@1.0.1': {} - - '@stablelib/hkdf@1.0.1': - dependencies: - '@stablelib/hash': 1.0.1 - '@stablelib/hmac': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/hmac@1.0.1': - dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/int@1.0.1': {} - - '@stablelib/keyagreement@1.0.1': - dependencies: - '@stablelib/bytes': 1.0.1 - - '@stablelib/poly1305@1.0.1': - dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/random@1.0.2': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/sha256@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/sha512@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/wipe@1.0.1': {} - - '@stablelib/x25519@1.0.3': - dependencies: - '@stablelib/keyagreement': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/wipe': 1.0.1 - - '@starknet-io/types-js@0.7.10': {} - - '@story-protocol/core-sdk@1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1)': - dependencies: - abitype: 0.10.3(typescript@5.7.3)(zod@3.24.1) - axios: 1.7.9(debug@4.4.0) - bs58: 6.0.0 - dotenv: 16.4.7 - multiformats: 9.9.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - transitivePeerDependencies: - - bufferutil - - debug - - typescript - - utf-8-validate - - zod - - '@substrate/connect-extension-protocol@2.2.1': - optional: true - - '@substrate/connect-known-chains@1.9.0': - optional: true - - '@substrate/connect@0.8.8(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@substrate/connect-extension-protocol': 2.2.1 - '@substrate/connect-known-chains': 1.9.0 - '@substrate/light-client-extension-helpers': 0.0.4(smoldot@2.0.22(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - smoldot: 2.0.22(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - optional: true - - '@substrate/light-client-extension-helpers@0.0.4(smoldot@2.0.22(bufferutil@4.0.9)(utf-8-validate@6.0.5))': - dependencies: - '@polkadot-api/client': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0(rxjs@7.8.1) - '@polkadot-api/json-rpc-provider': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/json-rpc-provider-proxy': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@polkadot-api/substrate-client': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - '@substrate/connect-extension-protocol': 2.2.1 - '@substrate/connect-known-chains': 1.9.0 - rxjs: 7.8.1 - smoldot: 2.0.22(bufferutil@4.0.9)(utf-8-validate@6.0.5) - optional: true - - '@substrate/ss58-registry@1.51.0': {} - - '@suchipi/femver@1.0.0': {} - - '@supabase/auth-js@2.65.1': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/functions-js@2.4.3': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/node-fetch@2.6.15': - dependencies: - whatwg-url: 5.0.0 - - '@supabase/postgrest-js@1.16.3': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/realtime-js@2.10.9(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@supabase/node-fetch': 2.6.15 - '@types/phoenix': 1.6.6 - '@types/ws': 8.5.13 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supabase/storage-js@2.7.1': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/supabase-js@2.46.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@supabase/auth-js': 2.65.1 - '@supabase/functions-js': 2.4.3 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.16.3 - '@supabase/realtime-js': 2.10.9(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@supabase/storage-js': 2.7.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supercharge/promise-pool@3.2.0': {} - - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@svgr/babel-preset@8.1.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.0) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0) - - '@svgr/core@8.1.0(typescript@5.7.3)': - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.7.3) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/hast-util-to-babel-ast@8.0.0': - dependencies: - '@babel/types': 7.26.5 - entities: 4.5.0 - - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))': - dependencies: - '@babel/core': 7.26.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) - '@svgr/core': 8.1.0(typescript@5.7.3) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3)': - dependencies: - '@svgr/core': 8.1.0(typescript@5.7.3) - cosmiconfig: 8.3.6(typescript@5.7.3) - deepmerge: 4.3.1 - svgo: 3.3.2 - transitivePeerDependencies: - - typescript - - '@svgr/webpack@8.1.0(typescript@5.7.3)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-react': 7.26.3(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@svgr/core': 8.1.0(typescript@5.7.3) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@swc/core-darwin-arm64@1.10.7': - optional: true - - '@swc/core-darwin-x64@1.10.7': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.10.7': - optional: true - - '@swc/core-linux-arm64-gnu@1.10.7': - optional: true - - '@swc/core-linux-arm64-musl@1.10.7': - optional: true - - '@swc/core-linux-x64-gnu@1.10.7': - optional: true - - '@swc/core-linux-x64-musl@1.10.7': - optional: true - - '@swc/core-win32-arm64-msvc@1.10.7': - optional: true - - '@swc/core-win32-ia32-msvc@1.10.7': - optional: true - - '@swc/core-win32-x64-msvc@1.10.7': - optional: true - - '@swc/core@1.10.7(@swc/helpers@0.5.15)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 - optionalDependencies: - '@swc/core-darwin-arm64': 1.10.7 - '@swc/core-darwin-x64': 1.10.7 - '@swc/core-linux-arm-gnueabihf': 1.10.7 - '@swc/core-linux-arm64-gnu': 1.10.7 - '@swc/core-linux-arm64-musl': 1.10.7 - '@swc/core-linux-x64-gnu': 1.10.7 - '@swc/core-linux-x64-musl': 1.10.7 - '@swc/core-win32-arm64-msvc': 1.10.7 - '@swc/core-win32-ia32-msvc': 1.10.7 - '@swc/core-win32-x64-msvc': 1.10.7 - '@swc/helpers': 0.5.15 - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 - - '@swc/types@0.1.17': - dependencies: - '@swc/counter': 0.1.3 - - '@szmarczak/http-timer@4.0.6': - dependencies: - defer-to-connect: 2.0.1 - - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 - - '@tanstack/query-core@5.62.16': {} - - '@tanstack/query-core@5.64.1': {} - - '@tanstack/react-query@5.62.16(react@19.0.0)': - dependencies: - '@tanstack/query-core': 5.62.16 - react: 19.0.0 - - '@tanstack/react-query@5.64.1(react@19.0.0)': - dependencies: - '@tanstack/query-core': 5.64.1 - react: 19.0.0 - - '@tavily/core@0.0.2': - dependencies: - axios: 1.7.9(debug@4.4.0) - js-tiktoken: 1.0.15 - transitivePeerDependencies: - - debug - - '@telegraf/types@7.1.0': {} - - '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - axios: 0.28.1 - big.js: 6.2.2 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 5.0.0 - exponential-backoff: 3.1.1 - js-sha3: 0.8.0 - semaphore: 1.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@msgpack/msgpack': 2.8.0 - '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@types/bn.js': 5.1.6 - big.js: 6.2.2 - bn.js: 5.2.1 - js-sha256: 0.9.0 - keccak256: 1.0.6 - math-expression-evaluator: 2.0.6 - merkletreejs: 0.3.11 - uuid: 8.3.2 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@tinyhttp/content-disposition@2.2.2': {} - - '@tiplink/api@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 5.0.0 - libsodium: 0.7.15 - libsodium-wrappers-sumo: 0.7.15 - nanoid: 3.3.8 - sodium-plus: 0.9.0(sodium-native@3.4.1) - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - typescript: 4.9.5 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - sodium-native - - utf-8-validate - - '@ton/core@0.59.1(@ton/crypto@3.3.0)': - dependencies: - '@ton/crypto': 3.3.0 - symbol.inspect: 1.0.1 - - '@ton/crypto-primitives@2.1.0': - dependencies: - jssha: 3.2.0 - - '@ton/crypto@3.3.0': - dependencies: - '@ton/crypto-primitives': 2.1.0 - jssha: 3.2.0 - tweetnacl: 1.0.3 - - '@ton/ton@15.1.0(@ton/core@0.59.1(@ton/crypto@3.3.0))(@ton/crypto@3.3.0)': - dependencies: - '@ton/core': 0.59.1(@ton/crypto@3.3.0) - '@ton/crypto': 3.3.0 - axios: 1.7.9(debug@4.4.0) - dataloader: 2.2.3 - symbol.inspect: 1.0.1 - teslabot: 1.5.0 - zod: 3.23.8 - transitivePeerDependencies: - - debug - - '@tootallnate/quickjs-emscripten@0.23.0': {} - - '@trysound/sax@0.2.0': {} - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@tufjs/canonical-json@2.0.0': {} - - '@tufjs/models@2.0.1': - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.5 - - '@tybys/wasm-util@0.9.0': - dependencies: - tslib: 2.8.1 - - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.6 - - '@types/aws-lambda@8.10.147': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.26.5 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.26.5 - - '@types/better-sqlite3@7.6.12': - dependencies: - '@types/node': 20.17.9 - - '@types/big.js@6.2.2': {} - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 20.17.9 - - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.17.9 - - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 20.17.9 - - '@types/cacheable-request@6.0.3': - dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 20.17.9 - '@types/responselike': 1.0.3 - - '@types/chai-subset@1.3.5': - dependencies: - '@types/chai': 4.3.20 - - '@types/chai@4.3.20': {} - - '@types/chrome@0.0.278': - dependencies: - '@types/filesystem': 0.0.36 - '@types/har-format': 1.2.16 - - '@types/connect-history-api-fallback@1.5.4': - dependencies: - '@types/express-serve-static-core': 5.0.5 - '@types/node': 20.17.9 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 20.17.9 - - '@types/cookie@0.6.0': {} - - '@types/cors@2.8.17': - dependencies: - '@types/node': 20.17.9 - - '@types/d3-array@3.2.1': {} - - '@types/d3-axis@3.0.6': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-brush@3.0.6': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-chord@3.0.6': {} - - '@types/d3-color@3.1.3': {} - - '@types/d3-contour@3.0.6': - dependencies: - '@types/d3-array': 3.2.1 - '@types/geojson': 7946.0.15 - - '@types/d3-delaunay@6.0.4': {} - - '@types/d3-dispatch@3.0.6': {} - - '@types/d3-drag@3.0.7': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-dsv@3.0.7': {} - - '@types/d3-ease@3.0.2': {} - - '@types/d3-fetch@3.0.7': - dependencies: - '@types/d3-dsv': 3.0.7 - - '@types/d3-force@3.0.10': {} - - '@types/d3-format@3.0.4': {} - - '@types/d3-geo@3.1.0': - dependencies: - '@types/geojson': 7946.0.15 - - '@types/d3-hierarchy@3.1.7': {} - - '@types/d3-interpolate@3.0.4': - dependencies: - '@types/d3-color': 3.1.3 - - '@types/d3-path@3.1.0': {} - - '@types/d3-polygon@3.0.2': {} - - '@types/d3-quadtree@3.0.6': {} - - '@types/d3-random@3.0.3': {} - - '@types/d3-scale-chromatic@3.1.0': {} - - '@types/d3-scale@4.0.8': - dependencies: - '@types/d3-time': 3.0.4 - - '@types/d3-selection@3.0.11': {} - - '@types/d3-shape@3.1.7': - dependencies: - '@types/d3-path': 3.1.0 - - '@types/d3-time-format@4.0.3': {} - - '@types/d3-time@3.0.4': {} - - '@types/d3-timer@3.0.2': {} - - '@types/d3-transition@3.0.9': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-zoom@3.0.8': - dependencies: - '@types/d3-interpolate': 3.0.4 - '@types/d3-selection': 3.0.11 - - '@types/d3@7.4.3': - dependencies: - '@types/d3-array': 3.2.1 - '@types/d3-axis': 3.0.6 - '@types/d3-brush': 3.0.6 - '@types/d3-chord': 3.0.6 - '@types/d3-color': 3.1.3 - '@types/d3-contour': 3.0.6 - '@types/d3-delaunay': 6.0.4 - '@types/d3-dispatch': 3.0.6 - '@types/d3-drag': 3.0.7 - '@types/d3-dsv': 3.0.7 - '@types/d3-ease': 3.0.2 - '@types/d3-fetch': 3.0.7 - '@types/d3-force': 3.0.10 - '@types/d3-format': 3.0.4 - '@types/d3-geo': 3.1.0 - '@types/d3-hierarchy': 3.1.7 - '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.1.0 - '@types/d3-polygon': 3.0.2 - '@types/d3-quadtree': 3.0.6 - '@types/d3-random': 3.0.3 - '@types/d3-scale': 4.0.8 - '@types/d3-scale-chromatic': 3.1.0 - '@types/d3-selection': 3.0.11 - '@types/d3-shape': 3.1.7 - '@types/d3-time': 3.0.4 - '@types/d3-time-format': 4.0.3 - '@types/d3-timer': 3.0.2 - '@types/d3-transition': 3.0.9 - '@types/d3-zoom': 3.0.8 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/diff-match-patch@1.0.36': {} - - '@types/dompurify@3.2.0': - dependencies: - dompurify: 3.2.2 - - '@types/dotenv@8.2.3': - dependencies: - dotenv: 16.4.7 - - '@types/elliptic@6.4.18': - dependencies: - '@types/bn.js': 5.1.6 - - '@types/emscripten@1.39.13': {} - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.6 - - '@types/estree@1.0.6': {} - - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 20.17.9 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express-serve-static-core@5.0.5': - dependencies: - '@types/node': 20.17.9 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 - - '@types/express@5.0.0': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.5 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 - - '@types/filesystem@0.0.36': - dependencies: - '@types/filewriter': 0.0.33 - - '@types/filewriter@0.0.33': {} - - '@types/firefox-webext-browser@120.0.4': {} - - '@types/fluent-ffmpeg@2.1.27': - dependencies: - '@types/node': 20.17.9 - - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 20.17.9 - - '@types/geojson@7946.0.15': {} - - '@types/glob@8.1.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.17.9 - - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 20.17.9 - - '@types/gtag.js@0.0.12': {} - - '@types/har-format@1.2.16': {} - - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.11 - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/history@4.7.11': {} - - '@types/html-minifier-terser@6.1.0': {} - - '@types/http-cache-semantics@4.0.4': {} - - '@types/http-errors@2.0.4': {} - - '@types/http-proxy@1.17.15': - dependencies: - '@types/node': 20.17.9 - - '@types/ioredis@5.0.0': - dependencies: - ioredis: 5.4.2 - transitivePeerDependencies: - - supports-color - - '@types/is-stream@1.1.0': - dependencies: - '@types/node': 20.17.9 - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - - '@types/js-yaml@4.0.9': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/jsonwebtoken@9.0.7': - dependencies: - '@types/node': 20.17.9 - - '@types/keyv@3.1.4': - dependencies: - '@types/node': 20.17.9 - - '@types/lodash.isstring@4.0.9': - dependencies: - '@types/lodash': 4.17.14 - - '@types/lodash@4.17.14': {} - - '@types/long@4.0.2': {} - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/mdx@2.0.13': {} - - '@types/mime@1.3.5': {} - - '@types/minimatch@3.0.5': {} - - '@types/minimatch@5.1.2': {} - - '@types/minimist@1.2.5': {} - - '@types/mocha@10.0.10': {} - - '@types/ms@0.7.34': {} - - '@types/multer@1.4.12': - dependencies: - '@types/express': 5.0.0 - - '@types/node-fetch@2.6.12': - dependencies: - '@types/node': 20.17.9 - form-data: 4.0.1 - - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 20.17.9 - - '@types/node@10.17.60': {} - - '@types/node@11.11.6': {} - - '@types/node@12.20.55': {} - - '@types/node@17.0.45': {} - - '@types/node@18.19.71': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.17.9': - dependencies: - undici-types: 6.19.8 - - '@types/node@22.10.7': - dependencies: - undici-types: 6.20.0 - - '@types/node@22.7.5': - dependencies: - undici-types: 6.19.8 - - '@types/node@22.8.4': - dependencies: - undici-types: 6.19.8 - - '@types/normalize-package-data@2.4.4': {} - - '@types/parse-json@4.0.2': {} - - '@types/parse5@5.0.3': {} - - '@types/pdfjs-dist@2.10.378(encoding@0.1.13)': - dependencies: - pdfjs-dist: 4.7.76(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - '@types/pg@8.11.10': - dependencies: - '@types/node': 20.17.9 - pg-protocol: 1.7.0 - pg-types: 4.0.2 - - '@types/phoenix@1.6.6': {} - - '@types/prismjs@1.26.5': {} - - '@types/promise-retry@1.1.6': - dependencies: - '@types/retry': 0.12.5 - - '@types/qs@6.9.18': {} - - '@types/range-parser@1.2.7': {} - - '@types/react-dom@19.0.3(@types/react@19.0.7)': - dependencies: - '@types/react': 19.0.7 - - '@types/react-router-config@5.0.11': - dependencies: - '@types/history': 4.7.11 - '@types/react': 19.0.7 - '@types/react-router': 5.1.20 - - '@types/react-router-dom@5.3.3': - dependencies: - '@types/history': 4.7.11 - '@types/react': 19.0.7 - '@types/react-router': 5.1.20 - - '@types/react-router@5.1.20': - dependencies: - '@types/history': 4.7.11 - '@types/react': 19.0.7 - - '@types/react@19.0.7': - dependencies: - csstype: 3.1.3 - - '@types/resolve@1.20.2': {} - - '@types/responselike@1.0.3': - dependencies: - '@types/node': 20.17.9 - - '@types/retry@0.12.0': {} - - '@types/retry@0.12.5': {} - - '@types/sax@1.2.7': - dependencies: - '@types/node': 20.17.9 - - '@types/semver@7.5.8': {} - - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 20.17.9 - - '@types/serve-index@1.9.4': - dependencies: - '@types/express': 4.17.21 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 20.17.9 - '@types/send': 0.17.4 - - '@types/sockjs@0.3.36': - dependencies: - '@types/node': 20.17.9 - - '@types/sql.js@1.4.9': - dependencies: - '@types/emscripten': 1.39.13 - '@types/node': 20.17.9 - - '@types/stack-utils@2.0.3': {} - - '@types/tar@6.1.13': - dependencies: - '@types/node': 20.17.9 - minipass: 4.2.8 - - '@types/trusted-types@2.0.7': {} - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@types/unzipper@0.10.10': - dependencies: - '@types/node': 20.17.9 - - '@types/uuid@10.0.0': {} - - '@types/uuid@8.3.4': {} - - '@types/wav-encoder@1.3.3': {} - - '@types/webrtc@0.0.37': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 20.17.9 - - '@types/ws@8.5.13': - dependencies: - '@types/node': 20.17.9 - - '@types/ws@8.5.3': - dependencies: - '@types/node': 20.17.9 - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@15.0.19': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 20.17.9 - optional: true - - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/type-utils': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.16.0 - eslint: 9.16.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/type-utils': 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.16.0 - eslint: 9.18.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/type-utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.20.0 - eslint: 9.18.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 - eslint: 8.57.1 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.16.0 - debug: 4.4.0 - eslint: 9.16.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.16.0 - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - - '@typescript-eslint/scope-manager@8.16.0': - dependencies: - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/visitor-keys': 8.16.0 - - '@typescript-eslint/scope-manager@8.20.0': - dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 - - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) - debug: 4.4.0 - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0 - eslint: 9.16.0(jiti@2.4.2) - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0(supports-color@5.5.0) - eslint: 9.18.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@6.21.0': {} - - '@typescript-eslint/types@8.16.0': {} - - '@typescript-eslint/types@8.20.0': {} - - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.16.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/visitor-keys': 8.16.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.20.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - eslint: 8.57.1 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@6.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - eslint: 9.16.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/types': 8.16.0 - '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - eslint: 9.16.0(jiti@2.4.2) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - optional: true - - '@typescript-eslint/utils@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.16.0': - dependencies: - '@typescript-eslint/types': 8.16.0 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.20.0': - dependencies: - '@typescript-eslint/types': 8.20.0 - eslint-visitor-keys: 4.2.0 - - '@uidotdev/usehooks@2.4.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - '@ungap/structured-clone@1.2.1': {} - - '@uniswap/sdk-core@4.2.1': - dependencies: - '@ethersproject/address': 5.7.0 - big.js: 5.2.2 - decimal.js-light: 2.5.1 - jsbi: 3.2.5 - tiny-invariant: 1.3.3 - toformat: 2.0.0 - - '@uniswap/sdk-core@6.0.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/strings': 5.7.0 - big.js: 5.2.2 - decimal.js-light: 2.5.1 - jsbi: 3.2.5 - tiny-invariant: 1.3.3 - toformat: 2.0.0 - - '@unruggable_starknet/core@0.1.0(starknet@6.18.0(encoding@0.1.13))': - dependencies: - '@uniswap/sdk-core': 4.2.1 - moment: 2.30.1 - starknet: 6.18.0(encoding@0.1.13) - - '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': - dependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - transitivePeerDependencies: - - '@swc/helpers' - - '@vitest/coverage-v8@0.34.6(vitest@0.34.6)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - picocolors: 1.1.1 - std-env: 3.8.0 - test-exclude: 6.0.0 - v8-to-istanbul: 9.3.0 - vitest: 0.34.6(@vitest/ui@0.34.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(playwright@1.48.2)(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@1.1.3(vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - picocolors: 1.1.1 - std-env: 3.8.0 - test-exclude: 6.0.0 - v8-to-istanbul: 9.3.0 - vitest: 1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.1.5(vitest@2.1.8(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - '@vitest/eslint-plugin@1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': - dependencies: - eslint: 9.16.0(jiti@2.4.2) - optionalDependencies: - '@typescript-eslint/utils': 8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - typescript: 5.6.3 - vitest: 2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) - - '@vitest/expect@0.34.6': - dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - chai: 4.5.0 - - '@vitest/expect@1.1.3': - dependencies: - '@vitest/spy': 1.1.3 - '@vitest/utils': 1.1.3 - chai: 4.5.0 - - '@vitest/expect@1.2.1': - dependencies: - '@vitest/spy': 1.2.1 - '@vitest/utils': 1.2.1 - chai: 4.5.0 - - '@vitest/expect@2.1.4': - dependencies: - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 - tinyrainbow: 1.2.0 - - '@vitest/expect@2.1.5': - dependencies: - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 - chai: 5.1.2 - tinyrainbow: 1.2.0 - - '@vitest/expect@2.1.8': - dependencies: - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 - tinyrainbow: 1.2.0 - - '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': - dependencies: - '@vitest/spy': 2.1.4 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0))': - dependencies: - '@vitest/spy': 2.1.5 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': - dependencies: - '@vitest/spy': 2.1.5 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - - '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': - dependencies: - '@vitest/spy': 2.1.8 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - - '@vitest/pretty-format@2.1.4': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.1.5': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.1.8': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/runner@0.34.6': - dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 - pathe: 1.1.2 - - '@vitest/runner@1.1.3': - dependencies: - '@vitest/utils': 1.1.3 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/runner@1.2.1': - dependencies: - '@vitest/utils': 1.2.1 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/runner@2.1.4': - dependencies: - '@vitest/utils': 2.1.4 - pathe: 1.1.2 - - '@vitest/runner@2.1.5': - dependencies: - '@vitest/utils': 2.1.5 - pathe: 1.1.2 - - '@vitest/runner@2.1.8': - dependencies: - '@vitest/utils': 2.1.8 - pathe: 1.1.2 - - '@vitest/snapshot@0.34.6': - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/snapshot@1.1.3': - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/snapshot@1.2.1': - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/snapshot@2.1.4': - dependencies: - '@vitest/pretty-format': 2.1.4 - magic-string: 0.30.17 - pathe: 1.1.2 - - '@vitest/snapshot@2.1.5': - dependencies: - '@vitest/pretty-format': 2.1.5 - magic-string: 0.30.17 - pathe: 1.1.2 - - '@vitest/snapshot@2.1.8': - dependencies: - '@vitest/pretty-format': 2.1.8 - magic-string: 0.30.17 - pathe: 1.1.2 - - '@vitest/spy@0.34.6': - dependencies: - tinyspy: 2.2.1 - - '@vitest/spy@1.1.3': - dependencies: - tinyspy: 2.2.1 - - '@vitest/spy@1.2.1': - dependencies: - tinyspy: 2.2.1 - - '@vitest/spy@2.1.4': - dependencies: - tinyspy: 3.0.2 - - '@vitest/spy@2.1.5': - dependencies: - tinyspy: 3.0.2 - - '@vitest/spy@2.1.8': - dependencies: - tinyspy: 3.0.2 - - '@vitest/ui@0.34.7(vitest@0.34.6)': - dependencies: - '@vitest/utils': 0.34.7 - fast-glob: 3.3.3 - fflate: 0.8.2 - flatted: 3.3.2 - pathe: 1.1.2 - picocolors: 1.1.1 - sirv: 2.0.4 - vitest: 0.34.6(@vitest/ui@0.34.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(playwright@1.48.2)(terser@5.37.0) - - '@vitest/utils@0.34.6': - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@vitest/utils@0.34.7': - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@vitest/utils@1.1.3': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@vitest/utils@1.2.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@vitest/utils@2.1.4': - dependencies: - '@vitest/pretty-format': 2.1.4 - loupe: 3.1.2 - tinyrainbow: 1.2.0 - - '@vitest/utils@2.1.5': - dependencies: - '@vitest/pretty-format': 2.1.5 - loupe: 3.1.2 - tinyrainbow: 1.2.0 - - '@vitest/utils@2.1.8': - dependencies: - '@vitest/pretty-format': 2.1.8 - loupe: 3.1.2 - tinyrainbow: 1.2.0 - - '@vladfrangu/async_event_emitter@2.4.6': {} - - '@vue/compiler-core@3.5.13': - dependencies: - '@babel/parser': 7.26.5 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.13': - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-sfc@3.5.13': - dependencies: - '@babel/parser': 7.26.5 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.1 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.13': - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/reactivity@3.5.13': - dependencies: - '@vue/shared': 3.5.13 - - '@vue/runtime-core@3.5.13': - dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/runtime-dom@3.5.13': - dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.6.3))': - dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.6.3) - - '@vue/shared@3.5.13': {} - - '@wallet-standard/base@1.1.0': {} - - '@wallet-standard/features@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@walletconnect/core@2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10)': - 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(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.3(ioredis@5.4.2) - '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - '@walletconnect/window-getters': 1.0.1 - events: 3.3.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/core@2.17.4(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@6.0.5)': - 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(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - '@walletconnect/window-getters': 1.0.1 - events: 3.3.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/core@2.17.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - 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(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - '@walletconnect/window-getters': 1.0.1 - events: 3.3.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/environment@1.0.1': - dependencies: - tslib: 1.14.1 - - '@walletconnect/ethereum-provider@2.17.3(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) - '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.17.3(ioredis@5.4.2) - '@walletconnect/universal-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(utf-8-validate@5.0.10) - '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - uploadthing - - utf-8-validate - - '@walletconnect/ethereum-provider@2.17.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) - '@walletconnect/sign-client': 2.17.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/universal-provider': 2.17.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - uploadthing - - utf-8-validate - - '@walletconnect/events@1.0.1': - dependencies: - keyvaluestorage-interface: 1.0.0 - tslib: 1.14.1 - - '@walletconnect/heartbeat@1.2.2': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/time': 1.0.2 - events: 3.3.0 - - '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.2.0(encoding@0.1.13) - events: 3.3.0 - transitivePeerDependencies: - - encoding - - '@walletconnect/jsonrpc-provider@1.0.14': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - events: 3.3.0 - - '@walletconnect/jsonrpc-types@1.0.4': - dependencies: - events: 3.3.0 - keyvaluestorage-interface: 1.0.0 - - '@walletconnect/jsonrpc-utils@1.0.8': - dependencies: - '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.4 - tslib: 1.14.1 - - '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@walletconnect/keyvaluestorage@1.1.1(ioredis@5.4.2)': - dependencies: - '@walletconnect/safe-json': 1.0.2 - idb-keyval: 6.2.1 - unstorage: 1.14.4(idb-keyval@6.2.1)(ioredis@5.4.2) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/logger@2.1.2': - dependencies: - '@walletconnect/safe-json': 1.0.2 - pino: 7.11.0 - - '@walletconnect/modal-core@2.7.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - valtio: 1.11.2(@types/react@19.0.7)(react@19.0.0) - transitivePeerDependencies: - - '@types/react' - - react - - '@walletconnect/modal-ui@2.7.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) - lit: 2.8.0 - motion: 10.16.2 - qrcode: 1.5.3 - transitivePeerDependencies: - - '@types/react' - - react - - '@walletconnect/modal@2.7.0(@types/react@19.0.7)(react@19.0.0)': - dependencies: - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) - '@walletconnect/modal-ui': 2.7.0(@types/react@19.0.7)(react@19.0.0) - transitivePeerDependencies: - - '@types/react' - - react - - '@walletconnect/relay-api@1.0.11': - dependencies: - '@walletconnect/jsonrpc-types': 1.0.4 - - '@walletconnect/relay-auth@1.0.4': - dependencies: - '@stablelib/ed25519': 1.0.3 - '@stablelib/random': 1.0.2 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - tslib: 1.14.1 - uint8arrays: 3.1.0 - - '@walletconnect/safe-json@1.0.2': - dependencies: - tslib: 1.14.1 - - '@walletconnect/sign-client@2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/core': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.3(ioredis@5.4.2) - '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/sign-client@2.17.4(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@6.0.5)': - dependencies: - '@walletconnect/core': 2.17.4(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@6.0.5) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/sign-client@2.17.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/core': 2.17.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/time@1.0.2': - dependencies: - tslib: 1.14.1 - - '@walletconnect/types@2.17.3(ioredis@5.4.2)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/types@2.17.4(ioredis@5.4.2)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/universal-provider@2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.17.3(ioredis@5.4.2) - '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - events: 3.3.0 - lodash: 4.17.21 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/universal-provider@2.17.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.17.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/utils': 2.17.4(ioredis@5.4.2) - events: 3.3.0 - lodash: 4.17.21 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/utils@2.17.3(ioredis@5.4.2)': - dependencies: - '@ethersproject/hash': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.3(ioredis@5.4.2) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - elliptic: 6.6.1 - query-string: 7.1.3 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/utils@2.17.4(ioredis@5.4.2)': - dependencies: - '@ethersproject/hash': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.4(ioredis@5.4.2) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - elliptic: 6.6.1 - query-string: 7.1.3 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/window-getters@1.0.1': - dependencies: - tslib: 1.14.1 - - '@walletconnect/window-metadata@1.0.1': - dependencies: - '@walletconnect/window-getters': 1.0.1 - tslib: 1.14.1 - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@yarnpkg/lockfile@1.1.0': {} - - '@yarnpkg/parsers@3.0.0-rc.46': - dependencies: - js-yaml: 3.14.1 - tslib: 2.8.1 - - '@zkochan/js-yaml@0.0.7': - dependencies: - argparse: 2.0.1 - - '@zodios/core@10.9.6(axios@1.7.9)(zod@3.23.8)': - dependencies: - axios: 1.7.9 - zod: 3.23.8 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - abbrev@1.1.1: {} - - abbrev@2.0.0: {} - - abi-wan-kanabi@2.2.4: - dependencies: - ansicolors: 0.3.2 - cardinal: 2.1.1 - fs-extra: 10.1.0 - yargs: 17.7.2 - - abitype@0.10.3(typescript@5.7.3)(zod@3.24.1): - optionalDependencies: - typescript: 5.7.3 - zod: 3.24.1 - - abitype@0.7.1(typescript@5.7.3)(zod@3.24.1): - dependencies: - typescript: 5.7.3 - optionalDependencies: - zod: 3.24.1 - - abitype@1.0.7(typescript@5.6.3)(zod@3.24.1): - optionalDependencies: - typescript: 5.6.3 - zod: 3.24.1 - - abitype@1.0.7(typescript@5.7.3)(zod@3.23.8): - optionalDependencies: - typescript: 5.7.3 - zod: 3.23.8 - - abitype@1.0.7(typescript@5.7.3)(zod@3.24.1): - optionalDependencies: - typescript: 5.7.3 - zod: 3.24.1 - - abitype@1.0.8(typescript@5.6.3)(zod@3.24.1): - optionalDependencies: - typescript: 5.6.3 - zod: 3.24.1 - - abitype@1.0.8(typescript@5.7.3)(zod@3.23.8): - optionalDependencies: - typescript: 5.7.3 - zod: 3.23.8 - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn-node@1.8.2: - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - - acorn-typescript@1.4.13(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn-walk@7.2.0: {} - - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - - acorn@7.4.1: {} - - acorn@8.14.0: {} - - add-stream@1.0.0: {} - - address@1.2.2: {} - - aes-js@3.0.0: {} - - aes-js@4.0.0-beta.5: {} - - agent-base@5.1.1: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - agent-base@7.1.3: {} - - agent-twitter-client@0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@roamhq/wrtc': 0.8.0 - '@sinclair/typebox': 0.32.35 - headers-polyfill: 3.3.0 - json-stable-stringify: 1.2.1 - node-fetch: 3.3.2 - otpauth: 9.3.6 - set-cookie-parser: 2.7.1 - tough-cookie: 4.1.4 - tslib: 2.8.1 - twitter-api-v2: 1.19.0 - undici: 7.2.3 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ai@3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/react': 0.0.70(react@19.0.0)(zod@3.23.8) - '@ai-sdk/solid': 0.0.54(zod@3.23.8) - '@ai-sdk/svelte': 0.0.57(svelte@5.18.0)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - '@ai-sdk/vue': 0.0.59(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) - '@opentelemetry/api': 1.9.0 - eventsource-parser: 1.1.2 - json-schema: 0.4.0 - jsondiffpatch: 0.6.0 - secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.1(zod@3.23.8) - optionalDependencies: - openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) - react: 19.0.0 - sswr: 2.1.0(svelte@5.18.0) - svelte: 5.18.0 - zod: 3.23.8 - transitivePeerDependencies: - - solid-js - - vue - - ai@4.0.38(react@19.0.0)(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - '@ai-sdk/react': 1.0.11(react@19.0.0)(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.10(zod@3.23.8) - '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - optionalDependencies: - react: 19.0.0 - zod: 3.23.8 - - ai@4.0.38(react@19.0.0)(zod@3.24.1): - dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - '@ai-sdk/react': 1.0.11(react@19.0.0)(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.10(zod@3.24.1) - '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - optionalDependencies: - react: 19.0.0 - zod: 3.24.1 - - ajv-draft-04@1.0.0(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.5 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - alawmulaw@6.0.0: {} - - algo-msgpack-with-bigint@2.1.1: {} - - algoliasearch-helper@3.23.0(algoliasearch@4.24.0): - dependencies: - '@algolia/events': 4.0.1 - algoliasearch: 4.24.0 - - algoliasearch@4.24.0: - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-account': 4.24.0 - '@algolia/client-analytics': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-personalization': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/recommend': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - algoliasearch@5.19.0: - dependencies: - '@algolia/client-abtesting': 5.19.0 - '@algolia/client-analytics': 5.19.0 - '@algolia/client-common': 5.19.0 - '@algolia/client-insights': 5.19.0 - '@algolia/client-personalization': 5.19.0 - '@algolia/client-query-suggestions': 5.19.0 - '@algolia/client-search': 5.19.0 - '@algolia/ingestion': 1.19.0 - '@algolia/monitoring': 1.19.0 - '@algolia/recommend': 5.19.0 - '@algolia/requester-browser-xhr': 5.19.0 - '@algolia/requester-fetch': 5.19.0 - '@algolia/requester-node-http': 5.19.0 - - algosdk@1.24.1(encoding@0.1.13): - dependencies: - algo-msgpack-with-bigint: 2.1.1 - buffer: 6.0.3 - cross-fetch: 3.2.0(encoding@0.1.13) - hi-base32: 0.5.1 - js-sha256: 0.9.0 - js-sha3: 0.8.0 - js-sha512: 0.8.0 - json-bigint: 1.0.0 - tweetnacl: 1.0.3 - vlq: 2.0.4 - transitivePeerDependencies: - - encoding - - amp-message@0.1.2: - dependencies: - amp: 0.3.1 - - amp@0.3.1: {} - - amqplib@0.10.5: - dependencies: - '@acuminous/bitsyntax': 0.1.2 - buffer-more-ints: 1.0.0 - url-parse: 1.5.10 - transitivePeerDependencies: - - supports-color - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@6.2.1: {} - - ansi-escapes@7.0.0: - dependencies: - environment: 1.1.0 - - ansi-html-community@0.0.8: {} - - ansi-regex@2.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@2.2.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - ansicolors@0.3.2: {} - - anthropic-vertex-ai@1.0.2(encoding@0.1.13)(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 0.0.24 - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - google-auth-library: 9.15.0(encoding@0.1.13) - zod: 3.23.8 - transitivePeerDependencies: - - encoding - - supports-color - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - ap@0.1.0: {} - - apg-js@4.4.0: {} - - append-field@1.0.0: {} - - aproba@2.0.0: {} - - arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@irys/arweave': 0.0.2 - '@noble/ed25519': 1.7.3 - base64url: 3.0.1 - bs58: 4.0.1 - keccak: 3.0.4 - secp256k1: 5.0.1 - optionalDependencies: - '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) - arweave-stream-tx: 1.2.2(arweave@1.15.5) - multistream: 4.1.0 - tmp-promise: 3.0.3 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - arconnect@0.4.2: - dependencies: - arweave: 1.15.5 - optional: true - - are-docs-informative@0.0.2: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@4.1.3: {} - - arg@5.0.2: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - aria-hidden@1.2.4: - dependencies: - tslib: 2.8.1 - - aria-query@5.3.2: {} - - arr-union@3.1.0: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.3 - is-array-buffer: 3.0.5 - - array-differ@3.0.0: {} - - array-flatten@1.1.1: {} - - array-ify@1.0.0: {} - - array-includes@3.1.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 - is-string: 1.1.1 - - array-union@2.1.0: {} - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.0.2 - - array.prototype.findlastindex@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - is-array-buffer: 3.0.5 - - arrify@1.0.1: {} - - arrify@2.0.1: {} - - arweave-stream-tx@1.2.2(arweave@1.15.5): - dependencies: - arweave: 1.15.5 - exponential-backoff: 3.1.1 - optional: true - - arweave@1.15.5: - dependencies: - arconnect: 0.4.2 - asn1.js: 5.4.1 - base64-js: 1.5.1 - bignumber.js: 9.1.2 - optional: true - - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - asn1.js@5.4.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - - asn1js@2.4.0: - dependencies: - pvutils: 1.1.3 - - asn1js@3.0.5: - dependencies: - pvtsutils: 1.3.6 - pvutils: 1.1.3 - tslib: 2.8.1 - - assert-plus@1.0.0: {} - - assert@1.5.1: - dependencies: - object.assign: 4.1.7 - util: 0.10.4 - - assert@2.1.0: - dependencies: - call-bind: 1.0.8 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.7 - util: 0.12.5 - - assertion-error@1.1.0: {} - - assertion-error@2.0.1: {} - - ast-types-flow@0.0.8: {} - - ast-types@0.13.4: - dependencies: - tslib: 2.8.1 - - astring@1.9.0: {} - - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - - async@0.2.10: {} - - async@2.6.4: - dependencies: - lodash: 4.17.21 - - async@3.2.6: {} - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atob@2.1.2: {} - - atomic-sleep@1.0.0: {} - - autocomplete.js@0.37.1: - dependencies: - immediate: 3.3.0 - - automd@0.3.12(magicast@0.3.5): - dependencies: - '@parcel/watcher': 2.5.0 - c12: 2.0.1(magicast@0.3.5) - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - destr: 2.0.3 - didyoumean2: 7.0.4 - globby: 14.0.2 - magic-string: 0.30.17 - mdbox: 0.1.1 - mlly: 1.7.4 - ofetch: 1.4.1 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - scule: 1.3.0 - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - supports-color - - autoprefixer@10.4.20(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001692 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - avail-js-sdk@0.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@polkadot/api': 10.13.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - neverthrow: 7.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - aws-sign2@0.7.0: {} - - aws4@1.13.2: {} - - axe-core@4.10.2: {} - - axios-mock-adapter@1.22.0(axios@1.7.9): - dependencies: - axios: 1.7.9 - fast-deep-equal: 3.1.3 - is-buffer: 2.0.5 - - axios-retry@3.9.1: - dependencies: - '@babel/runtime': 7.26.0 - is-retry-allowed: 2.2.0 - - axios-retry@4.5.0(axios@1.7.9): - dependencies: - axios: 1.7.9 - is-retry-allowed: 2.2.0 - - axios@0.21.4: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - transitivePeerDependencies: - - debug - - axios@0.24.0: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - transitivePeerDependencies: - - debug - - axios@0.27.2: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.1 - transitivePeerDependencies: - - debug - - axios@0.28.1: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.4: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.7: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.8: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.9: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.9(debug@4.4.0): - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axobject-query@4.1.0: {} - - b4a@1.6.7: {} - - babel-code-frame@6.26.0: - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - - babel-jest@29.7.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 4.0.0 - schema-utils: 4.3.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - babel-messages@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-dynamic-import-node@2.3.3: - dependencies: - object.assign: 4.1.7 - - babel-plugin-import-to-require@1.0.0: - dependencies: - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.26.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.26.0 - cosmiconfig: 7.1.0 - resolve: 1.22.10 - - babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): - dependencies: - '@babel/compat-data': 7.26.5 - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.40.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - - babel-preset-jest@29.6.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - - babel-runtime@6.26.0: - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - - babel-template@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-traverse@6.26.0: - dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-types@6.26.0: - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - - babylon@6.18.0: {} - - bail@1.0.5: {} - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - bare-events@2.5.4: - optional: true - - bare-fs@4.0.1: - dependencies: - bare-events: 2.5.4 - bare-path: 3.0.0 - bare-stream: 2.6.4(bare-events@2.5.4) - transitivePeerDependencies: - - bare-buffer - optional: true - - bare-os@3.4.0: - optional: true - - bare-path@3.0.0: - dependencies: - bare-os: 3.4.0 - optional: true - - bare-stream@2.6.4(bare-events@2.5.4): - dependencies: - streamx: 2.21.1 - optionalDependencies: - bare-events: 2.5.4 - optional: true - - base-x@2.0.6: - dependencies: - safe-buffer: 5.2.1 - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base-x@5.0.0: {} - - base64-arraybuffer@0.2.0: {} - - base64-js@1.5.1: {} - - base64url@3.0.1: {} - - basic-ftp@5.0.5: {} - - batch@0.6.1: {} - - bcp-47-match@1.0.3: {} - - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - - bech32@1.1.4: {} - - bech32@2.0.0: {} - - before-after-hook@2.2.3: {} - - before-after-hook@3.0.2: {} - - bent@7.3.12: - dependencies: - bytesish: 0.4.4 - caseless: 0.12.0 - is-stream: 2.0.1 - - better-sqlite3@11.6.0: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.2 - - big-integer@1.6.52: {} - - big.js@5.2.2: {} - - big.js@6.2.2: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - bignumber@1.1.0: {} - - bin-links@4.0.4: - dependencies: - cmd-shim: 6.0.3 - npm-normalize-package-bin: 3.0.1 - read-cmd-shim: 4.0.0 - write-file-atomic: 5.0.1 - - bin-version-check@6.0.0: - dependencies: - binary-version: 7.1.0 - semver: 7.6.3 - semver-truncate: 3.0.0 - - binary-extensions@2.3.0: {} - - binary-version@7.1.0: - dependencies: - execa: 8.0.1 - find-versions: 6.0.0 - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bintrees@1.0.2: {} - - bip174@3.0.0-rc.1: - dependencies: - uint8array-tools: 0.0.9 - varuint-bitcoin: 2.0.0 - - bip32@4.0.0: - dependencies: - '@noble/hashes': 1.7.0 - '@scure/base': 1.2.1 - typeforce: 1.18.0 - wif: 2.0.6 - - bip39-light@1.0.7: - dependencies: - create-hash: 1.2.0 - pbkdf2: 3.1.2 - - bip39@3.0.2: - dependencies: - '@types/node': 11.11.6 - create-hash: 1.2.0 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - - bip39@3.1.0: - dependencies: - '@noble/hashes': 1.3.0 - - bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3): - dependencies: - '@noble/hashes': 1.7.0 - bech32: 2.0.0 - bip174: 3.0.0-rc.1 - bs58check: 4.0.0 - uint8array-tools: 0.0.9 - valibot: 0.38.0(typescript@5.7.3) - varuint-bitcoin: 2.0.0 - transitivePeerDependencies: - - typescript - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - blake2b-wasm@1.1.7: - dependencies: - nanoassert: 1.1.0 - - blake2b@2.1.3: - dependencies: - blake2b-wasm: 1.1.7 - nanoassert: 1.1.0 - - blessed@0.1.81: {} - - bluebird@3.7.2: {} - - bn.js@4.11.6: {} - - bn.js@4.12.1: {} - - bn.js@5.2.0: {} - - bn.js@5.2.1: {} - - bn@1.0.5: {} - - bodec@0.1.0: {} - - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - bonjour-service@1.3.0: - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - - boolbase@1.0.0: {} - - borc@2.1.2: - dependencies: - bignumber.js: 9.1.2 - buffer: 5.7.1 - commander: 2.20.3 - ieee754: 1.2.1 - iso-url: 0.4.7 - json-text-sequence: 0.1.1 - readable-stream: 3.6.2 - - borsh@0.6.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@1.0.0: {} - - borsh@2.0.0: {} - - bottleneck@2.19.5: {} - - bowser@2.11.0: {} - - boxen@6.2.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - - boxen@7.1.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.4.1 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - browser-headers@0.4.1: {} - - browser-pack@6.1.0: - dependencies: - JSONStream: 1.3.5 - combine-source-map: 0.8.0 - defined: 1.0.1 - safe-buffer: 5.2.1 - through2: 2.0.5 - umd: 3.0.3 - - browser-resolve@2.0.0: - dependencies: - resolve: 1.22.10 - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.6 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.6 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.1: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - browserify-sign@4.2.3: - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.6.1 - hash-base: 3.0.5 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserify@17.0.1: - dependencies: - JSONStream: 1.3.5 - assert: 1.5.1 - browser-pack: 6.1.0 - browser-resolve: 2.0.0 - browserify-zlib: 0.2.0 - buffer: 5.2.1 - cached-path-relative: 1.1.0 - concat-stream: 1.6.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.1 - defined: 1.0.1 - deps-sort: 2.0.1 - domain-browser: 1.2.0 - duplexer2: 0.1.4 - events: 3.3.0 - glob: 7.2.3 - hasown: 2.0.2 - htmlescape: 1.1.1 - https-browserify: 1.0.0 - inherits: 2.0.4 - insert-module-globals: 7.2.1 - labeled-stream-splicer: 2.0.2 - mkdirp-classic: 0.5.3 - module-deps: 6.2.3 - os-browserify: 0.3.0 - parents: 1.0.1 - path-browserify: 1.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - read-only-stream: 2.0.0 - readable-stream: 2.3.8 - resolve: 1.22.10 - shasum-object: 1.0.0 - shell-quote: 1.8.2 - stream-browserify: 3.0.0 - stream-http: 3.2.0 - string_decoder: 1.3.0 - subarg: 1.0.0 - syntax-error: 1.4.0 - through2: 2.0.5 - timers-browserify: 1.4.2 - tty-browserify: 0.0.1 - url: 0.11.4 - util: 0.12.5 - vm-browserify: 1.1.2 - xtend: 4.0.2 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.83 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bs58@4.0.0: - dependencies: - base-x: 2.0.6 - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - bs58@6.0.0: - dependencies: - base-x: 5.0.0 - - bs58check@2.1.2: - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - - bs58check@4.0.0: - dependencies: - '@noble/hashes': 1.7.0 - bs58: 6.0.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - buffer-crc32@0.2.13: {} - - buffer-equal-constant-time@1.0.1: {} - - buffer-fill@1.0.0: {} - - buffer-from@1.1.2: {} - - buffer-layout@1.2.2: {} - - buffer-more-ints@1.0.0: {} - - buffer-reverse@1.0.1: {} - - buffer-xor@1.0.3: {} - - buffer@5.2.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.9: - dependencies: - node-gyp-build: 4.8.4 - - builtin-modules@3.3.0: {} - - builtin-status-codes@3.0.0: {} - - bundle-require@5.1.0(esbuild@0.24.2): - dependencies: - esbuild: 0.24.2 - load-tsconfig: 0.2.5 - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - buttplug@3.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - class-transformer: 0.5.1 - eventemitter3: 5.0.1 - reflect-metadata: 0.2.2 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - byte-size@8.1.1: {} - - bytes@3.0.0: {} - - bytes@3.1.2: {} - - bytesish@0.4.4: {} - - bytestreamjs@2.0.1: {} - - c12@2.0.1(magicast@0.3.5): - dependencies: - chokidar: 4.0.3 - confbox: 0.1.8 - defu: 6.1.4 - dotenv: 16.4.7 - giget: 1.2.3 - jiti: 2.4.0 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - rc9: 2.1.2 - optionalDependencies: - magicast: 0.3.5 - - cac@6.7.14: {} - - cacache@18.0.4: - dependencies: - '@npmcli/fs': 3.1.1 - fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.6 - tar: 6.2.1 - unique-filename: 3.0.0 - - cacheable-lookup@5.0.4: {} - - cacheable-lookup@7.0.0: {} - - cacheable-request@10.2.14: - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 6.0.1 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.1 - responselike: 3.0.0 - - cacheable-request@7.0.4: - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - - cached-path-relative@1.1.0: {} - - call-bind-apply-helpers@1.0.1: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.1 - get-intrinsic: 1.2.7 - set-function-length: 1.2.2 - - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 - - call-me-maybe@1.0.2: {} - - callsites@3.1.0: {} - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - - camelcase-css@2.0.1: {} - - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - camelcase@7.0.1: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001692 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001692: {} - - canvas@2.11.2(encoding@0.1.13): - dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) - nan: 2.22.0 - simple-get: 3.1.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - capability@0.2.5: {} - - capsolver-npm@2.0.2: - dependencies: - axios: 0.27.2 - dotenv: 16.4.7 - transitivePeerDependencies: - - debug - - cardinal@2.1.1: - dependencies: - ansicolors: 0.3.2 - redeyed: 2.1.1 - - caseless@0.12.0: {} - - ccount@2.0.1: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chai@5.1.2: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.2 - pathval: 2.0.0 - - chain-registry@1.69.94: - dependencies: - '@chain-registry/types': 0.50.50 - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - chalk@5.4.1: {} - - char-regex@1.0.2: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - chardet@0.7.0: {} - - charm@0.1.2: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - check-error@2.1.1: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - htmlparser2: 8.0.2 - parse5: 7.2.1 - parse5-htmlparser2-tree-adapter: 7.1.0 - - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.21 - - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 - - chmodrp@1.0.2: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.1 - - chownr@1.1.4: {} - - chownr@2.0.0: {} - - chownr@3.0.0: {} - - chrome-trace-event@1.0.4: {} - - chromium-bidi@0.4.7(devtools-protocol@0.0.1107588): - dependencies: - devtools-protocol: 0.0.1107588 - mitt: 3.0.0 - - ci-info@3.9.0: {} - - ci-info@4.1.0: {} - - cids@0.7.5: - dependencies: - buffer: 5.7.1 - class-is: 1.1.0 - multibase: 0.6.1 - multicodec: 1.0.4 - multihashes: 0.4.21 - - cids@0.8.3: - dependencies: - buffer: 5.7.1 - class-is: 1.1.0 - multibase: 1.0.1 - multicodec: 1.0.4 - multihashes: 1.0.1 - - cipher-base@1.0.6: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - citty@0.1.6: - dependencies: - consola: 3.4.0 - - cive@0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5): - dependencies: - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/bip32': 1.6.1 - '@scure/bip39': 1.5.1 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - cjs-module-lexer@1.4.1: {} - - class-is@1.1.0: {} - - class-transformer@0.5.1: {} - - class-variance-authority@0.7.1: - dependencies: - clsx: 2.1.1 - - cldr-segmentation@2.2.1: - dependencies: - utfstring: 2.0.2 - - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - - clean-stack@2.2.0: {} - - cli-boxes@3.0.0: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-spinners@2.6.1: {} - - cli-spinners@2.9.2: {} - - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-table@0.3.11: - dependencies: - colors: 1.0.3 - - cli-tableau@2.0.1: - dependencies: - chalk: 3.0.0 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - - cli-width@3.0.0: {} - - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-deep@0.2.4: - dependencies: - for-own: 0.1.5 - is-plain-object: 2.0.4 - kind-of: 3.2.2 - lazy-cache: 1.0.4 - shallow-clone: 0.1.2 - - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - - clone-response@1.0.3: - dependencies: - mimic-response: 1.0.1 - - clone@1.0.4: {} - - clone@2.1.2: {} - - clsx@1.2.1: {} - - clsx@2.1.1: {} - - cluster-key-slot@1.1.2: {} - - cmake-js@7.3.0: - dependencies: - axios: 1.7.9(debug@4.4.0) - debug: 4.4.0(supports-color@5.5.0) - fs-extra: 11.2.0 - lodash.isplainobject: 4.0.6 - memory-stream: 1.0.0 - node-api-headers: 1.4.0 - npmlog: 6.0.2 - rc: 1.2.8 - semver: 7.6.3 - tar: 6.2.1 - url-join: 4.0.1 - which: 2.0.2 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - cmd-shim@6.0.3: {} - - co@4.6.0: {} - - coinbase-api@1.0.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - axios: 1.7.9(debug@4.4.0) - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - jsonwebtoken: 9.0.2 - nanoid: 3.3.8 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - collapse-white-space@2.1.0: {} - - collect-v8-coverage@1.0.2: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color-support@1.1.3: {} - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - colord@2.9.3: {} - - colorette@2.0.20: {} - - colors@1.0.3: {} - - columnify@1.6.0: - dependencies: - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - combine-promises@1.2.0: {} - - combine-source-map@0.8.0: - dependencies: - convert-source-map: 1.1.3 - inline-source-map: 0.6.3 - lodash.memoize: 3.0.4 - source-map: 0.5.7 - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - comma-separated-tokens@1.0.8: {} - - comma-separated-tokens@2.0.3: {} - - command-exists@1.2.9: {} - - commander@10.0.1: {} - - commander@12.1.0: {} - - commander@2.15.1: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@5.1.0: {} - - commander@7.2.0: {} - - commander@8.3.0: {} - - comment-parser@1.4.1: {} - - common-ancestor-path@1.0.1: {} - - common-path-prefix@3.0.0: {} - - commondir@1.0.1: {} - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - compare-versions@4.1.4: {} - - complex.js@2.4.2: {} - - compressible@2.0.18: - dependencies: - mime-db: 1.53.0 - - compression@1.7.5: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.0.2 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - compromise@14.14.3: - dependencies: - efrt: 2.7.0 - grad-school: 0.0.5 - suffix-thumb: 5.0.2 - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - - concurrently@6.5.1: - dependencies: - chalk: 4.1.2 - date-fns: 2.30.0 - lodash: 4.17.21 - rxjs: 6.6.7 - spawn-command: 0.0.2 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 16.2.0 - - concurrently@9.1.0: - dependencies: - chalk: 4.1.2 - lodash: 4.17.21 - rxjs: 7.8.1 - shell-quote: 1.8.2 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.2 - - confbox@0.1.8: {} - - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - - configstore@6.0.0: - dependencies: - dot-prop: 6.0.1 - graceful-fs: 4.2.11 - unique-string: 3.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 5.1.0 - - connect-history-api-fallback@2.0.0: {} - - consola@2.15.3: {} - - consola@3.4.0: {} - - console-browserify@1.2.0: {} - - console-control-strings@1.1.0: {} - - console.table@0.10.0: - dependencies: - easy-table: 1.1.0 - - consolidated-events@2.0.2: {} - - constants-browserify@1.0.0: {} - - content-disposition@0.5.2: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - contentstream@1.0.0: - dependencies: - readable-stream: 1.0.34 - - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@7.0.2: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-core@5.0.1: - dependencies: - add-stream: 1.0.0 - conventional-changelog-writer: 6.0.1 - conventional-commits-parser: 4.0.0 - dateformat: 3.0.3 - get-pkg-repo: 4.2.1 - git-raw-commits: 3.0.0 - git-remote-origin-url: 2.0.0 - git-semver-tags: 5.0.1 - normalize-package-data: 3.0.3 - read-pkg: 3.0.0 - read-pkg-up: 3.0.0 - - conventional-changelog-preset-loader@3.0.0: {} - - conventional-changelog-writer@6.0.1: - dependencies: - conventional-commits-filter: 3.0.0 - dateformat: 3.0.3 - handlebars: 4.7.8 - json-stringify-safe: 5.0.1 - meow: 8.1.2 - semver: 7.6.3 - split: 1.0.1 - - conventional-commits-filter@3.0.0: - dependencies: - lodash.ismatch: 4.4.0 - modify-values: 1.0.1 - - conventional-commits-parser@4.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - - conventional-recommended-bump@7.0.1: - dependencies: - concat-stream: 2.0.0 - conventional-changelog-preset-loader: 3.0.0 - conventional-commits-filter: 3.0.0 - conventional-commits-parser: 4.0.0 - git-raw-commits: 3.0.0 - git-semver-tags: 5.0.1 - meow: 8.1.2 - - convert-hrtime@5.0.0: {} - - convert-source-map@1.1.3: {} - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - cookie-es@1.2.2: {} - - cookie-signature@1.0.6: {} - - cookie@0.7.1: {} - - cookie@1.0.2: {} - - copy-text-to-clipboard@3.2.0: {} - - copy-webpack-plugin@11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - fast-glob: 3.3.3 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - core-js-compat@3.40.0: - dependencies: - browserslist: 4.24.4 - - core-js-pure@3.40.0: {} - - core-js@2.6.12: {} - - core-js@3.40.0: {} - - core-util-is@1.0.2: {} - - core-util-is@1.0.3: {} - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - cose-base@1.0.3: - dependencies: - layout-base: 1.0.2 - - cose-base@2.2.0: - dependencies: - layout-base: 2.0.1 - - cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.9)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3): - dependencies: - '@types/node': 20.17.9 - cosmiconfig: 8.3.6(typescript@5.6.3) - jiti: 1.21.7 - typescript: 5.6.3 - - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.1.3: - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - - cosmiconfig@8.3.6(typescript@5.6.3): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.6.3 - - cosmiconfig@8.3.6(typescript@5.7.3): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.7.3 - - cosmjs-types@0.8.0: - dependencies: - long: 4.0.0 - protobufjs: 6.11.4 - - cosmjs-types@0.9.0: {} - - crc-32@1.2.2: {} - - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.1 - elliptic: 6.6.1 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.6 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.6 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - create-jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-require@1.1.1: {} - - croner@4.1.97: {} - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.6 - - cross-fetch@3.1.5(encoding@0.1.13): - dependencies: - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-fetch@3.2.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-fetch@4.1.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crossws@0.3.1: - dependencies: - uncrypto: 0.1.3 - - crypto-browserify@3.12.1: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - hash-base: 3.0.5 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - - crypto-hash@1.3.0: {} - - crypto-js@4.2.0: {} - - crypto-random-string@4.0.0: - dependencies: - type-fest: 1.4.0 - - css-blank-pseudo@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - css-declaration-sorter@7.2.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - css-has-pseudo@7.0.2(postcss@8.5.1): - dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - postcss-value-parser: 4.2.0 - - css-loader@6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - icss-utils: 5.1.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.1) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.1) - postcss-modules-scope: 3.2.1(postcss@8.5.1) - postcss-modules-values: 4.0.0(postcss@8.5.1) - postcss-value-parser: 4.2.0 - semver: 7.6.3 - optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - cssnano: 6.1.2(postcss@8.5.1) - jest-worker: 29.7.0 - postcss: 8.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - optionalDependencies: - clean-css: 5.3.3 - - css-prefers-color-scheme@10.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-selector-parser@1.4.1: {} - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - - css-what@6.1.0: {} - - cssdb@8.2.3: {} - - cssesc@3.0.0: {} - - cssnano-preset-advanced@6.1.2(postcss@8.5.1): - dependencies: - autoprefixer: 10.4.20(postcss@8.5.1) - browserslist: 4.24.4 - cssnano-preset-default: 6.1.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-discard-unused: 6.0.5(postcss@8.5.1) - postcss-merge-idents: 6.0.3(postcss@8.5.1) - postcss-reduce-idents: 6.0.3(postcss@8.5.1) - postcss-zindex: 6.0.2(postcss@8.5.1) - - cssnano-preset-default@6.1.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.1) - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-calc: 9.0.1(postcss@8.5.1) - postcss-colormin: 6.1.0(postcss@8.5.1) - postcss-convert-values: 6.1.0(postcss@8.5.1) - postcss-discard-comments: 6.0.2(postcss@8.5.1) - postcss-discard-duplicates: 6.0.3(postcss@8.5.1) - postcss-discard-empty: 6.0.3(postcss@8.5.1) - postcss-discard-overridden: 6.0.2(postcss@8.5.1) - postcss-merge-longhand: 6.0.5(postcss@8.5.1) - postcss-merge-rules: 6.1.1(postcss@8.5.1) - postcss-minify-font-values: 6.1.0(postcss@8.5.1) - postcss-minify-gradients: 6.0.3(postcss@8.5.1) - postcss-minify-params: 6.1.0(postcss@8.5.1) - postcss-minify-selectors: 6.0.4(postcss@8.5.1) - postcss-normalize-charset: 6.0.2(postcss@8.5.1) - postcss-normalize-display-values: 6.0.2(postcss@8.5.1) - postcss-normalize-positions: 6.0.2(postcss@8.5.1) - postcss-normalize-repeat-style: 6.0.2(postcss@8.5.1) - postcss-normalize-string: 6.0.2(postcss@8.5.1) - postcss-normalize-timing-functions: 6.0.2(postcss@8.5.1) - postcss-normalize-unicode: 6.1.0(postcss@8.5.1) - postcss-normalize-url: 6.0.2(postcss@8.5.1) - postcss-normalize-whitespace: 6.0.2(postcss@8.5.1) - postcss-ordered-values: 6.0.2(postcss@8.5.1) - postcss-reduce-initial: 6.1.0(postcss@8.5.1) - postcss-reduce-transforms: 6.0.2(postcss@8.5.1) - postcss-svgo: 6.0.3(postcss@8.5.1) - postcss-unique-selectors: 6.0.4(postcss@8.5.1) - - cssnano-preset-default@7.0.6(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.1) - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-calc: 10.1.0(postcss@8.5.1) - postcss-colormin: 7.0.2(postcss@8.5.1) - postcss-convert-values: 7.0.4(postcss@8.5.1) - postcss-discard-comments: 7.0.3(postcss@8.5.1) - postcss-discard-duplicates: 7.0.1(postcss@8.5.1) - postcss-discard-empty: 7.0.0(postcss@8.5.1) - postcss-discard-overridden: 7.0.0(postcss@8.5.1) - postcss-merge-longhand: 7.0.4(postcss@8.5.1) - postcss-merge-rules: 7.0.4(postcss@8.5.1) - postcss-minify-font-values: 7.0.0(postcss@8.5.1) - postcss-minify-gradients: 7.0.0(postcss@8.5.1) - postcss-minify-params: 7.0.2(postcss@8.5.1) - postcss-minify-selectors: 7.0.4(postcss@8.5.1) - postcss-normalize-charset: 7.0.0(postcss@8.5.1) - postcss-normalize-display-values: 7.0.0(postcss@8.5.1) - postcss-normalize-positions: 7.0.0(postcss@8.5.1) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) - postcss-normalize-string: 7.0.0(postcss@8.5.1) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) - postcss-normalize-unicode: 7.0.2(postcss@8.5.1) - postcss-normalize-url: 7.0.0(postcss@8.5.1) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) - postcss-ordered-values: 7.0.1(postcss@8.5.1) - postcss-reduce-initial: 7.0.2(postcss@8.5.1) - postcss-reduce-transforms: 7.0.0(postcss@8.5.1) - postcss-svgo: 7.0.1(postcss@8.5.1) - postcss-unique-selectors: 7.0.3(postcss@8.5.1) - - cssnano-utils@4.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - cssnano-utils@5.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - cssnano@6.1.2(postcss@8.5.1): - dependencies: - cssnano-preset-default: 6.1.2(postcss@8.5.1) - lilconfig: 3.1.3 - postcss: 8.5.1 - - cssnano@7.0.6(postcss@8.5.1): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.1) - lilconfig: 3.1.3 - postcss: 8.5.1 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - cssstyle@4.2.1: - dependencies: - '@asamuzakjp/css-color': 2.8.3 - rrweb-cssom: 0.8.0 - - csstype@3.1.3: {} - - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} - - csv-parse@5.6.0: {} - - csv-stringify@5.6.5: {} - - csv-stringify@6.5.2: {} - - csv-writer@1.6.0: {} - - csv@5.5.3: - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - - culvert@0.1.2: {} - - cwise-compiler@1.1.3: - dependencies: - uniq: 1.0.1 - - cyrb53@1.0.0: {} - - cytoscape-cose-bilkent@4.1.0(cytoscape@3.31.0): - dependencies: - cose-base: 1.0.3 - cytoscape: 3.31.0 - - cytoscape-fcose@2.2.0(cytoscape@3.31.0): - dependencies: - cose-base: 2.2.0 - cytoscape: 3.31.0 - - cytoscape@3.31.0: {} - - d3-array@2.12.1: - dependencies: - internmap: 1.0.1 - - d3-array@3.2.4: - dependencies: - internmap: 2.0.3 - - d3-axis@3.0.0: {} - - d3-brush@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3-chord@3.0.1: - dependencies: - d3-path: 3.1.0 - - d3-color@3.1.0: {} - - d3-contour@4.0.2: - dependencies: - d3-array: 3.2.4 - - d3-delaunay@6.0.4: - dependencies: - delaunator: 5.0.1 - - d3-dispatch@3.0.1: {} - - d3-drag@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - - d3-dsv@3.0.1: - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - - d3-ease@3.0.1: {} - - d3-fetch@3.0.1: - dependencies: - d3-dsv: 3.0.1 - - d3-force@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - - d3-format@3.1.0: {} - - d3-geo@3.1.1: - dependencies: - d3-array: 3.2.4 - - d3-hierarchy@3.1.2: {} - - d3-interpolate@3.0.1: - dependencies: - d3-color: 3.1.0 - - d3-path@1.0.9: {} - - d3-path@3.1.0: {} - - d3-polygon@3.0.1: {} - - d3-quadtree@3.0.1: {} - - d3-random@3.0.1: {} - - d3-sankey@0.12.3: - dependencies: - d3-array: 2.12.1 - d3-shape: 1.3.7 - - d3-scale-chromatic@3.1.0: - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - - d3-scale@4.0.2: - dependencies: - d3-array: 3.2.4 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - - d3-selection@3.0.0: {} - - d3-shape@1.3.7: - dependencies: - d3-path: 1.0.9 - - d3-shape@3.2.0: - dependencies: - d3-path: 3.1.0 - - d3-time-format@4.1.0: - dependencies: - d3-time: 3.1.0 - - d3-time@3.1.0: - dependencies: - d3-array: 3.2.4 - - d3-timer@3.0.1: {} - - d3-transition@3.0.1(d3-selection@3.0.0): - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - - d3-zoom@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3@7.9.0: - dependencies: - d3-array: 3.2.4 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.2 - d3-delaunay: 6.0.4 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.1 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.1.0 - d3-selection: 3.0.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - - dagre-d3-es@7.0.11: - dependencies: - d3: 7.9.0 - lodash-es: 4.17.21 - - damerau-levenshtein@1.0.8: {} - - dargs@7.0.0: {} - - dash-ast@1.0.0: {} - - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - - data-uri-to-buffer@0.0.3: {} - - data-uri-to-buffer@4.0.1: {} - - data-uri-to-buffer@6.0.2: {} - - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.0 - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - dataloader@2.2.3: {} - - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.26.0 - - dateformat@3.0.3: {} - - dayjs@1.11.13: {} - - dayjs@1.8.36: {} - - debounce@1.2.1: {} - - debug-fabulous@2.0.2: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - memoizee: 0.4.17 - transitivePeerDependencies: - - supports-color - - debug-logfmt@1.2.3: - dependencies: - '@jclem/logfmt2': 2.4.3 - '@kikobeats/time-span': 1.0.5 - debug-fabulous: 2.0.2 - pretty-ms: 7.0.1 - transitivePeerDependencies: - - supports-color - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - debug@4.4.0(supports-color@5.5.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 - - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decamelize@5.0.1: {} - - decimal.js-light@2.5.1: {} - - decimal.js@10.4.3: {} - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - decode-uri-component@0.2.2: {} - - decompress-response@4.2.1: - dependencies: - mimic-response: 2.1.0 - optional: true - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - dedent@1.5.3(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - deep-eql@5.0.2: {} - - deep-extend@0.6.0: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - defer-to-connect@2.0.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-lazy-prop@2.0.0: {} - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - defined@1.0.1: {} - - defu@6.1.4: {} - - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - - delaunator@5.0.1: - dependencies: - robust-predicates: 3.0.2 - - delay@5.0.0: {} - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} - - delimit-stream@0.1.0: {} - - denque@2.1.0: {} - - depd@1.1.2: {} - - depd@2.0.0: {} - - dependency-graph@0.11.0: {} - - deprecation@2.3.1: {} - - deps-sort@2.0.1: - dependencies: - JSONStream: 1.3.5 - shasum-object: 1.0.0 - subarg: 1.0.0 - through2: 2.0.5 - - dequal@2.0.3: {} - - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - destr@2.0.3: {} - - destroy@1.2.0: {} - - detect-browser@5.3.0: {} - - detect-indent@5.0.0: {} - - detect-libc@1.0.3: {} - - detect-libc@2.0.3: {} - - detect-newline@2.1.0: {} - - detect-newline@3.1.0: {} - - detect-node-es@1.1.0: {} - - detect-node@2.1.0: {} - - detect-port-alt@1.1.6: - dependencies: - address: 1.2.2 - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - detective@5.2.1: - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.8 - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - devtools-protocol@0.0.1107588: {} - - didyoumean2@7.0.4: - dependencies: - '@babel/runtime': 7.26.0 - fastest-levenshtein: 1.0.16 - lodash.deburr: 4.1.0 - - didyoumean@1.2.2: {} - - diff-match-patch@1.0.5: {} - - diff-sequences@29.6.3: {} - - diff@4.0.2: {} - - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.1 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - - dijkstrajs@1.0.3: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - direction@1.0.4: {} - - discord-api-types@0.37.100: {} - - discord-api-types@0.37.115: {} - - discord-api-types@0.37.83: {} - - discord-api-types@0.37.97: {} - - discord.js@14.16.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@discordjs/builders': 1.10.0 - '@discordjs/collection': 1.5.3 - '@discordjs/formatters': 0.5.0 - '@discordjs/rest': 2.4.0 - '@discordjs/util': 1.1.1 - '@discordjs/ws': 1.1.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@sapphire/snowflake': 3.5.3 - discord-api-types: 0.37.100 - fast-deep-equal: 3.1.3 - lodash.snakecase: 4.1.1 - tslib: 2.8.1 - undici: 6.19.8 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - dlv@1.1.3: {} - - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - autocomplete.js: 0.37.1 - clsx: 1.2.1 - gauge: 3.0.2 - hast-util-select: 4.0.2 - hast-util-to-text: 2.0.1 - hogan.js: 3.0.2 - lunr: 2.3.9 - lunr-languages: 1.14.0 - mark.js: 8.11.1 - minimatch: 3.1.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - rehype-parse: 7.0.1 - to-vfile: 6.1.0 - unified: 9.2.2 - unist-util-is: 4.1.0 - - docusaurus-plugin-typedoc@1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3))): - dependencies: - typedoc-plugin-markdown: 4.2.10(typedoc@0.26.11(typescript@5.7.3)) - - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domain-browser@1.2.0: {} - - domelementtype@2.3.0: {} - - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - optional: true - - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - dompurify@3.2.2: - optionalDependencies: - '@types/trusted-types': 2.0.7 - - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - dot-prop@6.0.1: - dependencies: - is-obj: 2.0.0 - - dotenv-expand@11.0.7: - dependencies: - dotenv: 16.4.7 - - dotenv@10.0.0: {} - - dotenv@16.4.5: {} - - dotenv@16.4.7: {} - - doublearray@0.0.2: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - duplexer2@0.1.4: - dependencies: - readable-stream: 2.3.8 - - duplexer@0.1.2: {} - - duplexify@4.1.3: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - - eastasianwidth@0.2.0: {} - - easy-table@1.1.0: - optionalDependencies: - wcwidth: 1.0.1 - - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - echogarden@2.0.7(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(encoding@0.1.13)(utf-8-validate@5.0.10)(zod@3.24.1): - dependencies: - '@aws-sdk/client-polly': 3.726.1 - '@aws-sdk/client-transcribe-streaming': 3.726.1 - '@echogarden/audio-io': 0.2.3 - '@echogarden/espeak-ng-emscripten': 0.3.3 - '@echogarden/fasttext-wasm': 0.1.0 - '@echogarden/flite-wasi': 0.1.1 - '@echogarden/fvad-wasm': 0.2.0 - '@echogarden/pffft-wasm': 0.4.2 - '@echogarden/rnnoise-wasm': 0.2.0 - '@echogarden/rubberband-wasm': 0.2.0 - '@echogarden/sonic-wasm': 0.2.0 - '@echogarden/speex-resampler-wasm': 0.3.0 - '@echogarden/svoxpico-wasm': 0.2.0 - '@echogarden/transformers-nodejs-lite': 2.17.1-lite.3(onnxruntime-node@1.20.1) - '@mozilla/readability': 0.5.0 - alawmulaw: 6.0.0 - chalk: 5.4.1 - cldr-segmentation: 2.2.1 - command-exists: 1.2.9 - compromise: 14.14.3 - fs-extra: 11.2.0 - gaxios: 6.7.1(encoding@0.1.13) - graceful-fs: 4.2.11 - html-to-text: 9.0.5 - import-meta-resolve: 4.1.0 - jieba-wasm: 2.2.0 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - json5: 2.2.3 - kuromoji: 0.1.2 - microsoft-cognitiveservices-speech-sdk: 1.42.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - msgpack-lite: 0.1.26 - onnxruntime-node: 1.20.1 - openai: 4.73.0(encoding@0.1.13)(zod@3.24.1) - sam-js: 0.3.1 - strip-ansi: 7.1.0 - tar: 7.4.3 - tiktoken: 1.0.18 - tinyld: 1.3.4 - wasm-feature-detect: 1.8.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - wtf_wikipedia: 10.3.2(encoding@0.1.13) - transitivePeerDependencies: - - aws-crt - - bufferutil - - canvas - - encoding - - supports-color - - utf-8-validate - - zod - - ed25519-hd-key@1.1.2: - dependencies: - bip39: 3.0.2 - create-hmac: 1.1.7 - tweetnacl: 1.0.3 - - ed2curve@0.3.0: - dependencies: - tweetnacl: 1.0.3 - - ee-first@1.1.1: {} - - efrt@2.7.0: {} - - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - electron-to-chromium@1.5.83: {} - - elliptic@6.5.4: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - elliptic@6.6.1: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - emittery@0.13.1: {} - - emoji-regex-xs@1.0.0: {} - - emoji-regex@10.4.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - emojilib@2.4.0: {} - - emojis-list@3.0.0: {} - - emoticon@4.1.0: {} - - encode-utf8@1.0.3: {} - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enhanced-resolve@5.18.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - - entities@2.2.0: {} - - entities@4.5.0: {} - - enumify@1.0.4: {} - - env-paths@2.2.1: {} - - env-var@7.5.0: {} - - envinfo@7.13.0: {} - - environment@1.1.0: {} - - err-code@2.0.3: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - error-polyfill@0.1.3: - dependencies: - capability: 0.2.5 - o3: 1.0.3 - u3: 0.1.1 - - es-abstract@1.23.9: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.2.7 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.0 - math-intrinsics: 1.1.0 - object-inspect: 1.13.3 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.7 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - - es-module-lexer@1.6.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - es6-weak-map@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.14.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 - - esbuild-plugin-polyfill-node@0.3.0(esbuild@0.24.2): - dependencies: - '@jspm/core': 2.1.0 - esbuild: 0.24.2 - import-meta-resolve: 3.1.1 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - - escalade@3.2.0: {} - - escape-goat@4.0.0: {} - - escape-html@1.0.3: {} - - escape-latex@1.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-config-prettier@9.1.0(eslint@9.16.0(jiti@2.4.2)): - dependencies: - eslint: 9.16.0(jiti@2.4.2) - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.0(supports-color@5.5.0) - enhanced-resolve: 5.18.0 - eslint: 9.18.0(jiti@2.4.2) - fast-glob: 3.3.3 - get-tsconfig: 4.8.1 - is-bun-module: 1.3.0 - is-glob: 4.0.3 - stable-hash: 0.0.4 - optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.2)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.2)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.2)) - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.2)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.2)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsdoc@46.10.1(eslint@8.57.1): - dependencies: - '@es-joy/jsdoccomment': 0.41.0 - are-docs-informative: 0.0.2 - comment-parser: 1.4.1 - debug: 4.4.0(supports-color@5.5.0) - escape-string-regexp: 4.0.0 - eslint: 8.57.1 - esquery: 1.6.0 - is-builtin-module: 3.2.1 - semver: 7.6.3 - spdx-expression-parse: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-plugin-jsx-a11y@6.10.2(eslint@9.18.0(jiti@2.4.2)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.10.2 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.18.0(jiti@2.4.2) - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-react-hooks@5.1.0(eslint@9.18.0(jiti@2.4.2)): - dependencies: - eslint: 9.18.0(jiti@2.4.2) - - eslint-plugin-react-refresh@0.4.18(eslint@9.18.0(jiti@2.4.2)): - dependencies: - eslint: 9.18.0(jiti@2.4.2) - - eslint-plugin-react@7.37.4(eslint@9.18.0(jiti@2.4.2)): - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 9.18.0(jiti@2.4.2) - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.1 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - eslint@9.16.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.9.1 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.16.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - eslint@9.18.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.10.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0(supports-color@5.5.0) - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - esm-env@1.2.2: {} - - esmify@2.1.1: - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - babel-plugin-import-to-require: 1.0.0 - cached-path-relative: 1.1.0 - concat-stream: 1.6.2 - duplexer2: 0.1.4 - through2: 2.0.5 - transitivePeerDependencies: - - supports-color - - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - - espeak-ng@1.0.2: {} - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - - espree@9.6.1: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrap@1.4.3: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.6 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.4 - - estree-util-value-to-estree@3.2.1: - dependencies: - '@types/estree': 1.0.6 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - esutils@2.0.3: {} - - eta@2.2.0: {} - - etag@1.8.1: {} - - ethereum-bloom-filters@1.2.0: - dependencies: - '@noble/hashes': 1.7.0 - - ethereum-cryptography@2.2.1: - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 - - ethers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@5.7.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethjs-unit@0.1.6: - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - - eval-estree-expression@2.0.3: {} - - eval@0.1.8: - dependencies: - '@types/node': 20.17.9 - require-like: 0.1.2 - - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - - event-lite@0.1.3: {} - - event-target-shim@5.0.1: {} - - eventemitter2@0.4.14: {} - - eventemitter2@5.0.1: {} - - eventemitter2@6.4.9: {} - - eventemitter3@3.1.2: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - events@3.3.0: {} - - eventsource-parser@1.1.2: {} - - eventsource-parser@2.0.1: {} - - eventsource-parser@3.0.0: {} - - eventsource@2.0.2: {} - - eventsource@3.0.2: - dependencies: - eventsource-parser: 3.0.0 - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - - execa@5.0.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.0 - human-signals: 2.1.0 - is-stream: 2.0.0 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - exit@0.1.2: {} - - expand-template@2.0.3: {} - - expect-type@1.1.0: {} - - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - - exponential-backoff@3.1.1: {} - - express-prom-bundle@7.0.2(prom-client@15.1.3): - dependencies: - '@types/express': 4.17.21 - express: 4.21.1 - on-finished: 2.4.1 - prom-client: 15.1.3 - url-value-parser: 2.2.0 - transitivePeerDependencies: - - supports-color - - express@4.21.1: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - ext@1.7.0: - dependencies: - type: 2.7.3 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend@3.0.2: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - extract-files@9.0.0: {} - - extract-zip@2.0.1: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - extrareqp2@1.0.0(debug@4.3.7): - dependencies: - follow-redirects: 1.15.9(debug@4.3.7) - transitivePeerDependencies: - - debug - - extsprintf@1.3.0: {} - - eyes@0.1.8: {} - - fast-content-type-parse@2.0.1: {} - - fast-deep-equal@3.1.3: {} - - fast-fifo@1.3.2: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-patch@3.1.1: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-redact@3.5.0: {} - - fast-safe-stringify@2.1.1: {} - - fast-stable-stringify@1.0.0: {} - - fast-uri@3.0.5: {} - - fast-xml-parser@4.4.1: - dependencies: - strnum: 1.0.5 - - fastembed@1.14.1: - dependencies: - '@anush008/tokenizers': 0.0.0 - onnxruntime-node: 1.20.1 - progress: 2.0.3 - tar: 6.2.1 - - fastest-levenshtein@1.0.16: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - fastq@1.18.0: - dependencies: - reusify: 1.0.4 - - fault@2.0.1: - dependencies: - format: 0.2.2 - - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fclone@1.0.11: {} - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - fdir@6.4.2(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - feed@4.2.2: - dependencies: - xml-js: 1.6.11 - - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - fetch-cookie@3.1.0: - dependencies: - set-cookie-parser: 2.7.1 - tough-cookie: 5.1.0 - - fflate@0.8.2: {} - - ffmpeg-static@5.2.0: - dependencies: - '@derhuerst/http-basic': 8.2.4 - env-paths: 2.2.1 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - transitivePeerDependencies: - - supports-color - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - file-type-checker@1.1.2: {} - - file-uri-to-path@1.0.0: {} - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - filename-reserved-regex@3.0.0: {} - - filenamify@6.0.0: - dependencies: - filename-reserved-regex: 3.0.0 - - filesize@8.0.7: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - filter-obj@1.1.0: {} - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - - find-process@1.4.10: - dependencies: - chalk: 4.1.2 - commander: 12.1.0 - loglevel: 1.9.2 - - find-root@1.1.0: {} - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - - find-versions@6.0.0: - dependencies: - semver-regex: 4.0.5 - super-regex: 1.0.0 - - flash-sdk@2.25.8(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@types/node': 20.17.9 - bignumber.js: 9.1.2 - bs58: 5.0.0 - dotenv: 16.4.7 - fs: 0.0.1-security - js-sha256: 0.9.0 - jsbi: 4.3.0 - node-fetch: 3.3.2 - rimraf: 5.0.10 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) - tweetnacl: 1.0.3 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - rimraf: 3.0.2 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - - flat@5.0.2: {} - - flatbuffers@1.12.0: {} - - flatted@3.3.2: {} - - fluent-ffmpeg@2.1.3: - dependencies: - async: 0.2.10 - which: 1.3.1 - - follow-redirects@1.15.9: {} - - follow-redirects@1.15.9(debug@4.3.7): - optionalDependencies: - debug: 4.3.7 - - follow-redirects@1.15.9(debug@4.4.0): - optionalDependencies: - debug: 4.4.0(supports-color@5.5.0) - - fomo-sdk-solana@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@raydium-io/raydium-sdk-v2': 0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 6.0.0 - coral-xyz3: '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - for-in@0.1.8: {} - - for-in@1.0.2: {} - - for-own@0.1.5: - dependencies: - for-in: 1.0.2 - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - forever-agent@0.6.1: {} - - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@babel/code-frame': 7.26.2 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.6.3 - tapable: 1.1.3 - typescript: 5.7.3 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - optionalDependencies: - eslint: 9.18.0(jiti@2.4.2) - - form-data-encoder@1.7.2: {} - - form-data-encoder@2.1.4: {} - - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@2.5.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - safe-buffer: 5.2.1 - - form-data@3.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - format@0.2.2: {} - - formdata-node@4.4.1: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - - formdata-node@6.0.3: {} - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - forwarded@0.2.0: {} - - fraction.js@4.3.7: {} - - fresh@0.5.2: {} - - front-matter@4.0.2: - dependencies: - js-yaml: 3.14.1 - - fs-constants@1.0.0: {} - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.2 - - fs-monkey@1.0.6: {} - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - fuels@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)): - dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/recipes': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/script': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/versions': 0.97.2 - bundle-require: 5.1.0(esbuild@0.24.2) - chalk: 4.1.2 - chokidar: 3.6.0 - commander: 12.1.0 - esbuild: 0.24.2 - glob: 10.4.5 - handlebars: 4.7.8 - joycon: 3.1.1 - lodash.camelcase: 4.3.0 - portfinder: 1.0.32 - toml: 3.0.0 - uglify-js: 3.19.3 - yup: 1.6.1 - transitivePeerDependencies: - - encoding - - supports-color - - vitest - - function-bind@1.1.2: {} - - function-timeout@1.0.2: {} - - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - - functions-have-names@1.2.3: {} - - fuse.js@7.0.0: {} - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gaxios@6.7.1(encoding@0.1.13): - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.6 - is-stream: 2.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - gcp-metadata@6.1.0(encoding@0.1.13): - dependencies: - gaxios: 6.7.1(encoding@0.1.13) - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - generate-function@2.3.1: - dependencies: - is-property: 1.0.2 - - generate-object-property@1.2.0: - dependencies: - is-property: 1.0.2 - - genlayer-js@0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2)) - typescript-parsec: 0.3.4 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - transitivePeerDependencies: - - '@typescript-eslint/parser' - - bufferutil - - eslint - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - typescript - - utf-8-validate - - zod - - gensync@1.0.0-beta.2: {} - - get-assigned-identifiers@1.2.0: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.3.0: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.7: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-nonce@1.0.1: {} - - get-own-enumerable-property-symbols@3.0.2: {} - - get-package-type@0.1.0: {} - - get-pixels-jpeg-js-upgrade@3.3.0-jpeg-js-upgrade.0: - dependencies: - data-uri-to-buffer: 0.0.3 - jpeg-js: 0.3.7 - mime-types: 2.1.35 - ndarray: 1.0.19 - ndarray-pack: 1.2.1 - node-bitmap: 0.0.1 - omggif: 1.0.10 - parse-data-uri: 0.2.0 - pngjs: 2.3.1 - request: 2.88.2 - through: 2.3.8 - - get-pkg-repo@4.2.1: - dependencies: - '@hutson/parse-repository-url': 3.0.2 - hosted-git-info: 4.1.0 - through2: 2.0.5 - yargs: 16.2.0 - - get-port@5.1.1: {} - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - get-stdin@9.0.0: {} - - get-stream@5.2.0: - dependencies: - pump: 3.0.2 - - get-stream@6.0.0: {} - - get-stream@6.0.1: {} - - get-stream@8.0.1: {} - - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - - get-uri@6.0.4: - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 - - gif-encoder@0.4.3: - dependencies: - readable-stream: 1.1.14 - - gif-frames@0.4.1: - dependencies: - get-pixels-jpeg-js-upgrade: 3.3.0-jpeg-js-upgrade.0 - multi-integer-range: 3.0.0 - save-pixels-jpeg-js-upgrade: 2.3.4-jpeg-js-upgrade.0 - - giget@1.2.3: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.12 - ohash: 1.1.4 - pathe: 1.1.2 - tar: 6.2.1 - - git-node-fs@1.0.0(js-git@0.7.8): - optionalDependencies: - js-git: 0.7.8 - - git-raw-commits@2.0.11: - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - git-raw-commits@3.0.0: - dependencies: - dargs: 7.0.0 - meow: 8.1.2 - split2: 3.2.2 - - git-remote-origin-url@2.0.0: - dependencies: - gitconfiglocal: 1.0.0 - pify: 2.3.0 - - git-semver-tags@5.0.1: - dependencies: - meow: 8.1.2 - semver: 7.6.3 - - git-sha1@0.1.2: {} - - git-up@7.0.0: - dependencies: - is-ssh: 1.4.0 - parse-url: 8.1.0 - - git-url-parse@14.0.0: - dependencies: - git-up: 7.0.0 - - gitconfiglocal@1.0.0: - dependencies: - ini: 1.3.8 - - github-from-package@0.0.0: {} - - github-slugger@1.5.0: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regexp@0.4.1: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@11.0.0: - dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - glob@9.3.5: - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.11.1 - - global-dirs@0.1.1: - dependencies: - ini: 1.3.8 - - global-dirs@3.0.1: - dependencies: - ini: 2.0.0 - - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - - globals@11.12.0: {} - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - globals@15.14.0: {} - - globals@9.18.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - globrex@0.1.2: {} - - google-auth-library@9.15.0(encoding@0.1.13): - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.7.1(encoding@0.1.13) - gcp-metadata: 6.1.0(encoding@0.1.13) - gtoken: 7.1.0(encoding@0.1.13) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - google-protobuf@3.21.4: {} - - gopd@1.2.0: {} - - got@11.8.6: - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - - got@12.6.1: - dependencies: - '@sindresorhus/is': 5.6.0 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - - gql.tada@1.8.10(graphql@16.10.0)(typescript@5.7.3): - dependencies: - '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) - '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - graphql - - graceful-fs@4.2.10: {} - - graceful-fs@4.2.11: {} - - grad-school@0.0.5: {} - - graphemer@1.4.0: {} - - graphemesplit@2.4.4: - dependencies: - js-base64: 3.7.7 - unicode-trie: 2.0.0 - - graphql-request@4.3.0(encoding@0.1.13)(graphql@16.10.0): - dependencies: - cross-fetch: 3.2.0(encoding@0.1.13) - extract-files: 9.0.0 - form-data: 3.0.2 - graphql: 16.10.0 - transitivePeerDependencies: - - encoding - - graphql-request@6.1.0(encoding@0.1.13)(graphql@16.10.0): - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - cross-fetch: 3.2.0(encoding@0.1.13) - graphql: 16.10.0 - transitivePeerDependencies: - - encoding - - graphql-tag@2.12.6(graphql@16.10.0): - dependencies: - graphql: 16.10.0 - tslib: 2.8.1 - - graphql@16.10.0: {} - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - groq-sdk@0.5.0(encoding@0.1.13): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - gtoken@7.1.0(encoding@0.1.13): - dependencies: - gaxios: 6.7.1(encoding@0.1.13) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - guid-typescript@1.0.9: {} - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - h3@1.13.1: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.1 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - - hachure-fill@0.5.2: {} - - handle-thing@2.0.1: {} - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.19.3 - - har-schema@2.0.0: {} - - har-validator@5.1.5: - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - - hard-rejection@2.1.0: {} - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.1.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - has-unicode@2.0.1: {} - - has-yarn@3.0.0: {} - - hash-base@3.0.5: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - hash-base@3.1.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-from-parse5@6.0.1: - dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 - - hast-util-from-parse5@8.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 9.0.0 - property-information: 6.5.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-has-property@1.0.4: {} - - hast-util-is-element@1.1.0: {} - - hast-util-parse-selector@2.2.5: {} - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-raw@9.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.2.1 - hast-util-from-parse5: 8.0.2 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.2.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-select@4.0.2: - dependencies: - bcp-47-match: 1.0.3 - comma-separated-tokens: 1.0.8 - css-selector-parser: 1.4.1 - direction: 1.0.4 - hast-util-has-property: 1.0.4 - hast-util-is-element: 1.1.0 - hast-util-to-string: 1.0.4 - hast-util-whitespace: 1.0.4 - not: 0.1.0 - nth-check: 2.1.1 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - unist-util-visit: 2.0.3 - zwitch: 1.0.5 - - hast-util-to-estree@3.1.1: - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - - hast-util-to-html@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.2: - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-string@1.0.4: {} - - hast-util-to-text@2.0.1: - dependencies: - hast-util-is-element: 1.1.0 - repeat-string: 1.6.1 - unist-util-find-after: 3.0.0 - - hast-util-whitespace@1.0.4: {} - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@6.0.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - - hastscript@9.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - he@1.2.0: {} - - headers-polyfill@3.3.0: {} - - hey-listen@1.0.8: {} - - hi-base32@0.5.1: {} - - history@4.10.1: - dependencies: - '@babel/runtime': 7.26.0 - loose-envify: 1.4.0 - resolve-pathname: 3.0.0 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - value-equal: 1.0.1 - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - hogan.js@3.0.2: - dependencies: - mkdirp: 0.3.0 - nopt: 1.0.10 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - hookable@5.5.3: {} - - hosted-git-info@2.8.9: {} - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - hosted-git-info@7.0.2: - dependencies: - lru-cache: 10.4.3 - - hpack.js@2.1.6: - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 - - html-entities@2.5.2: {} - - html-escaper@2.0.2: {} - - html-escaper@3.0.3: {} - - html-minifier-terser@6.1.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.37.0 - - html-minifier-terser@7.2.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 10.0.1 - entities: 4.5.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.37.0 - - html-tags@3.3.1: {} - - html-to-text@9.0.5: - dependencies: - '@selderee/plugin-htmlparser2': 0.11.0 - deepmerge: 4.3.1 - dom-serializer: 2.0.0 - htmlparser2: 8.0.2 - selderee: 0.11.0 - - html-void-elements@3.0.0: {} - - html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - htmlescape@1.1.1: {} - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} - - http-deceiver@1.2.7: {} - - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - - http-errors@1.7.2: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - - http-errors@1.8.1: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.1 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-parser-js@0.5.9: {} - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - http-proxy-middleware@2.0.7(@types/express@4.17.21): - dependencies: - '@types/http-proxy': 1.17.15 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.4.0) - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - - http-response-object@3.0.2: - dependencies: - '@types/node': 10.17.60 - - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - - http2-wrapper@1.0.3: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - https-browserify@1.0.0: {} - - https-proxy-agent@4.0.0: - dependencies: - agent-base: 5.1.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - human-signals@2.1.0: {} - - human-signals@5.0.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - husky@9.1.7: {} - - hyperliquid@1.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@msgpack/msgpack': 3.0.0-beta2 - '@types/ws': 8.5.13 - axios: 1.7.9(debug@4.4.0) - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - typescript: 5.6.3 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - icss-utils@5.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - idb-keyval@6.2.1: {} - - ieee754@1.2.1: {} - - ignore-by-default@1.0.1: {} - - ignore-walk@6.0.5: - dependencies: - minimatch: 9.0.5 - - ignore@5.3.2: {} - - image-size@1.2.0: - dependencies: - queue: 6.0.2 - - immediate@3.0.6: {} - - immediate@3.3.0: {} - - immer@9.0.21: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-lazy@4.0.0: {} - - import-local@3.1.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - - import-meta-resolve@3.1.1: {} - - import-meta-resolve@4.1.0: {} - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - indent-string@5.0.0: {} - - infima@0.2.0-alpha.45: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ini@1.3.8: {} - - ini@2.0.0: {} - - ini@4.1.3: {} - - init-package-json@6.0.3: - dependencies: - '@npmcli/package-json': 5.2.0 - npm-package-arg: 11.0.2 - promzard: 1.0.2 - read: 3.0.1 - semver: 7.6.3 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.1 - transitivePeerDependencies: - - bluebird - - inline-source-map@0.6.3: - dependencies: - source-map: 0.5.7 - - inline-style-parser@0.2.4: {} - - input-otp@1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - inquirer@8.2.6: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - - insert-module-globals@7.2.1: - dependencies: - JSONStream: 1.3.5 - acorn-node: 1.8.2 - combine-source-map: 0.8.0 - concat-stream: 1.6.2 - is-buffer: 1.1.6 - path-is-absolute: 1.0.1 - process: 0.11.10 - through2: 2.0.5 - undeclared-identifiers: 1.1.3 - xtend: 4.0.2 - - int64-buffer@0.1.10: {} - - interchain@1.10.4(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@cosmjs/amino': 0.32.2 - '@cosmjs/proto-signing': 0.32.2 - '@cosmjs/stargate': 0.32.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/tendermint-rpc': 0.32.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmology/lcd': 0.13.5 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - - internmap@1.0.1: {} - - internmap@2.0.3: {} - - interpret@1.4.0: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - ioredis@5.4.2: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@5.5.0) - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - - iota-array@1.0.0: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - ip-regex@4.3.0: {} - - ipaddr.js@1.9.1: {} - - ipaddr.js@2.2.0: {} - - ipull@3.9.2: - dependencies: - '@tinyhttp/content-disposition': 2.2.2 - async-retry: 1.3.3 - chalk: 5.4.1 - ci-info: 4.1.0 - cli-spinners: 2.9.2 - commander: 10.0.1 - eventemitter3: 5.0.1 - filenamify: 6.0.0 - fs-extra: 11.2.0 - is-unicode-supported: 2.1.0 - lifecycle-utils: 1.7.3 - lodash.debounce: 4.0.8 - lowdb: 7.0.1 - pretty-bytes: 6.1.1 - pretty-ms: 8.0.0 - sleep-promise: 9.1.0 - slice-ansi: 7.1.0 - stdout-update: 4.0.1 - strip-ansi: 7.1.0 - optionalDependencies: - '@reflink/reflink': 0.1.19 - - iron-webcrypto@1.2.1: {} - - irys@0.0.1: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 - - is-arrayish@0.2.1: {} - - is-arrayish@0.3.2: {} - - is-async-function@2.1.0: - dependencies: - call-bound: 1.0.3 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-boolean-object@1.2.1: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-buffer@1.1.6: {} - - is-buffer@2.0.5: {} - - is-builtin-module@3.2.1: - dependencies: - builtin-modules: 3.3.0 - - is-bun-module@1.3.0: - dependencies: - semver: 7.6.3 - - is-callable@1.2.7: {} - - is-ci@3.0.1: - dependencies: - ci-info: 3.9.0 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-decimal@2.0.1: {} - - is-docker@2.2.1: {} - - is-electron@2.2.2: {} - - is-extendable@0.1.1: {} - - is-extglob@2.1.1: {} - - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.3 - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.3.0 - - is-generator-fn@2.1.0: {} - - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.3 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hex-prefixed@1.0.0: {} - - is-hexadecimal@2.0.1: {} - - is-installed-globally@0.4.0: - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - - is-interactive@1.0.0: {} - - is-interactive@2.0.0: {} - - is-ip@3.1.0: - dependencies: - ip-regex: 4.3.0 - - is-ipfs@0.6.3: - dependencies: - bs58: 4.0.1 - cids: 0.7.5 - mafmt: 7.1.0 - multiaddr: 7.5.0 - multibase: 0.6.1 - multihashes: 0.4.21 - - is-lambda@1.0.1: {} - - is-map@2.0.3: {} - - is-module@1.0.0: {} - - is-my-ip-valid@1.0.1: {} - - is-my-json-valid@2.20.6: - dependencies: - generate-function: 2.3.1 - generate-object-property: 1.2.0 - is-my-ip-valid: 1.0.1 - jsonpointer: 5.0.1 - xtend: 4.0.2 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - is-npm@6.0.0: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-obj@1.0.1: {} - - is-obj@2.0.0: {} - - is-path-cwd@2.2.0: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@1.1.0: {} - - is-plain-obj@2.1.0: {} - - is-plain-obj@3.0.0: {} - - is-plain-obj@4.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-plain-object@5.0.0: {} - - is-potential-custom-element-name@1.0.1: {} - - is-promise@2.2.2: {} - - is-property@1.0.2: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.6 - - is-reference@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-regexp@1.0.0: {} - - is-retry-allowed@2.2.0: {} - - is-root@2.1.0: {} - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.3 - - is-ssh@1.4.0: - dependencies: - protocols: 2.0.1 - - is-stream@1.1.0: {} - - is-stream@2.0.0: {} - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} - - is-string@1.1.1: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.3 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - is-text-path@1.0.1: - dependencies: - text-extensions: 1.9.0 - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.18 - - is-typedarray@1.0.0: {} - - is-unicode-supported@0.1.0: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - - is-unix@2.0.10: {} - - is-weakmap@2.0.2: {} - - is-weakref@1.1.0: - dependencies: - call-bound: 1.0.3 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - is-yarn-global@0.4.1: {} - - isarray@0.0.1: {} - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isexe@3.1.1: {} - - iso-url@0.4.7: {} - - isobject@3.0.1: {} - - isomorphic-fetch@3.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - whatwg-fetch: 3.6.20 - transitivePeerDependencies: - - encoding - - isomorphic-unfetch@3.1.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5)): - dependencies: - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5) - - isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isomorphic-ws@5.0.0(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - - isstream@0.1.2: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - iterare@1.2.1: {} - - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - javascript-natural-sort@0.7.1: {} - - jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0(babel-plugin-macros@3.1.0): - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3(babel-plugin-macros@3.1.0) - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.19.71 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.10.7 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.8.4 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.0 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@29.6.3: {} - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.9 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.26.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - chalk: 4.1.2 - cjs-module-lexer: 1.4.1 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.5 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.9 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@27.5.1: - dependencies: - '@types/node': 20.17.9 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 20.17.9 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jieba-wasm@2.2.0: {} - - jiti@1.21.7: {} - - jiti@2.4.0: {} - - jiti@2.4.2: {} - - joi@17.13.3: - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - - jose@5.9.6: {} - - joycon@3.1.1: {} - - jpeg-js@0.3.7: {} - - js-base64@3.7.7: {} - - js-git@0.7.8: - dependencies: - bodec: 0.1.0 - culvert: 0.1.2 - git-sha1: 0.1.2 - pako: 0.2.9 - - js-sha1@0.7.0: {} - - js-sha256@0.11.0: {} - - js-sha256@0.9.0: {} - - js-sha3@0.8.0: {} - - js-sha512@0.8.0: {} - - js-tiktoken@1.0.15: - dependencies: - base64-js: 1.5.1 - - js-tokens@3.0.2: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsbi@3.2.5: {} - - jsbi@4.3.0: {} - - jsbn@0.1.1: {} - - jsbn@1.1.0: {} - - jsdoc-type-pratt-parser@4.0.0: {} - - jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10): - dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.1 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 - rrweb-cssom: 0.7.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 5.1.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - xml-name-validator: 5.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5): - dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.1 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 - rrweb-cssom: 0.7.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 5.1.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - xml-name-validator: 5.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - - jsesc@3.0.2: {} - - jsesc@3.1.0: {} - - json-bigint@1.0.0: - dependencies: - bignumber.js: 9.1.2 - - json-buffer@3.0.1: {} - - json-parse-better-errors@1.0.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json-parse-even-better-errors@3.0.2: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-schema@0.4.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stable-stringify@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - - json-stringify-nice@1.1.4: {} - - json-stringify-safe@5.0.1: {} - - json-text-sequence@0.1.1: - dependencies: - delimit-stream: 0.1.0 - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - json5@2.2.3: {} - - jsonc-parser@3.2.0: {} - - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 - diff-match-patch: 1.0.5 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonify@0.0.1: {} - - jsonparse@1.3.1: {} - - jsonpointer@5.0.1: {} - - jsonwebtoken@9.0.2: - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.6.3 - - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - - jsrsasign@11.1.0: {} - - jssha@3.2.0: {} - - jstat@1.9.6: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - just-diff-apply@5.5.0: {} - - just-diff@6.0.2: {} - - jwa@1.4.1: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jwa@2.0.0: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@3.2.2: - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - - jws@4.0.0: - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - - jwt-decode@3.1.2: {} - - jwt-decode@4.0.0: {} - - katex@0.16.20: - dependencies: - commander: 8.3.0 - - keccak256@1.0.6: - dependencies: - bn.js: 5.2.1 - buffer: 6.0.3 - keccak: 3.0.4 - - keccak@3.0.2: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.4 - readable-stream: 3.6.2 - - keccak@3.0.4: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.4 - readable-stream: 3.6.2 - - keytar@7.9.0: - dependencies: - node-addon-api: 4.3.0 - prebuild-install: 7.1.2 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - keyvaluestorage-interface@1.0.0: {} - - khroma@2.1.0: {} - - kind-of@2.0.1: - dependencies: - is-buffer: 1.1.6 - - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - knitwork@1.2.0: {} - - kolorist@1.8.0: {} - - kuromoji@0.1.2: - dependencies: - async: 2.6.4 - doublearray: 0.0.2 - zlibjs: 0.3.1 - - labeled-stream-splicer@2.0.2: - dependencies: - inherits: 2.0.4 - stream-splicer: 2.0.1 - - langchain@0.3.11(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)): - dependencies: - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) - js-tiktoken: 1.0.15 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 10.0.0 - yaml: 2.7.0 - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - optionalDependencies: - '@langchain/groq': 0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - axios: 1.7.9(debug@4.4.0) - handlebars: 4.7.8 - transitivePeerDependencies: - - encoding - - openai - - langchain@0.3.6(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): - dependencies: - '@langchain/core': 0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))) - js-tiktoken: 1.0.15 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langsmith: 0.2.15(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 10.0.0 - yaml: 2.7.0 - zod: 3.23.8 - zod-to-json-schema: 3.24.1(zod@3.23.8) - optionalDependencies: - '@langchain/groq': 0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) - axios: 1.7.9 - handlebars: 4.7.8 - transitivePeerDependencies: - - encoding - - openai - - langdetect@0.2.1: - dependencies: - unicode-9.0.0: 0.7.0 - - langium@3.0.0: - dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - - langsmith@0.2.15(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): - dependencies: - '@types/uuid': 10.0.0 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - semver: 7.6.3 - uuid: 10.0.0 - optionalDependencies: - openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) - - langsmith@0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)): - dependencies: - '@types/uuid': 10.0.0 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - semver: 7.6.3 - uuid: 10.0.0 - optionalDependencies: - openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - - latest-version@7.0.0: - dependencies: - package-json: 8.1.1 - - launch-editor@2.9.1: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.2 - - layout-base@1.0.2: {} - - layout-base@2.0.1: {} - - lazy-cache@0.2.7: {} - - lazy-cache@1.0.4: {} - - lazy@1.0.11: {} - - leac@0.6.0: {} - - lerna@8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(babel-plugin-macros@3.1.0)(encoding@0.1.13): - dependencies: - '@lerna/create': 8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.6.3) - '@npmcli/arborist': 7.5.3 - '@npmcli/package-json': 5.2.0 - '@npmcli/run-script': 8.1.0 - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11(encoding@0.1.13) - aproba: 2.0.0 - byte-size: 8.1.1 - chalk: 4.1.0 - clone-deep: 4.0.1 - cmd-shim: 6.0.3 - color-support: 1.1.3 - columnify: 1.6.0 - console-control-strings: 1.1.0 - conventional-changelog-angular: 7.0.0 - conventional-changelog-core: 5.0.1 - conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.6.3) - dedent: 1.5.3(babel-plugin-macros@3.1.0) - envinfo: 7.13.0 - execa: 5.0.0 - fs-extra: 11.2.0 - get-port: 5.1.1 - get-stream: 6.0.0 - git-url-parse: 14.0.0 - glob-parent: 6.0.2 - globby: 11.1.0 - graceful-fs: 4.2.11 - has-unicode: 2.0.1 - import-local: 3.1.0 - ini: 1.3.8 - init-package-json: 6.0.3 - inquirer: 8.2.6 - is-ci: 3.0.1 - is-stream: 2.0.0 - jest-diff: 29.7.0 - js-yaml: 4.1.0 - libnpmaccess: 8.0.6 - libnpmpublish: 9.0.9 - load-json-file: 6.2.0 - lodash: 4.17.21 - make-dir: 4.0.0 - minimatch: 3.0.5 - multimatch: 5.0.0 - node-fetch: 2.6.7(encoding@0.1.13) - npm-package-arg: 11.0.2 - npm-packlist: 8.0.2 - npm-registry-fetch: 17.1.0 - nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) - p-map: 4.0.0 - p-map-series: 2.1.0 - p-pipe: 3.1.0 - p-queue: 6.6.2 - p-reduce: 2.1.0 - p-waterfall: 2.1.1 - pacote: 18.0.6 - pify: 5.0.0 - read-cmd-shim: 4.0.0 - resolve-from: 5.0.0 - rimraf: 4.4.1 - semver: 7.6.3 - set-blocking: 2.0.0 - signal-exit: 3.0.7 - slash: 3.0.0 - ssri: 10.0.6 - strong-log-transformer: 2.1.0 - tar: 6.2.1 - temp-dir: 1.0.0 - typescript: 5.6.3 - upath: 2.0.1 - uuid: 10.0.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.1 - wide-align: 1.1.5 - write-file-atomic: 5.0.1 - write-pkg: 4.0.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - babel-plugin-macros - - bluebird - - debug - - encoding - - supports-color - - leven@3.1.0: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - libnpmaccess@8.0.6: - dependencies: - npm-package-arg: 11.0.2 - npm-registry-fetch: 17.1.0 - transitivePeerDependencies: - - supports-color - - libnpmpublish@9.0.9: - dependencies: - ci-info: 4.1.0 - normalize-package-data: 6.0.2 - npm-package-arg: 11.0.2 - npm-registry-fetch: 17.1.0 - proc-log: 4.2.0 - semver: 7.6.3 - sigstore: 2.3.1 - ssri: 10.0.6 - transitivePeerDependencies: - - supports-color - - libsodium-sumo@0.7.15: {} - - libsodium-wrappers-sumo@0.7.15: - dependencies: - libsodium-sumo: 0.7.15 - - libsodium-wrappers@0.7.15: - dependencies: - libsodium: 0.7.15 - - libsodium@0.7.15: {} - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - - lifecycle-utils@1.7.3: {} - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - lines-and-columns@2.0.3: {} - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - lint-staged@15.2.10: - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - debug: 4.3.7 - execa: 8.0.1 - lilconfig: 3.1.3 - listr2: 8.2.5 - micromatch: 4.0.8 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.5.1 - transitivePeerDependencies: - - supports-color - - listr2@8.2.5: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - - lit-connect-modal@0.1.11: - dependencies: - micromodal: 0.4.10 - - lit-element@3.3.3: - dependencies: - '@lit-labs/ssr-dom-shim': 1.3.0 - '@lit/reactive-element': 1.6.3 - lit-html: 2.8.0 - - lit-html@2.8.0: - dependencies: - '@types/trusted-types': 2.0.7 - - lit-siwe@1.1.8(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0): - dependencies: - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/wallet': 5.7.0 - '@spruceid/siwe-parser': 1.1.3 - '@stablelib/random': 1.0.2 - apg-js: 4.4.0 - - lit@2.8.0: - dependencies: - '@lit/reactive-element': 1.6.3 - lit-element: 3.3.3 - lit-html: 2.8.0 - - load-json-file@4.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - - load-json-file@6.2.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - - load-tsconfig@0.2.5: {} - - loader-runner@4.3.0: {} - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - loader-utils@3.3.1: {} - - local-pkg@0.4.3: {} - - local-pkg@0.5.1: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - - locate-character@3.0.0: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash-es@4.17.21: {} - - lodash.camelcase@4.3.0: {} - - lodash.debounce@4.0.8: {} - - lodash.deburr@4.1.0: {} - - lodash.defaults@4.2.0: {} - - lodash.includes@4.3.0: {} - - lodash.isarguments@3.1.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isequal@4.5.0: {} - - lodash.isfunction@3.0.9: {} - - lodash.isinteger@4.0.4: {} - - lodash.ismatch@4.4.0: {} - - lodash.isnumber@3.0.3: {} - - lodash.isplainobject@4.0.6: {} - - lodash.isstring@4.0.1: {} - - lodash.kebabcase@4.1.1: {} - - lodash.memoize@3.0.4: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.once@4.1.1: {} - - lodash.snakecase@4.1.1: {} - - lodash.sortby@4.7.0: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - log-symbols@6.0.0: - dependencies: - chalk: 5.4.1 - is-unicode-supported: 1.3.0 - - log-symbols@7.0.0: - dependencies: - is-unicode-supported: 2.1.0 - yoctocolors: 2.1.1 - - log-update@6.1.0: - dependencies: - ansi-escapes: 7.0.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - loglevel@1.9.2: {} - - long@4.0.0: {} - - long@5.2.4: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lossless-json@4.0.2: {} - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - loupe@3.1.2: {} - - lowdb@7.0.1: - dependencies: - steno: 4.0.2 - - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - lowercase-keys@2.0.0: {} - - lowercase-keys@3.0.0: {} - - lru-cache@10.4.3: {} - - lru-cache@11.0.2: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - - lru-queue@0.1.0: - dependencies: - es5-ext: 0.10.64 - - lru_map@0.4.1: {} - - lucide-react@0.469.0(react@19.0.0): - dependencies: - react: 19.0.0 - - lunr-languages@1.14.0: {} - - lunr@2.3.9: {} - - mafmt@7.1.0: - dependencies: - multiaddr: 7.5.0 - - magic-bytes.js@1.10.0: {} - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - magicast@0.3.5: - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - source-map-js: 1.2.1 - - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-dir@4.0.0: - dependencies: - semver: 7.6.3 - - make-error@1.3.6: {} - - make-fetch-happen@13.0.1: - dependencies: - '@npmcli/agent': 2.2.2 - cacache: 18.0.4 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - proc-log: 4.2.0 - promise-retry: 2.0.1 - ssri: 10.0.6 - transitivePeerDependencies: - - supports-color - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - mark.js@8.11.1: {} - - markdown-extensions@2.0.0: {} - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - markdown-table@2.0.0: - dependencies: - repeat-string: 1.6.1 - - markdown-table@3.0.4: {} - - marked@13.0.3: {} - - math-expression-evaluator@2.0.6: {} - - math-intrinsics@1.1.0: {} - - mathjs@9.5.2: - dependencies: - '@babel/runtime': 7.26.0 - complex.js: 2.4.2 - decimal.js: 10.4.3 - escape-latex: 1.2.0 - fraction.js: 4.3.7 - javascript-natural-sort: 0.7.1 - seedrandom: 3.0.5 - tiny-emitter: 2.1.0 - typed-function: 2.1.0 - - md4w@0.2.6: {} - - md5.js@1.3.5: - dependencies: - hash-base: 3.0.5 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - mdast-util-directive@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-find-and-replace@3.0.2: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@2.0.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-frontmatter@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - micromark-extension-frontmatter: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.1 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdbox@0.1.1: - dependencies: - md4w: 0.2.6 - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - mdurl@2.0.0: {} - - media-typer@0.3.0: {} - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 - - memoizee@0.4.17: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.8 - - memory-stream@1.0.0: - dependencies: - readable-stream: 3.6.2 - - memorystream@0.3.1: {} - - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 - - meow@12.1.1: {} - - meow@8.1.2: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - merge-deep@3.0.3: - dependencies: - arr-union: 3.1.0 - clone-deep: 0.2.4 - kind-of: 3.2.2 - - merge-descriptors@1.0.3: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - merkletreejs@0.3.11: - dependencies: - bignumber.js: 9.1.2 - buffer-reverse: 1.0.1 - crypto-js: 4.2.0 - treeify: 1.1.0 - web3-utils: 1.10.4 - - mermaid@11.4.1: - dependencies: - '@braintree/sanitize-url': 7.1.1 - '@iconify/utils': 2.2.1 - '@mermaid-js/parser': 0.3.0 - '@types/d3': 7.4.3 - cytoscape: 3.31.0 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.31.0) - cytoscape-fcose: 2.2.0(cytoscape@3.31.0) - d3: 7.9.0 - d3-sankey: 0.12.3 - dagre-d3-es: 7.0.11 - dayjs: 1.11.13 - dompurify: 3.2.2 - katex: 0.16.20 - khroma: 2.1.0 - lodash-es: 4.17.21 - marked: 13.0.3 - roughjs: 4.6.6 - stylis: 4.3.5 - ts-dedent: 2.2.0 - uuid: 9.0.1 - transitivePeerDependencies: - - supports-color - - methods@1.1.2: {} - - micro-ftch@0.3.1: {} - - micromark-core-commonmark@2.0.2: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-directive@3.0.2: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - parse-entities: 4.0.2 - - micromark-extension-frontmatter@2.0.0: - dependencies: - fault: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm-table@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.1 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-mdx-expression@3.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-mdx-jsx@3.0.1: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - vfile-message: 4.0.2 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.1 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.2 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-mdx-expression@2.0.2: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.1 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-events-to-acorn@2.0.2: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - vfile-message: 4.0.2 - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.1 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.0.3: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-symbol@1.1.0: {} - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@1.1.0: {} - - micromark-util-types@2.0.1: {} - - micromark@4.0.1: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - micromodal@0.4.10: {} - - microsoft-cognitiveservices-speech-sdk@1.42.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@types/webrtc': 0.0.37 - agent-base: 6.0.2 - bent: 7.3.12 - https-proxy-agent: 4.0.0 - uuid: 9.0.1 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - - mime-db@1.33.0: {} - - mime-db@1.52.0: {} - - mime-db@1.53.0: {} - - mime-types@2.1.18: - dependencies: - mime-db: 1.33.0 - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mime@3.0.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-function@5.0.1: {} - - mimic-response@1.0.1: {} - - mimic-response@2.1.0: - optional: true - - mimic-response@3.1.0: {} - - mimic-response@4.0.0: {} - - min-indent@1.0.1: {} - - mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - schema-utils: 4.3.0 - tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@3.0.5: - dependencies: - brace-expansion: 1.1.11 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@8.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - minimist@1.2.8: {} - - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.2 - - minipass-fetch@3.0.5: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@4.2.8: {} - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - minizlib@3.0.1: - dependencies: - minipass: 7.1.2 - rimraf: 5.0.10 - - mipd@0.0.7(typescript@5.7.3): - optionalDependencies: - typescript: 5.7.3 - - mitt@3.0.0: {} - - mixin-object@2.0.1: - dependencies: - for-in: 0.1.8 - is-extendable: 0.1.1 - - mixme@0.5.10: {} - - mkdirp-classic@0.5.3: {} - - mkdirp@0.3.0: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mkdirp@3.0.1: {} - - mkdist@1.6.0(typescript@5.7.3): - dependencies: - autoprefixer: 10.4.20(postcss@8.5.1) - citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.1) - defu: 6.1.4 - esbuild: 0.24.2 - jiti: 1.21.7 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.1 - postcss: 8.5.1 - postcss-nested: 6.2.0(postcss@8.5.1) - semver: 7.6.3 - tinyglobby: 0.2.10 - optionalDependencies: - typescript: 5.7.3 - - mlly@1.7.4: - dependencies: - acorn: 8.14.0 - pathe: 2.0.1 - pkg-types: 1.3.1 - ufo: 1.5.4 - - mock-socket@9.3.1: {} - - modify-values@1.0.1: {} - - module-deps@6.2.3: - dependencies: - JSONStream: 1.3.5 - browser-resolve: 2.0.0 - cached-path-relative: 1.1.0 - concat-stream: 1.6.2 - defined: 1.0.1 - detective: 5.2.1 - duplexer2: 0.1.4 - inherits: 2.0.4 - parents: 1.0.1 - readable-stream: 2.3.8 - resolve: 1.22.10 - stream-combiner2: 1.1.1 - subarg: 1.0.0 - through2: 2.0.5 - xtend: 4.0.2 - - module-details-from-path@1.0.3: {} - - moment@2.30.1: {} - - motion@10.16.2: - dependencies: - '@motionone/animation': 10.18.0 - '@motionone/dom': 10.18.0 - '@motionone/svelte': 10.16.4 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - '@motionone/vue': 10.16.4 - - mri@1.2.0: {} - - mrmime@2.0.0: {} - - ms@2.0.0: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - msgpack-lite@0.1.26: - dependencies: - event-lite: 0.1.3 - ieee754: 1.2.1 - int64-buffer: 0.1.10 - isarray: 1.0.0 - - multer@1.4.5-lts.1: - dependencies: - append-field: 1.0.0 - busboy: 1.6.0 - concat-stream: 1.6.2 - mkdirp: 0.5.6 - object-assign: 4.1.1 - type-is: 1.6.18 - xtend: 4.0.2 - - multi-integer-range@3.0.0: {} - - multiaddr@7.5.0: - dependencies: - buffer: 5.7.1 - cids: 0.8.3 - class-is: 1.1.0 - is-ip: 3.1.0 - multibase: 0.7.0 - varint: 5.0.2 - - multibase@0.6.1: - dependencies: - base-x: 3.0.10 - buffer: 5.7.1 - - multibase@0.7.0: - dependencies: - base-x: 3.0.10 - buffer: 5.7.1 - - multibase@1.0.1: - dependencies: - base-x: 3.0.10 - buffer: 5.7.1 - - multicast-dns@7.2.5: - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - - multicodec@1.0.4: - dependencies: - buffer: 5.7.1 - varint: 5.0.2 - - multiformats@9.9.0: {} - - multihashes@0.4.21: - dependencies: - buffer: 5.7.1 - multibase: 0.7.0 - varint: 5.0.2 - - multihashes@1.0.1: - dependencies: - buffer: 5.7.1 - multibase: 1.0.1 - varint: 5.0.2 - - multimatch@5.0.0: - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.0.5 - - multistream@4.1.0: - dependencies: - once: 1.4.0 - readable-stream: 3.6.2 - optional: true - - mustache@4.0.0: {} - - mustache@4.2.0: {} - - mute-stream@0.0.8: {} - - mute-stream@1.0.0: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nan@2.22.0: - optional: true - - nanoassert@1.1.0: {} - - nanoid@3.3.6: {} - - nanoid@3.3.8: {} - - nanoid@5.0.9: {} - - napi-build-utils@1.0.2: {} - - natural-compare@1.4.0: {} - - ndarray-ops@1.2.2: - dependencies: - cwise-compiler: 1.1.3 - - ndarray-pack@1.2.1: - dependencies: - cwise-compiler: 1.1.3 - ndarray: 1.0.19 - - ndarray@1.0.19: - dependencies: - iota-array: 1.0.0 - is-buffer: 1.1.6 - - near-abi@0.1.1: - dependencies: - '@types/json-schema': 7.0.15 - - near-api-js@0.44.2(encoding@0.1.13): - dependencies: - bn.js: 5.2.0 - borsh: 0.6.0 - bs58: 4.0.1 - depd: 2.0.0 - error-polyfill: 0.1.3 - http-errors: 1.8.1 - js-sha256: 0.9.0 - mustache: 4.2.0 - node-fetch: 2.7.0(encoding@0.1.13) - text-encoding-utf-8: 1.0.2 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - encoding - - near-api-js@5.0.1(encoding@0.1.13): - dependencies: - '@near-js/accounts': 1.3.1(encoding@0.1.13) - '@near-js/crypto': 1.4.1 - '@near-js/keystores': 0.2.1 - '@near-js/keystores-browser': 0.2.1 - '@near-js/keystores-node': 0.1.1 - '@near-js/providers': 1.0.1(encoding@0.1.13) - '@near-js/signers': 0.2.1 - '@near-js/transactions': 1.3.1 - '@near-js/types': 0.3.1 - '@near-js/utils': 1.0.1 - '@near-js/wallet-account': 1.3.1(encoding@0.1.13) - '@noble/curves': 1.2.0 - borsh: 1.0.0 - depd: 2.0.0 - http-errors: 1.7.2 - near-abi: 0.1.1 - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - near-hd-key@1.2.1: - dependencies: - bip39: 3.0.2 - create-hmac: 1.1.7 - tweetnacl: 1.0.3 - - near-seed-phrase@0.2.1: - dependencies: - bip39-light: 1.0.7 - bs58: 4.0.1 - near-hd-key: 1.2.1 - tweetnacl: 1.0.3 - - needle@2.4.0: - dependencies: - debug: 3.2.7 - iconv-lite: 0.4.24 - sax: 1.4.1 - transitivePeerDependencies: - - supports-color - - negotiator@0.6.3: {} - - negotiator@0.6.4: {} - - neo-async@2.6.2: {} - - net@1.0.2: {} - - netmask@2.0.2: {} - - neverthrow@7.2.0: {} - - next-tick@1.1.0: {} - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - - nock@13.5.6: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - json-stringify-safe: 5.0.1 - propagate: 2.0.1 - transitivePeerDependencies: - - supports-color - - node-abi@3.73.0: - dependencies: - semver: 7.6.3 - - node-addon-api@2.0.2: {} - - node-addon-api@4.3.0: {} - - node-addon-api@5.1.0: {} - - node-addon-api@6.1.0: {} - - node-addon-api@7.1.1: {} - - node-addon-api@8.3.0: {} - - node-api-headers@1.4.0: {} - - node-bitmap@0.0.1: {} - - node-cache@5.1.2: - dependencies: - clone: 2.1.2 - - node-domexception@1.0.0: {} - - node-emoji@2.2.0: - dependencies: - '@sindresorhus/is': 4.6.0 - char-regex: 1.0.2 - emojilib: 2.4.0 - skin-tone: 2.0.0 - - node-fetch-native@1.6.4: {} - - node-fetch@2.6.7(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - node-forge@1.3.1: {} - - node-gyp-build@4.8.4: {} - - node-gyp@10.3.1: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - make-fetch-happen: 13.0.1 - nopt: 7.2.1 - proc-log: 4.2.0 - semver: 7.6.3 - tar: 6.2.1 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - - node-int64@0.4.0: {} - - node-jose@2.2.0: - dependencies: - base64url: 3.0.1 - buffer: 6.0.3 - es6-promise: 4.2.8 - lodash: 4.17.21 - long: 5.2.4 - node-forge: 1.3.1 - pako: 2.1.0 - process: 0.11.10 - uuid: 9.0.1 - - node-llama-cpp@3.1.1(typescript@5.7.3): - dependencies: - '@huggingface/jinja': 0.3.2 - async-retry: 1.3.3 - bytes: 3.1.2 - chalk: 5.4.1 - chmodrp: 1.0.2 - cmake-js: 7.3.0 - cross-env: 7.0.3 - cross-spawn: 7.0.6 - env-var: 7.5.0 - filenamify: 6.0.0 - fs-extra: 11.2.0 - ignore: 5.3.2 - ipull: 3.9.2 - is-unicode-supported: 2.1.0 - lifecycle-utils: 1.7.3 - log-symbols: 7.0.0 - nanoid: 5.0.9 - node-addon-api: 8.3.0 - octokit: 4.1.0 - ora: 8.1.1 - pretty-ms: 9.2.0 - proper-lockfile: 4.1.2 - semver: 7.6.3 - simple-git: 3.27.0 - slice-ansi: 7.1.0 - stdout-update: 4.0.1 - strip-ansi: 7.1.0 - validate-npm-package-name: 5.0.1 - which: 4.0.0 - yargs: 17.7.2 - optionalDependencies: - '@node-llama-cpp/linux-arm64': 3.1.1 - '@node-llama-cpp/linux-armv7l': 3.1.1 - '@node-llama-cpp/linux-x64': 3.1.1 - '@node-llama-cpp/linux-x64-cuda': 3.1.1 - '@node-llama-cpp/linux-x64-vulkan': 3.1.1 - '@node-llama-cpp/mac-arm64-metal': 3.1.1 - '@node-llama-cpp/mac-x64': 3.1.1 - '@node-llama-cpp/win-arm64': 3.1.1 - '@node-llama-cpp/win-x64': 3.1.1 - '@node-llama-cpp/win-x64-cuda': 3.1.1 - '@node-llama-cpp/win-x64-vulkan': 3.1.1 - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - node-machine-id@1.1.12: {} - - node-releases@2.0.19: {} - - nodejs-whisper@0.1.18: - dependencies: - readline-sync: 1.4.10 - shelljs: 0.8.5 - - nodemon@3.1.7: - dependencies: - chokidar: 3.6.0 - debug: 4.4.0(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.6.3 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.1 - undefsafe: 2.0.5 - - nopt@1.0.10: - dependencies: - abbrev: 1.1.1 - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - - nopt@7.2.1: - dependencies: - abbrev: 2.0.0 - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.1 - semver: 7.6.3 - validate-npm-package-license: 3.0.4 - - normalize-package-data@6.0.2: - dependencies: - hosted-git-info: 7.0.2 - semver: 7.6.3 - validate-npm-package-license: 3.0.4 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-url@6.1.0: {} - - normalize-url@8.0.1: {} - - not@0.1.0: {} - - npm-bundled@3.0.1: - dependencies: - npm-normalize-package-bin: 3.0.1 - - npm-install-checks@6.3.0: - dependencies: - semver: 7.6.3 - - npm-normalize-package-bin@3.0.1: {} - - npm-package-arg@11.0.2: - dependencies: - hosted-git-info: 7.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - validate-npm-package-name: 5.0.1 - - npm-packlist@8.0.2: - dependencies: - ignore-walk: 6.0.5 - - npm-pick-manifest@9.1.0: - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.2 - semver: 7.6.3 - - npm-registry-fetch@17.1.0: - dependencies: - '@npmcli/redact': 2.0.1 - jsonparse: 1.3.1 - make-fetch-happen: 13.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minizlib: 2.1.2 - npm-package-arg: 11.0.2 - proc-log: 4.2.0 - transitivePeerDependencies: - - supports-color - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - - nprogress@0.2.0: {} - - nssocket@0.6.0: - dependencies: - eventemitter2: 0.4.14 - lazy: 1.0.11 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - null-loader@4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - number-to-bn@1.7.0: - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - - nwsapi@2.2.16: {} - - nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)): - dependencies: - '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) - '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0-rc.46 - '@zkochan/js-yaml': 0.0.7 - axios: 1.7.9 - chalk: 4.1.0 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - cliui: 8.0.1 - dotenv: 16.4.7 - dotenv-expand: 11.0.7 - enquirer: 2.3.6 - figures: 3.2.0 - flat: 5.0.2 - front-matter: 4.0.2 - ignore: 5.3.2 - jest-diff: 29.7.0 - jsonc-parser: 3.2.0 - lines-and-columns: 2.0.3 - minimatch: 9.0.3 - node-machine-id: 1.1.12 - npm-run-path: 4.0.1 - open: 8.4.2 - ora: 5.3.0 - semver: 7.6.3 - string-width: 4.2.3 - strong-log-transformer: 2.1.0 - tar-stream: 2.2.0 - tmp: 0.2.3 - tsconfig-paths: 4.2.0 - tslib: 2.8.1 - yargs: 17.7.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@nx/nx-darwin-arm64': 19.8.14 - '@nx/nx-darwin-x64': 19.8.14 - '@nx/nx-freebsd-x64': 19.8.14 - '@nx/nx-linux-arm-gnueabihf': 19.8.14 - '@nx/nx-linux-arm64-gnu': 19.8.14 - '@nx/nx-linux-arm64-musl': 19.8.14 - '@nx/nx-linux-x64-gnu': 19.8.14 - '@nx/nx-linux-x64-musl': 19.8.14 - '@nx/nx-win32-arm64-msvc': 19.8.14 - '@nx/nx-win32-x64-msvc': 19.8.14 - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - transitivePeerDependencies: - - debug - - nypm@0.3.12: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - execa: 8.0.1 - pathe: 1.1.2 - pkg-types: 1.3.1 - ufo: 1.5.4 - - o3@1.0.3: - dependencies: - capability: 0.2.5 - - oauth-sign@0.9.0: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.3: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - obuf@1.1.2: {} - - octokit@4.1.0: - dependencies: - '@octokit/app': 15.1.2 - '@octokit/core': 6.1.3 - '@octokit/oauth-app': 7.1.5 - '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.3) - '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) - '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) - '@octokit/plugin-retry': 7.1.3(@octokit/core@6.1.3) - '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.3) - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 - - ofetch@1.4.1: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 - - ohash@1.1.4: {} - - ollama-ai-provider@0.16.1(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - partial-json: 0.1.7 - optionalDependencies: - zod: 3.23.8 - - ollama-ai-provider@0.16.1(zod@3.24.1): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) - partial-json: 0.1.7 - optionalDependencies: - zod: 3.24.1 - - omggif@1.0.10: {} - - on-exit-leak-free@0.2.0: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.0.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - oniguruma-to-es@2.0.0: - dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.1.1 - regex-recursion: 5.1.1 - - only-allow@1.2.1: - dependencies: - which-pm-runs: 1.1.0 - - onnxruntime-common@1.20.0-dev.20241016-2b8fc5529b: {} - - onnxruntime-common@1.20.1: {} - - onnxruntime-node@1.20.1: - dependencies: - onnxruntime-common: 1.20.1 - tar: 7.4.3 - - onnxruntime-web@1.21.0-dev.20241024-d9ca84ef96: - dependencies: - flatbuffers: 1.12.0 - guid-typescript: 1.0.9 - long: 5.2.4 - onnxruntime-common: 1.20.0-dev.20241016-2b8fc5529b - platform: 1.3.6 - protobufjs: 7.4.0 - - open-jsonrpc-provider@0.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - axios: 0.27.2 - reconnecting-websocket: 4.4.0 - websocket: 1.0.35 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openai@4.73.0(encoding@0.1.13)(zod@3.23.8): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - zod: 3.23.8 - transitivePeerDependencies: - - encoding - - openai@4.73.0(encoding@0.1.13)(zod@3.24.1): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - zod: 3.24.1 - transitivePeerDependencies: - - encoding - - openai@4.78.1(encoding@0.1.13)(zod@3.23.8): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - zod: 3.23.8 - transitivePeerDependencies: - - encoding - - openai@4.78.1(encoding@0.1.13)(zod@3.24.1): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - zod: 3.24.1 - transitivePeerDependencies: - - encoding - - openapi-types@12.1.3: {} - - openapi-zod-client@1.18.2(react@19.0.0): - dependencies: - '@apidevtools/swagger-parser': 10.1.1(openapi-types@12.1.3) - '@liuli-util/fs-extra': 0.1.0 - '@zodios/core': 10.9.6(axios@1.7.9)(zod@3.23.8) - axios: 1.7.9 - cac: 6.7.14 - handlebars: 4.7.8 - openapi-types: 12.1.3 - openapi3-ts: 3.1.0 - pastable: 2.2.1(react@19.0.0) - prettier: 2.8.8 - tanu: 0.1.13 - ts-pattern: 5.6.0 - whence: 2.0.1 - zod: 3.23.8 - transitivePeerDependencies: - - debug - - react - - supports-color - - xstate - - openapi3-ts@3.1.0: - dependencies: - yaml: 2.7.0 - - opener@1.5.2: {} - - optional@0.1.4: {} - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - ora@5.3.0: - dependencies: - bl: 4.1.0 - chalk: 4.1.0 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - is-interactive: 1.0.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - ora@8.1.1: - dependencies: - chalk: 5.4.1 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - os-browserify@0.3.0: {} - - os-tmpdir@1.0.2: {} - - otpauth@9.3.6: - dependencies: - '@noble/hashes': 1.6.1 - - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.2.7 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - ox@0.4.2(typescript@5.7.3)(zod@3.24.1): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.1 - '@scure/bip39': 1.5.1 - abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - zod - - ox@0.4.4(typescript@5.6.3)(zod@3.24.1): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.6.3)(zod@3.24.1) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - zod - - ox@0.4.4(typescript@5.7.3)(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - zod - - ox@0.4.4(typescript@5.7.3)(zod@3.24.1): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - zod - - p-cancelable@2.1.1: {} - - p-cancelable@3.0.0: {} - - p-finally@1.0.0: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map-series@2.1.0: {} - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-pipe@3.1.0: {} - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-reduce@2.1.0: {} - - p-retry@4.6.2: - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-timeout@4.1.0: {} - - p-try@1.0.0: {} - - p-try@2.2.0: {} - - p-waterfall@2.1.1: - dependencies: - p-reduce: 2.1.0 - - pac-proxy-agent@7.1.0: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) - get-uri: 6.0.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - - package-json-from-dist@1.0.1: {} - - package-json@8.1.1: - dependencies: - got: 12.6.1 - registry-auth-token: 5.0.3 - registry-url: 6.0.1 - semver: 7.6.3 - - package-manager-detector@0.2.8: {} - - pacote@18.0.6: - dependencies: - '@npmcli/git': 5.0.8 - '@npmcli/installed-package-contents': 2.1.0 - '@npmcli/package-json': 5.2.0 - '@npmcli/promise-spawn': 7.0.2 - '@npmcli/run-script': 8.1.0 - cacache: 18.0.4 - fs-minipass: 3.0.3 - minipass: 7.1.2 - npm-package-arg: 11.0.2 - npm-packlist: 8.0.2 - npm-pick-manifest: 9.1.0 - npm-registry-fetch: 17.1.0 - proc-log: 4.2.0 - promise-retry: 2.0.1 - sigstore: 2.3.1 - ssri: 10.0.6 - tar: 6.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - pako@0.2.9: {} - - pako@1.0.11: {} - - pako@2.1.0: {} - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parents@1.0.1: - dependencies: - path-platform: 0.11.15 - - parse-asn1@5.1.7: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.5 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - - parse-cache-control@1.0.1: {} - - parse-conflict-json@3.0.1: - dependencies: - json-parse-even-better-errors: 3.0.2 - just-diff: 6.0.2 - just-diff-apply: 5.5.0 - - parse-data-uri@0.2.0: - dependencies: - data-uri-to-buffer: 0.0.3 - - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-ms@2.1.0: {} - - parse-ms@3.0.0: {} - - parse-ms@4.0.0: {} - - parse-numeric-range@1.3.0: {} - - parse-path@7.0.0: - dependencies: - protocols: 2.0.1 - - parse-url@8.1.0: - dependencies: - parse-path: 7.0.0 - - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.2.1 - - parse5@6.0.1: {} - - parse5@7.2.1: - dependencies: - entities: 4.5.0 - - parseley@0.12.1: - dependencies: - leac: 0.6.0 - peberminta: 0.9.0 - - parseurl@1.3.3: {} - - partial-json@0.1.7: {} - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - pastable@2.2.1(react@19.0.0): - dependencies: - '@babel/core': 7.26.0 - ts-toolbelt: 9.6.0 - type-fest: 3.13.1 - optionalDependencies: - react: 19.0.0 - transitivePeerDependencies: - - supports-color - - path-browserify@1.0.1: {} - - path-data-parser@0.1.0: {} - - path-exists-cli@2.0.0: - dependencies: - meow: 10.1.5 - path-exists: 5.0.0 - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-exists@5.0.0: {} - - path-is-absolute@1.0.1: {} - - path-is-inside@1.0.2: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-platform@0.11.15: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.2 - minipass: 7.1.2 - - path-to-regexp@0.1.10: {} - - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - - path-to-regexp@3.3.0: {} - - path-type@3.0.0: - dependencies: - pify: 3.0.0 - - path-type@4.0.0: {} - - path-type@5.0.0: {} - - path2d@0.2.2: - optional: true - - path@0.12.7: - dependencies: - process: 0.11.10 - util: 0.10.4 - - pathe@1.1.2: {} - - pathe@2.0.1: {} - - pathval@1.1.1: {} - - pathval@2.0.0: {} - - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - pdfjs-dist@4.7.76(encoding@0.1.13): - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - path2d: 0.2.2 - transitivePeerDependencies: - - encoding - - supports-color - - peberminta@0.9.0: {} - - pend@1.2.0: {} - - percentile@1.6.0: {} - - perfect-debounce@1.0.0: {} - - performance-now@2.1.0: {} - - pg-cloudflare@1.1.1: - optional: true - - pg-connection-string@2.7.0: {} - - pg-int8@1.0.1: {} - - pg-numeric@1.0.2: {} - - pg-pool@3.7.0(pg@8.13.1): - dependencies: - pg: 8.13.1 - - pg-protocol@1.7.0: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg-types@4.0.2: - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.2 - postgres-bytea: 3.0.0 - postgres-date: 2.1.0 - postgres-interval: 3.0.0 - postgres-range: 1.1.4 - - pg@8.13.1: - dependencies: - pg-connection-string: 2.7.0 - pg-pool: 3.7.0(pg@8.13.1) - pg-protocol: 1.7.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.2: {} - - pidtree@0.6.0: {} - - pidusage@2.0.21: - dependencies: - safe-buffer: 5.2.1 - optional: true - - pidusage@3.0.2: - dependencies: - safe-buffer: 5.2.1 - - pify@2.3.0: {} - - pify@3.0.0: {} - - pify@4.0.1: {} - - pify@5.0.0: {} - - pino-abstract-transport@0.5.0: - dependencies: - duplexify: 4.1.3 - split2: 4.2.0 - - pino-std-serializers@4.0.0: {} - - pino@7.11.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 0.2.0 - pino-abstract-transport: 0.5.0 - pino-std-serializers: 4.0.0 - process-warning: 1.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.1.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 2.8.0 - thread-stream: 0.15.2 - - pirates@4.0.6: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.1 - - pkg-up@3.1.0: - dependencies: - find-up: 3.0.0 - - pkijs@3.2.4: - dependencies: - '@noble/hashes': 1.7.0 - asn1js: 3.0.5 - bytestreamjs: 2.0.1 - pvtsutils: 1.3.6 - pvutils: 1.1.3 - tslib: 2.8.1 - - platform@1.3.6: {} - - playwright-core@1.48.2: {} - - playwright@1.48.2: - dependencies: - playwright-core: 1.48.2 - optionalDependencies: - fsevents: 2.3.2 - - pm2-axon-rpc@0.7.1: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - pm2-axon@4.0.1: - dependencies: - amp: 0.3.1 - amp-message: 0.1.2 - debug: 4.4.0(supports-color@5.5.0) - escape-string-regexp: 4.0.0 - transitivePeerDependencies: - - supports-color - - pm2-deploy@1.0.2: - dependencies: - run-series: 1.1.9 - tv4: 1.3.0 - - pm2-multimeter@0.1.2: - dependencies: - charm: 0.1.2 - - pm2-sysmonit@1.2.8: - dependencies: - async: 3.2.6 - debug: 4.4.0(supports-color@5.5.0) - pidusage: 2.0.21 - systeminformation: 5.23.5 - tx2: 1.0.5 - transitivePeerDependencies: - - supports-color - optional: true - - pm2@5.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@pm2/agent': 2.0.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@pm2/io': 6.0.1 - '@pm2/js-api': 0.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@pm2/pm2-version-check': 1.0.4 - async: 3.2.6 - blessed: 0.1.81 - chalk: 3.0.0 - chokidar: 3.6.0 - cli-tableau: 2.0.1 - commander: 2.15.1 - croner: 4.1.97 - dayjs: 1.11.13 - debug: 4.4.0(supports-color@5.5.0) - enquirer: 2.3.6 - eventemitter2: 5.0.1 - fclone: 1.0.11 - js-yaml: 4.1.0 - mkdirp: 1.0.4 - needle: 2.4.0 - pidusage: 3.0.2 - pm2-axon: 4.0.1 - pm2-axon-rpc: 0.7.1 - pm2-deploy: 1.0.2 - pm2-multimeter: 0.1.2 - promptly: 2.2.0 - semver: 7.6.3 - source-map-support: 0.5.21 - sprintf-js: 1.1.2 - vizion: 2.2.1 - optionalDependencies: - pm2-sysmonit: 1.2.8 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - pngjs-nozlib@1.0.0: {} - - pngjs@2.3.1: {} - - pngjs@5.0.0: {} - - pnpm@9.14.4: {} - - points-on-curve@0.2.0: {} - - points-on-path@0.2.1: - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - - poly1305-js@0.4.4: - dependencies: - big-integer: 1.6.52 - - portfinder@1.0.32: - dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color - - poseidon-lite@0.2.1: {} - - possible-typed-array-names@1.0.0: {} - - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-calc@10.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - postcss-value-parser: 4.2.0 - - postcss-calc@9.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-clamp@4.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2): - dependencies: - chokidar: 3.6.0 - dependency-graph: 0.11.0 - fs-extra: 11.2.0 - get-stdin: 9.0.0 - globby: 14.0.2 - picocolors: 1.1.1 - postcss: 8.5.1 - postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2) - postcss-reporter: 7.1.0(postcss@8.5.1) - pretty-hrtime: 1.0.3 - read-cache: 1.0.0 - slash: 5.1.0 - yargs: 17.7.2 - transitivePeerDependencies: - - jiti - - tsx - - postcss-color-functional-notation@7.0.7(postcss@8.5.1): - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - postcss-color-hex-alpha@10.0.0(postcss@8.5.1): - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-color-rebeccapurple@10.0.0(postcss@8.5.1): - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-colormin@6.1.0(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-convert-values@6.1.0(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-custom-media@11.0.5(postcss@8.5.1): - dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.1 - - postcss-custom-properties@14.0.4(postcss@8.5.1): - dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-custom-selectors@8.0.4(postcss@8.5.1): - dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-dir-pseudo-class@9.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-discard-comments@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-comments@7.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-discard-duplicates@6.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-duplicates@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-empty@6.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-empty@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-overridden@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-overridden@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-discard-unused@6.0.5(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-double-position-gradients@6.0.0(postcss@8.5.1): - dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-focus-visible@10.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-focus-within@9.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-font-variant@5.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-gap-properties@6.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-image-set-function@7.0.0(postcss@8.5.1): - dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-import@15.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - - postcss-js@4.0.1(postcss@8.5.1): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.1 - - postcss-lab-function@7.0.7(postcss@8.5.1): - dependencies: - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/utilities': 2.0.0(postcss@8.5.1) - postcss: 8.5.1 - - postcss-load-config@4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)): - dependencies: - lilconfig: 3.1.3 - yaml: 2.7.0 - optionalDependencies: - postcss: 8.5.1 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3) - - postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2): - dependencies: - lilconfig: 3.1.3 - yaml: 2.7.0 - optionalDependencies: - jiti: 2.4.2 - postcss: 8.5.1 - tsx: 4.19.2 - - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - jiti: 2.4.2 - postcss: 8.5.1 - tsx: 4.19.2 - yaml: 2.7.0 - - postcss-loader@7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - cosmiconfig: 8.3.6(typescript@5.7.3) - jiti: 1.21.7 - postcss: 8.5.1 - semver: 7.6.3 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - typescript - - postcss-logical@8.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-merge-idents@6.0.3(postcss@8.5.1): - dependencies: - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-merge-longhand@6.0.5(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - stylehacks: 6.1.1(postcss@8.5.1) - - postcss-merge-longhand@7.0.4(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.1) - - postcss-merge-rules@6.1.1(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-merge-rules@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@6.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-font-values@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@6.0.3(postcss@8.5.1): - dependencies: - colord: 2.9.3 - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.5.1): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-params@6.1.0(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@6.0.4(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-minify-selectors@7.0.4(postcss@8.5.1): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-modules-extract-imports@3.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-modules-local-by-default@4.2.0(postcss@8.5.1): - dependencies: - icss-utils: 5.1.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.2.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-modules-values@4.0.0(postcss@8.5.1): - dependencies: - icss-utils: 5.1.0(postcss@8.5.1) - postcss: 8.5.1 - - postcss-nested@6.2.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-nesting@13.0.1(postcss@8.5.1): - dependencies: - '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.0.0) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-normalize-charset@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-normalize-charset@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-normalize-display-values@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-display-values@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@6.1.0(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-opacity-percentage@3.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-ordered-values@6.0.2(postcss@8.5.1): - dependencies: - cssnano-utils: 4.0.2(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.1(postcss@8.5.1): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-overflow-shorthand@6.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-page-break@3.0.4(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-place@10.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-preset-env@10.1.3(postcss@8.5.1): - dependencies: - '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.1) - '@csstools/postcss-color-function': 4.0.7(postcss@8.5.1) - '@csstools/postcss-color-mix-function': 3.0.7(postcss@8.5.1) - '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.5.1) - '@csstools/postcss-exponential-functions': 2.0.6(postcss@8.5.1) - '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.1) - '@csstools/postcss-gamut-mapping': 2.0.7(postcss@8.5.1) - '@csstools/postcss-gradients-interpolation-method': 5.0.7(postcss@8.5.1) - '@csstools/postcss-hwb-function': 4.0.7(postcss@8.5.1) - '@csstools/postcss-ic-unit': 4.0.0(postcss@8.5.1) - '@csstools/postcss-initial': 2.0.0(postcss@8.5.1) - '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.1) - '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.5.1) - '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.1) - '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.1) - '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.1) - '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.1) - '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.1) - '@csstools/postcss-media-minmax': 2.0.6(postcss@8.5.1) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.1) - '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.1) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.1) - '@csstools/postcss-oklab-function': 4.0.7(postcss@8.5.1) - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) - '@csstools/postcss-random-function': 1.0.2(postcss@8.5.1) - '@csstools/postcss-relative-color-syntax': 3.0.7(postcss@8.5.1) - '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.1) - '@csstools/postcss-sign-functions': 1.1.1(postcss@8.5.1) - '@csstools/postcss-stepped-value-functions': 4.0.6(postcss@8.5.1) - '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.5.1) - '@csstools/postcss-trigonometric-functions': 4.0.6(postcss@8.5.1) - '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.1) - autoprefixer: 10.4.20(postcss@8.5.1) - browserslist: 4.24.4 - css-blank-pseudo: 7.0.1(postcss@8.5.1) - css-has-pseudo: 7.0.2(postcss@8.5.1) - css-prefers-color-scheme: 10.0.0(postcss@8.5.1) - cssdb: 8.2.3 - postcss: 8.5.1 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.1) - postcss-clamp: 4.1.0(postcss@8.5.1) - postcss-color-functional-notation: 7.0.7(postcss@8.5.1) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.1) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.1) - postcss-custom-media: 11.0.5(postcss@8.5.1) - postcss-custom-properties: 14.0.4(postcss@8.5.1) - postcss-custom-selectors: 8.0.4(postcss@8.5.1) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.1) - postcss-double-position-gradients: 6.0.0(postcss@8.5.1) - postcss-focus-visible: 10.0.1(postcss@8.5.1) - postcss-focus-within: 9.0.1(postcss@8.5.1) - postcss-font-variant: 5.0.0(postcss@8.5.1) - postcss-gap-properties: 6.0.0(postcss@8.5.1) - postcss-image-set-function: 7.0.0(postcss@8.5.1) - postcss-lab-function: 7.0.7(postcss@8.5.1) - postcss-logical: 8.0.0(postcss@8.5.1) - postcss-nesting: 13.0.1(postcss@8.5.1) - postcss-opacity-percentage: 3.0.0(postcss@8.5.1) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.1) - postcss-page-break: 3.0.4(postcss@8.5.1) - postcss-place: 10.0.0(postcss@8.5.1) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.1) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.1) - postcss-selector-not: 8.0.1(postcss@8.5.1) - - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-reduce-idents@6.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@6.1.0(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - postcss: 8.5.1 - - postcss-reduce-initial@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - postcss: 8.5.1 - - postcss-reduce-transforms@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-reduce-transforms@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss-reporter@7.1.0(postcss@8.5.1): - dependencies: - picocolors: 1.1.1 - postcss: 8.5.1 - thenby: 1.3.4 - - postcss-selector-not@8.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.0.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-sort-media-queries@5.2.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - sort-css-media-queries: 2.2.0 - - postcss-svgo@6.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-svgo@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@6.0.4(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-unique-selectors@7.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss-zindex@6.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - postcss@8.5.1: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postgres-array@2.0.0: {} - - postgres-array@3.0.2: {} - - postgres-bytea@1.0.0: {} - - postgres-bytea@3.0.0: - dependencies: - obuf: 1.1.2 - - postgres-date@1.0.7: {} - - postgres-date@2.1.0: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - postgres-interval@3.0.0: {} - - postgres-range@1.1.4: {} - - preact@10.25.4: {} - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.73.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.2 - tunnel-agent: 0.6.0 - - prelude-ls@1.2.1: {} - - prettier@2.8.8: {} - - prettier@3.4.1: {} - - pretty-bytes@6.1.1: {} - - pretty-error@4.0.0: - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - pretty-hrtime@1.0.3: {} - - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - - pretty-ms@8.0.0: - dependencies: - parse-ms: 3.0.0 - - pretty-ms@9.2.0: - dependencies: - parse-ms: 4.0.0 - - pretty-time@1.1.0: {} - - prism-media@1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0): - optionalDependencies: - '@discordjs/opus': https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13) - ffmpeg-static: 5.2.0 - - prism-react-renderer@2.3.1(react@18.3.1): - dependencies: - '@types/prismjs': 1.26.5 - clsx: 2.1.1 - react: 18.3.1 - - prismjs@1.29.0: {} - - proc-log@4.2.0: {} - - process-nextick-args@2.0.1: {} - - process-warning@1.0.0: {} - - process@0.11.10: {} - - proggy@2.0.0: {} - - progress@2.0.3: {} - - prom-client@15.1.3: - dependencies: - '@opentelemetry/api': 1.9.0 - tdigest: 0.1.2 - - promise-all-reject-late@1.0.1: {} - - promise-call-limit@3.0.2: {} - - promise-inflight@1.0.1: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - promptly@2.2.0: - dependencies: - read: 1.0.7 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - promzard@1.0.2: - dependencies: - read: 3.0.1 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - propagate@2.0.1: {} - - proper-lockfile@4.1.2: - dependencies: - graceful-fs: 4.2.11 - retry: 0.12.0 - signal-exit: 3.0.7 - - property-expr@2.0.6: {} - - property-information@5.6.0: - dependencies: - xtend: 4.0.2 - - property-information@6.5.0: {} - - proto-list@1.2.4: {} - - protobufjs@6.11.4: - 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/long': 4.0.2 - '@types/node': 20.17.9 - long: 4.0.0 - - protobufjs@7.4.0: - 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': 20.17.9 - long: 5.2.4 - - protocols@2.0.1: {} - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-agent@6.3.1: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 7.18.3 - pac-proxy-agent: 7.1.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - proxy-agent@6.4.0: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 7.18.3 - pac-proxy-agent: 7.1.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - proxy-compare@2.5.1: {} - - proxy-from-env@1.1.0: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - - pstree.remy@1.1.8: {} - - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.1 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pumpdotfun-sdk@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@rollup/plugin-json': 6.1.0(rollup@4.30.1) - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - rollup - - typescript - - utf-8-validate - - punycode.js@2.3.1: {} - - punycode@1.4.1: {} - - punycode@2.3.1: {} - - pupa@3.1.0: - dependencies: - escape-goat: 4.0.0 - - puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@puppeteer/browsers': 0.5.0(typescript@5.7.3) - chromium-bidi: 0.4.7(devtools-protocol@0.0.1107588) - cross-fetch: 3.1.5(encoding@0.1.13) - debug: 4.3.4 - devtools-protocol: 0.0.1107588 - extract-zip: 2.0.1 - https-proxy-agent: 5.0.1 - proxy-from-env: 1.1.0 - tar-fs: 2.1.1 - unbzip2-stream: 1.4.3 - ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - puppeteer-extra-plugin-capsolver@2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - axios: 1.7.9(debug@4.4.0) - capsolver-npm: 2.0.2 - puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))) - transitivePeerDependencies: - - '@types/puppeteer' - - bufferutil - - debug - - encoding - - playwright-extra - - puppeteer-core - - supports-color - - typescript - - utf-8-validate - - puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))): - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) - merge-deep: 3.0.3 - optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) - transitivePeerDependencies: - - supports-color - - puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)): - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) - deepmerge: 4.3.1 - optionalDependencies: - puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - supports-color - - puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@puppeteer/browsers': 0.5.0(typescript@5.7.3) - cosmiconfig: 8.1.3 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - proxy-from-env: 1.1.0 - puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - - pure-rand@6.1.0: {} - - pvtsutils@1.3.6: - dependencies: - tslib: 2.8.1 - - pvutils@1.1.3: {} - - qrcode@1.5.3: - dependencies: - dijkstrajs: 1.0.3 - encode-utf8: 1.0.3 - pngjs: 5.0.0 - yargs: 15.4.1 - - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - - qs@6.5.3: {} - - quais@1.0.0-alpha.25(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@bitcoinerlab/secp256k1': 1.2.0 - '@brandonblack/musig': 0.0.1-alpha.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.2.1 - aes-js: 4.0.0-beta.5 - dotenv: 16.4.7 - google-protobuf: 3.21.4 - tslib: 2.8.1 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - query-string@7.1.3: - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - - querystring-es3@0.2.1: {} - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: {} - - queue@6.0.2: - dependencies: - inherits: 2.0.4 - - quick-format-unescaped@4.0.4: {} - - quick-lru@4.0.1: {} - - quick-lru@5.1.1: {} - - radix3@1.1.2: {} - - ramda@0.30.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - range-parser@1.2.0: {} - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.3 - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - react-aiwriter@1.0.0: {} - - react-dev-utils@12.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@babel/code-frame': 7.26.2 - address: 1.2.2 - browserslist: 4.24.4 - chalk: 4.1.2 - cross-spawn: 7.0.6 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.21 - is-root: 2.1.0 - loader-utils: 3.3.1 - open: 8.4.2 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.3 - shell-quote: 1.8.2 - strip-ansi: 6.0.1 - text-table: 0.2.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-dom@19.0.0(react@19.0.0): - dependencies: - react: 19.0.0 - scheduler: 0.25.0 - - react-error-overlay@6.0.11: {} - - react-fast-compare@3.2.2: {} - - react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.26.0 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - - react-helmet-async@2.0.5(react@18.3.1): - dependencies: - invariant: 2.2.4 - react: 18.3.1 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - - react-is@16.13.1: {} - - react-is@18.3.1: {} - - react-json-view-lite@1.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@babel/runtime': 7.26.0 - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - react-remove-scroll-bar@2.3.8(@types/react@19.0.7)(react@19.0.0): - dependencies: - react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.0.7 - - react-remove-scroll@2.6.2(@types/react@19.0.7)(react@19.0.0): - dependencies: - react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.7)(react@19.0.0) - react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.7)(react@19.0.0) - use-sidecar: 1.1.3(@types/react@19.0.7)(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - - react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.26.0 - react: 18.3.1 - react-router: 5.3.4(react@18.3.1) - - react-router-dom@5.3.4(react@18.3.1): - dependencies: - '@babel/runtime': 7.26.0 - history: 4.10.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.3.1 - react-router: 5.3.4(react@18.3.1) - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - - react-router-dom@6.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@remix-run/router': 1.15.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 6.22.1(react@18.3.1) - - react-router-dom@7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-router: 7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - - react-router@5.3.4(react@18.3.1): - dependencies: - '@babel/runtime': 7.26.0 - history: 4.10.1 - hoist-non-react-statics: 3.3.2 - loose-envify: 1.4.0 - path-to-regexp: 1.9.0 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 16.13.1 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - - react-router@6.22.1(react@18.3.1): - dependencies: - '@remix-run/router': 1.15.1 - react: 18.3.1 - - react-router@7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - '@types/cookie': 0.6.0 - cookie: 1.0.2 - react: 19.0.0 - set-cookie-parser: 2.7.1 - turbo-stream: 2.4.0 - optionalDependencies: - react-dom: 19.0.0(react@19.0.0) - - react-style-singleton@2.2.3(@types/react@19.0.7)(react@19.0.0): - dependencies: - get-nonce: 1.0.1 - react: 19.0.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.0.7 - - react-waypoint@10.3.0(react@18.3.1): - dependencies: - '@babel/runtime': 7.26.0 - consolidated-events: 2.0.2 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 18.3.1 - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - react@19.0.0: {} - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - read-cmd-shim@4.0.0: {} - - read-only-stream@2.0.0: - dependencies: - readable-stream: 2.3.8 - - read-package-json-fast@3.0.2: - dependencies: - json-parse-even-better-errors: 3.0.2 - npm-normalize-package-bin: 3.0.1 - - read-pkg-up@3.0.0: - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - - read@1.0.7: - dependencies: - mute-stream: 0.0.8 - - read@3.0.1: - dependencies: - mute-stream: 1.0.0 - - readable-stream@1.0.34: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@1.1.14: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.1: {} - - reading-time@1.5.0: {} - - readline-sync@1.4.10: {} - - readline@1.3.0: {} - - readonly-date@1.0.0: {} - - real-require@0.1.0: {} - - rechoir@0.6.2: - dependencies: - resolve: 1.22.10 - - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.6 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.0(acorn@8.14.0): - dependencies: - acorn-jsx: 5.3.2(acorn@8.14.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - acorn - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.6 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - - recma-stringify@1.0.0: - dependencies: - '@types/estree': 1.0.6 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - - reconnecting-websocket@4.4.0: {} - - recursive-readdir@2.2.3: - dependencies: - minimatch: 3.1.2 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - - redeyed@2.1.1: - dependencies: - esprima: 4.0.1 - - redis-errors@1.2.0: {} - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - - reflect-metadata@0.1.13: {} - - reflect-metadata@0.2.2: {} - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.11.1: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.26.0 - - regex-recursion@5.1.1: - dependencies: - regex: 5.1.1 - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@5.1.1: - dependencies: - regex-utilities: 2.3.0 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - registry-auth-token@5.0.3: - dependencies: - '@pnpm/npm-conf': 2.3.1 - - registry-url@6.0.1: - dependencies: - rc: 1.2.8 - - regjsgen@0.8.0: {} - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - rehype-parse@7.0.1: - dependencies: - hast-util-from-parse5: 6.0.1 - parse5: 6.0.1 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.1.0 - vfile: 6.0.3 - - rehype-recma@1.0.0: - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.1 - transitivePeerDependencies: - - supports-color - - relateurl@0.2.7: {} - - remark-directive@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-emoji@4.0.1: - dependencies: - '@types/mdast': 4.0.4 - emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.2 - node-emoji: 2.2.0 - unified: 11.0.5 - - remark-frontmatter@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-frontmatter: 2.0.1 - micromark-extension-frontmatter: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdx@3.1.0: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - micromark-util-types: 2.0.1 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.1: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 - - renderkid@3.0.0: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - - repeat-string@1.6.1: {} - - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - require-in-the-middle@5.2.0: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - module-details-from-path: 1.0.3 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - require-like@0.1.2: {} - - require-main-filename@2.0.0: {} - - requires-port@1.0.0: {} - - resolve-alpn@1.2.1: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-global@1.0.0: - dependencies: - global-dirs: 0.1.1 - - resolve-pathname@3.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@2.0.1: - dependencies: - lowercase-keys: 2.0.0 - - responselike@3.0.0: - dependencies: - lowercase-keys: 3.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - retry@0.12.0: {} - - retry@0.13.1: {} - - reusify@1.0.4: {} - - rfdc@1.4.1: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rimraf@4.4.1: - dependencies: - glob: 9.3.5 - - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - - rimraf@6.0.1: - dependencies: - glob: 11.0.0 - package-json-from-dist: 1.0.1 - - ripemd160@2.0.2: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - - robot3@0.4.1: {} - - robust-predicates@3.0.2: {} - - rollup-plugin-dts@6.1.1(rollup@3.29.5)(typescript@5.7.3): - dependencies: - magic-string: 0.30.17 - rollup: 3.29.5 - typescript: 5.7.3 - optionalDependencies: - '@babel/code-frame': 7.26.2 - - rollup-plugin-visualizer@5.14.0(rollup@4.30.1): - dependencies: - open: 8.4.2 - picomatch: 4.0.2 - source-map: 0.7.4 - yargs: 17.7.2 - optionalDependencies: - rollup: 4.30.1 - - rollup@2.79.2: - optionalDependencies: - fsevents: 2.3.3 - - rollup@3.29.5: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.30.1: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.30.1 - '@rollup/rollup-android-arm64': 4.30.1 - '@rollup/rollup-darwin-arm64': 4.30.1 - '@rollup/rollup-darwin-x64': 4.30.1 - '@rollup/rollup-freebsd-arm64': 4.30.1 - '@rollup/rollup-freebsd-x64': 4.30.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 - '@rollup/rollup-linux-arm-musleabihf': 4.30.1 - '@rollup/rollup-linux-arm64-gnu': 4.30.1 - '@rollup/rollup-linux-arm64-musl': 4.30.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 - '@rollup/rollup-linux-riscv64-gnu': 4.30.1 - '@rollup/rollup-linux-s390x-gnu': 4.30.1 - '@rollup/rollup-linux-x64-gnu': 4.30.1 - '@rollup/rollup-linux-x64-musl': 4.30.1 - '@rollup/rollup-win32-arm64-msvc': 4.30.1 - '@rollup/rollup-win32-ia32-msvc': 4.30.1 - '@rollup/rollup-win32-x64-msvc': 4.30.1 - fsevents: 2.3.3 - - roughjs@4.6.6: - dependencies: - hachure-fill: 0.5.2 - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - points-on-path: 0.2.1 - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.15 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.13 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - rrweb-cssom@0.7.1: {} - - rrweb-cssom@0.8.0: {} - - rtl-detect@1.1.2: {} - - rtlcss@4.3.0: - dependencies: - escalade: 3.2.0 - picocolors: 1.1.1 - postcss: 8.5.1 - strip-json-comments: 3.1.1 - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - run-series@1.1.9: {} - - rw@1.3.3: {} - - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - - rxjs@7.8.1: - dependencies: - tslib: 2.8.1 - - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-compare@1.1.4: - dependencies: - buffer-alloc: 1.2.0 - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safe-stable-stringify@2.5.0: {} - - safer-buffer@2.1.2: {} - - sam-js@0.3.1: {} - - sandwich-stream@2.0.2: {} - - save-pixels-jpeg-js-upgrade@2.3.4-jpeg-js-upgrade.0: - dependencies: - contentstream: 1.0.0 - gif-encoder: 0.4.3 - jpeg-js: 0.3.7 - ndarray: 1.0.19 - ndarray-ops: 1.2.2 - pngjs-nozlib: 1.0.0 - through: 2.3.8 - - sax@1.4.1: {} - - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - - scale-ts@1.6.1: - optional: true - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - scheduler@0.25.0: {} - - schema-utils@2.7.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - - scrypt-js@3.0.1: {} - - scryptsy@2.1.0: {} - - scule@1.3.0: {} - - search-insights@2.17.3: {} - - secp256k1@5.0.0: - dependencies: - elliptic: 6.6.1 - node-addon-api: 5.1.0 - node-gyp-build: 4.8.4 - - secp256k1@5.0.1: - dependencies: - elliptic: 6.6.1 - node-addon-api: 5.1.0 - node-gyp-build: 4.8.4 - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - secure-json-parse@2.7.0: {} - - secure-random@1.1.2: {} - - seedrandom@3.0.5: {} - - selderee@0.11.0: - dependencies: - parseley: 0.12.1 - - select-hose@2.0.0: {} - - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - - semaphore@1.1.0: {} - - semver-diff@4.0.0: - dependencies: - semver: 7.6.3 - - semver-regex@4.0.5: {} - - semver-truncate@3.0.0: - dependencies: - semver: 7.6.3 - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.3: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - serve-handler@6.1.6: - dependencies: - bytes: 3.0.0 - content-disposition: 0.5.2 - mime-types: 2.1.18 - minimatch: 3.1.2 - path-is-inside: 1.0.2 - path-to-regexp: 3.3.0 - range-parser: 1.2.0 - - serve-index@1.9.1: - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - set-blocking@2.0.0: {} - - set-cookie-parser@2.7.1: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.7 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - - setimmediate@1.0.5: {} - - setprototypeof@1.1.0: {} - - setprototypeof@1.1.1: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - sha3@2.1.4: - dependencies: - buffer: 6.0.3 - - shallow-clone@0.1.2: - dependencies: - is-extendable: 0.1.1 - kind-of: 2.0.1 - lazy-cache: 0.2.7 - mixin-object: 2.0.1 - - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - - shallowequal@1.1.0: {} - - sharp@0.32.6: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 - semver: 7.6.3 - simple-get: 4.0.1 - tar-fs: 3.0.8 - tunnel-agent: 0.6.0 - transitivePeerDependencies: - - bare-buffer - - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - - shasum-object@1.0.0: - dependencies: - fast-safe-stringify: 2.1.1 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shell-quote@1.8.2: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - shiki@1.27.2: - dependencies: - '@shikijs/core': 1.27.2 - '@shikijs/engine-javascript': 1.27.2 - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/langs': 1.27.2 - '@shikijs/themes': 1.27.2 - '@shikijs/types': 1.27.2 - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - - shimmer@1.2.1: {} - - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sigstore@2.3.1: - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.3 - '@sigstore/sign': 2.3.2 - '@sigstore/tuf': 2.3.4 - '@sigstore/verify': 1.2.1 - transitivePeerDependencies: - - supports-color - - simple-cbor@0.4.1: {} - - simple-concat@1.0.1: {} - - simple-get@3.1.1: - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - simple-git@3.27.0: - dependencies: - '@kwsites/file-exists': 1.1.1 - '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - simple-jsonrpc-js@1.2.0: {} - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - simple-update-notifier@2.0.0: - dependencies: - semver: 7.6.3 - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - - sisteransi@1.0.5: {} - - sitemap@7.1.2: - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.4.1 - - siwe@2.3.2(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - '@spruceid/siwe-parser': 2.1.2 - '@stablelib/random': 1.0.2 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - uri-js: 4.4.1 - valid-url: 1.0.9 - - skin-tone@2.0.0: - dependencies: - unicode-emoji-modifier-base: 1.0.0 - - slash@3.0.0: {} - - slash@4.0.0: {} - - slash@5.1.0: {} - - sleep-promise@9.1.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - - smart-buffer@4.2.0: {} - - smoldot@2.0.22(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - optional: true - - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - - socks-proxy-agent@8.0.5: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - sodium-native@3.4.1: - dependencies: - node-gyp-build: 4.8.4 - - sodium-plus@0.9.0(sodium-native@3.4.1): - dependencies: - buffer: 5.7.1 - libsodium-wrappers: 0.7.15 - poly1305-js: 0.4.4 - sodium-native: 3.4.1 - typedarray-to-buffer: 3.1.5 - xsalsa20: 1.2.0 - - solana-agent-kit@1.4.0(@noble/hashes@1.7.0)(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(handlebars@4.7.8)(react@19.0.0)(sodium-native@3.4.1)(typescript@5.7.3)(utf-8-validate@5.0.10): - dependencies: - '@3land/listings-sdk': 0.0.4(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@ai-sdk/openai': 1.0.19(zod@3.24.1) - '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@cks-systems/manifest-sdk': 0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/groq': 0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/langgraph': 0.2.40(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-core': 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0) - '@metaplex-foundation/mpl-token-metadata': 3.3.0(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-bundle-defaults': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@onsol/tldparser': 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@orca-so/whirlpools-sdk': 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@pythnetwork/hermes-client': 1.3.0(axios@1.7.9) - '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@sqds/multisig': 2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@tensor-oss/tensorswap-sdk': 4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@tiplink/api': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) - ai: 4.0.38(react@19.0.0)(zod@3.24.1) - bn.js: 5.2.1 - bs58: 6.0.0 - chai: 5.1.2 - decimal.js: 10.4.3 - dotenv: 16.4.7 - flash-sdk: 2.25.8(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - form-data: 4.0.1 - langchain: 0.3.11(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) - typedoc: 0.27.6(typescript@5.7.3) - zod: 3.24.1 - transitivePeerDependencies: - - '@langchain/anthropic' - - '@langchain/aws' - - '@langchain/cerebras' - - '@langchain/cohere' - - '@langchain/google-genai' - - '@langchain/google-vertexai' - - '@langchain/google-vertexai-web' - - '@langchain/mistralai' - - '@langchain/ollama' - - '@noble/hashes' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - arweave - - axios - - borsh - - buffer - - bufferutil - - cheerio - - debug - - encoding - - fastestsmallesttextencoderdecoder - - handlebars - - peggy - - react - - sodium-native - - supports-color - - typeorm - - typescript - - utf-8-validate - - solc@0.8.28: - dependencies: - command-exists: 1.2.9 - commander: 8.3.0 - follow-redirects: 1.15.9(debug@4.4.0) - js-sha3: 0.8.0 - memorystream: 0.3.1 - semver: 5.7.2 - tmp: 0.0.33 - transitivePeerDependencies: - - debug - - sonic-boom@2.8.0: - dependencies: - atomic-sleep: 1.0.0 - - sort-css-media-queries@2.2.0: {} - - sort-json@2.0.1: - dependencies: - detect-indent: 5.0.0 - detect-newline: 2.1.0 - minimist: 1.2.8 - - sort-keys@2.0.0: - dependencies: - is-plain-obj: 1.1.0 - - source-map-js@1.2.1: {} - - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - source-map@0.7.4: {} - - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - - space-separated-tokens@1.1.5: {} - - space-separated-tokens@2.0.2: {} - - spawn-command@0.0.2: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - spdx-expression-parse@4.0.0: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - spdx-license-ids@3.0.21: {} - - spdy-transport@3.0.0: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - - spdy@4.0.2: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - - split-on-first@1.1.0: {} - - split2@3.2.2: - dependencies: - readable-stream: 3.6.2 - - split2@4.2.0: {} - - split@1.0.1: - dependencies: - through: 2.3.8 - - spok@1.5.5: - dependencies: - ansicolors: 0.3.2 - find-process: 1.4.10 - - sprintf-js@1.0.3: {} - - sprintf-js@1.1.2: {} - - sprintf-js@1.1.3: {} - - sql.js@1.12.0: {} - - sqlite-vec-darwin-arm64@0.1.6: - optional: true - - sqlite-vec-darwin-x64@0.1.6: - optional: true - - sqlite-vec-linux-x64@0.1.6: - optional: true - - sqlite-vec-windows-x64@0.1.6: - optional: true - - sqlite-vec@0.1.6: - optionalDependencies: - sqlite-vec-darwin-arm64: 0.1.6 - sqlite-vec-darwin-x64: 0.1.6 - sqlite-vec-linux-x64: 0.1.6 - sqlite-vec-windows-x64: 0.1.6 - - srcset@4.0.0: {} - - srt@0.0.3: - dependencies: - ap: 0.1.0 - - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - - ssri@10.0.6: - dependencies: - minipass: 7.1.2 - - sswr@2.1.0(svelte@5.18.0): - dependencies: - svelte: 5.18.0 - swrev: 4.0.0 - - stable-hash@0.0.4: {} - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - - stackback@0.0.2: {} - - standard-as-callback@2.1.0: {} - - starknet@6.18.0(encoding@0.1.13): - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.9 - '@scure/starknet': 1.0.0 - abi-wan-kanabi: 2.2.4 - fetch-cookie: 3.1.0 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - lossless-json: 4.0.2 - pako: 2.1.0 - starknet-types-07: '@starknet-io/types-js@0.7.10' - ts-mixer: 6.0.4 - transitivePeerDependencies: - - encoding - - statuses@1.5.0: {} - - statuses@2.0.1: {} - - std-env@3.8.0: {} - - stdin-discarder@0.2.2: {} - - stdout-update@4.0.1: - dependencies: - ansi-escapes: 6.2.1 - ansi-styles: 6.2.1 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - steno@4.0.2: {} - - stream-browserify@3.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - - stream-combiner2@1.1.1: - dependencies: - duplexer2: 0.1.4 - readable-stream: 2.3.8 - - stream-http@3.2.0: - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - xtend: 4.0.2 - - stream-parser@0.3.1: - dependencies: - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - - stream-shift@1.0.3: {} - - stream-splicer@2.0.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - stream-transform@2.1.3: - dependencies: - mixme: 0.5.10 - - streamsearch@1.1.0: {} - - streamx@2.21.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.5.4 - - strict-uri-encode@2.0.0: {} - - string-argv@0.3.2: {} - - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.9 - - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string_decoder@0.10.31: {} - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - stringify-object@3.3.0: - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom-string@1.0.0: {} - - strip-bom@3.0.0: {} - - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-hex-prefix@1.0.0: - dependencies: - is-hex-prefixed: 1.0.0 - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - strip-literal@1.3.0: - dependencies: - acorn: 8.14.0 - - strnum@1.0.5: {} - - strong-log-transformer@2.1.0: - dependencies: - duplexer: 0.1.2 - minimist: 1.2.8 - through: 2.3.8 - - style-to-object@1.0.8: - dependencies: - inline-style-parser: 0.2.4 - - stylehacks@6.1.1(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - stylehacks@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - stylis@4.2.0: {} - - stylis@4.3.5: {} - - subarg@1.0.0: - dependencies: - minimist: 1.2.8 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - suffix-thumb@5.0.2: {} - - super-regex@1.0.0: - dependencies: - function-timeout: 1.0.2 - time-span: 5.1.0 - - superstruct@0.15.5: {} - - superstruct@2.0.2: {} - - supports-color@2.0.0: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svelte@5.18.0: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 - acorn: 8.14.0 - acorn-typescript: 1.4.13(acorn@8.14.0) - aria-query: 5.3.2 - axobject-query: 4.1.0 - clsx: 2.1.1 - esm-env: 1.2.2 - esrap: 1.4.3 - is-reference: 3.0.3 - locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 - - svg-parser@2.0.4: {} - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 - - swr@2.3.0(react@19.0.0): - dependencies: - dequal: 2.0.3 - react: 19.0.0 - use-sync-external-store: 1.4.0(react@19.0.0) - - swrev@4.0.0: {} - - swrv@1.0.4(vue@3.5.13(typescript@5.6.3)): - dependencies: - vue: 3.5.13(typescript@5.6.3) - - symbol-observable@2.0.3: {} - - symbol-tree@3.2.4: {} - - symbol.inspect@1.0.1: {} - - syntax-error@1.4.0: - dependencies: - acorn-node: 1.8.2 - - systeminformation@5.23.5: {} - - tailwind-merge@2.6.0: {} - - tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3))): - dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) - - tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.1 - postcss-import: 15.1.0(postcss@8.5.1) - postcss-js: 4.0.1(postcss@8.5.1) - postcss-load-config: 4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) - postcss-nested: 6.2.0(postcss@8.5.1) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tanu@0.1.13: - dependencies: - tslib: 2.8.1 - typescript: 4.9.5 - - tapable@1.1.3: {} - - tapable@2.2.1: {} - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-fs@2.1.2: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-fs@3.0.8: - dependencies: - pump: 3.0.2 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 4.0.1 - bare-path: 3.0.0 - transitivePeerDependencies: - - bare-buffer - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.7 - fast-fifo: 1.3.2 - streamx: 2.21.1 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.4.3: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.0.1 - mkdirp: 3.0.1 - yallist: 5.0.0 - - tdigest@0.1.2: - dependencies: - bintrees: 1.0.2 - - telegraf@4.16.3(encoding@0.1.13): - dependencies: - '@telegraf/types': 7.1.0 - abort-controller: 3.0.0 - debug: 4.4.0(supports-color@5.5.0) - mri: 1.2.0 - node-fetch: 2.7.0(encoding@0.1.13) - p-timeout: 4.1.0 - safe-compare: 1.1.4 - sandwich-stream: 2.0.2 - transitivePeerDependencies: - - encoding - - supports-color - - temp-dir@1.0.0: {} - - terser-webpack-plugin@5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - - terser@5.37.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - teslabot@1.5.0: {} - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - - text-decoder@1.2.3: - dependencies: - b4a: 1.6.7 - - text-encoding-utf-8@1.0.2: {} - - text-extensions@1.9.0: {} - - text-extensions@2.4.0: {} - - text-table@0.2.0: {} - - thenby@1.3.4: {} - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - thirdweb@5.84.0(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): - dependencies: - '@coinbase/wallet-sdk': 4.2.4 - '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) - '@google/model-viewer': 2.1.1 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@passwordless-id/webauthn': 2.1.2 - '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-icons': 1.3.2(react@19.0.0) - '@radix-ui/react-tooltip': 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/react-query': 5.62.16(react@19.0.0) - '@walletconnect/ethereum-provider': 2.17.3(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10) - '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) - abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) - cross-spawn: 7.0.6 - fuse.js: 7.0.0 - input-otp: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - mipd: 0.0.7(typescript@5.7.3) - ox: 0.4.2(typescript@5.7.3)(zod@3.24.1) - uqr: 0.1.2 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - optionalDependencies: - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - react: 19.0.0 - typescript: 5.7.3 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@types/react' - - '@types/react-dom' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react-dom - - supports-color - - uploadthing - - utf-8-validate - - zod - - thread-stream@0.15.2: - dependencies: - real-require: 0.1.0 - - three@0.146.0: {} - - throttleit@2.1.0: {} - - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - - through2@4.0.2: - dependencies: - readable-stream: 3.6.2 - - through@2.3.8: {} - - thunky@1.1.0: {} - - tiktoken@1.0.18: {} - - time-span@5.1.0: - dependencies: - convert-hrtime: 5.0.0 - - timers-browserify@1.4.2: - dependencies: - process: 0.11.10 - - timers-ext@0.1.8: - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 - - tiny-case@1.0.3: {} - - tiny-emitter@2.1.0: {} - - tiny-inflate@1.0.3: {} - - tiny-invariant@1.3.3: {} - - tiny-warning@1.0.3: {} - - tinybench@2.9.0: {} - - tinyexec@0.3.2: {} - - tinyglobby@0.2.10: - dependencies: - fdir: 6.4.2(picomatch@4.0.2) - picomatch: 4.0.2 - - tinyld@1.3.4: {} - - tinypool@0.7.0: {} - - tinypool@0.8.4: {} - - tinypool@1.0.2: {} - - tinyrainbow@1.2.0: {} - - tinyspawn@1.3.3: {} - - tinyspy@2.2.1: {} - - tinyspy@3.0.2: {} - - tldts-core@6.1.72: {} - - tldts-experimental@6.1.72: - dependencies: - tldts-core: 6.1.72 - - tldts@6.1.72: - dependencies: - tldts-core: 6.1.72 - - tmp-promise@3.0.3: - dependencies: - tmp: 0.2.3 - optional: true - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.2.3: {} - - tmpl@1.0.5: {} - - to-fast-properties@1.0.3: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - to-vfile@6.1.0: - dependencies: - is-buffer: 2.0.5 - vfile: 4.2.1 - - toad-cache@3.7.0: {} - - toformat@2.0.0: {} - - together-ai@0.7.0(encoding@0.1.13): - dependencies: - '@types/node': 18.19.71 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - toidentifier@1.0.0: {} - - toidentifier@1.0.1: {} - - toml@3.0.0: {} - - toposort@2.0.2: {} - - totalist@3.0.1: {} - - touch@3.1.1: {} - - tough-cookie@2.5.0: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - tough-cookie@5.1.0: - dependencies: - tldts: 6.1.72 - - tr46@0.0.3: {} - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tr46@5.0.0: - dependencies: - punycode: 2.3.1 - - traverse@0.6.11: - dependencies: - gopd: 1.2.0 - typedarray.prototype.slice: 1.0.5 - which-typed-array: 1.1.18 - - tree-kill@1.2.2: {} - - treeify@1.1.0: {} - - treeverse@3.0.0: {} - - trim-lines@3.0.1: {} - - trim-newlines@3.0.1: {} - - trim-newlines@4.1.1: {} - - trough@1.0.5: {} - - trough@2.2.0: {} - - ts-api-utils@1.4.3(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-api-utils@2.0.0(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-dedent@2.2.0: {} - - ts-interface-checker@0.1.13: {} - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)))(typescript@5.7.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.7.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - esbuild: 0.24.2 - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)))(typescript@5.6.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.6.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(typescript@5.6.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.6.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.6.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.6.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.8.4)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.6.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - - ts-log@2.2.7: {} - - ts-mixer@6.0.4: {} - - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.71 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.9 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - optional: true - - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.9 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.7.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.10.7 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - optional: true - - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.8.4 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - - ts-pattern@5.6.0: {} - - ts-toolbelt@9.6.0: {} - - tsconfck@3.1.4(typescript@5.6.3): - optionalDependencies: - typescript: 5.6.3 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@1.14.1: {} - - tslib@1.9.3: {} - - tslib@2.7.0: {} - - tslib@2.8.1: {} - - tslog@4.9.3: {} - - tsscmp@1.0.6: {} - - tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.24.2) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.0 - debug: 4.4.0 - esbuild: 0.24.2 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) - resolve-from: 5.0.0 - rollup: 4.30.1 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.10 - tree-kill: 1.2.2 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - postcss: 8.5.1 - typescript: 5.6.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.24.2) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.0 - debug: 4.4.0(supports-color@5.5.0) - esbuild: 0.24.2 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) - resolve-from: 5.0.0 - rollup: 4.30.1 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.10 - tree-kill: 1.2.2 - optionalDependencies: - '@swc/core': 1.10.7(@swc/helpers@0.5.15) - postcss: 8.5.1 - typescript: 5.7.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - tsx@4.19.2: - dependencies: - esbuild: 0.23.1 - get-tsconfig: 4.8.1 - optionalDependencies: - fsevents: 2.3.3 - - tty-browserify@0.0.1: {} - - tuf-js@2.2.1: - dependencies: - '@tufjs/models': 2.0.1 - debug: 4.4.0 - make-fetch-happen: 13.0.1 - transitivePeerDependencies: - - supports-color - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - turbo-darwin-64@2.3.3: - optional: true - - turbo-darwin-arm64@2.3.3: - optional: true - - turbo-linux-64@2.3.3: - optional: true - - turbo-linux-arm64@2.3.3: - optional: true - - turbo-stream@2.4.0: {} - - turbo-windows-64@2.3.3: - optional: true - - turbo-windows-arm64@2.3.3: - optional: true - - turbo@2.3.3: - optionalDependencies: - turbo-darwin-64: 2.3.3 - turbo-darwin-arm64: 2.3.3 - turbo-linux-64: 2.3.3 - turbo-linux-arm64: 2.3.3 - turbo-windows-64: 2.3.3 - turbo-windows-arm64: 2.3.3 - - tv4@1.3.0: {} - - tweetnacl-util@0.13.5: {} - - tweetnacl-util@0.15.1: {} - - tweetnacl@0.14.5: {} - - tweetnacl@1.0.3: {} - - twitter-api-v2@1.19.0: {} - - tx2@1.0.5: - dependencies: - json-stringify-safe: 5.0.1 - optional: true - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-detect@4.1.0: {} - - type-fest@0.18.1: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.4.1: {} - - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - - type-fest@2.19.0: {} - - type-fest@3.13.1: {} - - type-fest@4.32.0: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - type@2.7.3: {} - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - 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.15 - - typed-array-byte-offset@1.0.4: - 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.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.10 - - typed-function@2.1.0: {} - - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray.prototype.slice@1.0.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-proto: 1.0.1 - math-intrinsics: 1.1.0 - typed-array-buffer: 1.0.3 - typed-array-byte-offset: 1.0.4 - - typedarray@0.0.6: {} - - typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3)): - dependencies: - typedoc: 0.26.11(typescript@5.7.3) - - typedoc@0.26.11(typescript@5.6.3): - dependencies: - lunr: 2.3.9 - markdown-it: 14.1.0 - minimatch: 9.0.5 - shiki: 1.27.2 - typescript: 5.6.3 - yaml: 2.7.0 - - typedoc@0.26.11(typescript@5.7.3): - dependencies: - lunr: 2.3.9 - markdown-it: 14.1.0 - minimatch: 9.0.5 - shiki: 1.27.2 - typescript: 5.7.3 - yaml: 2.7.0 - - typedoc@0.27.6(typescript@5.7.3): - dependencies: - '@gerrit0/mini-shiki': 1.27.2 - lunr: 2.3.9 - markdown-it: 14.1.0 - minimatch: 9.0.5 - typescript: 5.7.3 - yaml: 2.7.0 - - typeforce@1.18.0: {} - - typescript-collections@1.3.3: {} - - typescript-eslint@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.18.0(jiti@2.4.2) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - typescript-parsec@0.3.4: {} - - typescript@4.9.5: {} - - typescript@5.6.3: {} - - typescript@5.7.3: {} - - u3@0.1.1: {} - - uc.micro@2.1.0: {} - - ufo@1.5.4: {} - - uglify-js@3.19.3: {} - - uid@2.0.2: - dependencies: - '@lukeed/csprng': 1.1.0 - - uint8array-tools@0.0.8: {} - - uint8array-tools@0.0.9: {} - - uint8arrays@3.1.0: - dependencies: - multiformats: 9.9.0 - - umd@3.0.3: {} - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.3 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - unbuild@2.0.0(typescript@5.7.3): - dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@3.29.5) - '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.5) - '@rollup/plugin-json': 6.1.0(rollup@3.29.5) - '@rollup/plugin-node-resolve': 15.3.0(rollup@3.29.5) - '@rollup/plugin-replace': 5.0.7(rollup@3.29.5) - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - chalk: 5.4.1 - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - esbuild: 0.19.12 - globby: 13.2.2 - hookable: 5.5.3 - jiti: 1.21.7 - magic-string: 0.30.17 - mkdist: 1.6.0(typescript@5.7.3) - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.1 - pretty-bytes: 6.1.1 - rollup: 3.29.5 - rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.7.3) - scule: 1.3.0 - untyped: 1.5.2 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - sass - - supports-color - - vue-tsc - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - - uncrypto@0.1.3: {} - - undeclared-identifiers@1.1.3: - dependencies: - acorn-node: 1.8.2 - dash-ast: 1.0.0 - get-assigned-identifiers: 1.2.0 - simple-concat: 1.0.1 - xtend: 4.0.2 - - undefsafe@2.0.5: {} - - undici-types@5.26.5: {} - - undici-types@6.19.8: {} - - undici-types@6.20.0: {} - - undici@6.19.8: {} - - undici@7.2.3: {} - - unenv@1.10.0: - dependencies: - consola: 3.4.0 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - - unfetch@4.2.0: {} - - unicode-9.0.0@0.7.0: {} - - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-emoji-modifier-base@1.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicode-trie@2.0.0: - dependencies: - pako: 0.2.9 - tiny-inflate: 1.0.3 - - unicorn-magic@0.1.0: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unified@9.2.2: - dependencies: - '@types/unist': 2.0.11 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - - uniq@1.0.1: {} - - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-names-generator@4.7.1: {} - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - - unique-string@3.0.0: - dependencies: - crypto-random-string: 4.0.0 - - unist-util-find-after@3.0.0: - dependencies: - unist-util-is: 4.1.0 - - unist-util-is@4.1.0: {} - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.11 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@3.1.1: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@2.0.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universal-github-app-jwt@2.2.0: {} - - universal-user-agent@6.0.1: {} - - universal-user-agent@7.0.2: {} - - universalify@0.2.0: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - unruggable-core@0.1.1(starknet@6.18.0(encoding@0.1.13)): - dependencies: - '@uniswap/sdk-core': 6.0.0 - moment: 2.30.1 - starknet: 6.18.0(encoding@0.1.13) - - unruggable-sdk@1.4.0(starknet@6.18.0(encoding@0.1.13)): - dependencies: - '@uniswap/sdk-core': 4.2.1 - moment: 2.30.1 - starknet: 6.18.0(encoding@0.1.13) - unruggable-core: 0.1.1(starknet@6.18.0(encoding@0.1.13)) - - unstorage@1.14.4(idb-keyval@6.2.1)(ioredis@5.4.2): - dependencies: - anymatch: 3.1.3 - chokidar: 3.6.0 - destr: 2.0.3 - h3: 1.13.1 - lru-cache: 10.4.3 - node-fetch-native: 1.6.4 - ofetch: 1.4.1 - ufo: 1.5.4 - optionalDependencies: - idb-keyval: 6.2.1 - ioredis: 5.4.2 - - untyped@1.5.2: - dependencies: - '@babel/core': 7.26.0 - '@babel/standalone': 7.26.6 - '@babel/types': 7.26.5 - citty: 0.1.6 - defu: 6.1.4 - jiti: 2.4.2 - knitwork: 1.2.0 - scule: 1.3.0 - transitivePeerDependencies: - - supports-color - - unzipper@0.12.3: - dependencies: - bluebird: 3.7.2 - duplexer2: 0.1.4 - fs-extra: 11.2.0 - graceful-fs: 4.2.11 - node-int64: 0.4.0 - - upath@2.0.1: {} - - update-browserslist-db@1.1.2(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-notifier@6.0.2: - dependencies: - boxen: 7.1.1 - chalk: 5.4.1 - configstore: 6.0.0 - has-yarn: 3.0.0 - import-lazy: 4.0.0 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - is-npm: 6.0.0 - is-yarn-global: 0.4.1 - latest-version: 7.0.0 - pupa: 3.1.0 - semver: 7.6.3 - semver-diff: 4.0.0 - xdg-basedir: 5.1.0 - - uqr@0.1.2: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url-join@4.0.1: {} - - url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - optionalDependencies: - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - url-value-parser@2.2.0: {} - - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.14.0 - - use-callback-ref@1.3.3(@types/react@19.0.7)(react@19.0.0): - dependencies: - react: 19.0.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.0.7 - - use-sidecar@1.1.3(@types/react@19.0.7)(react@19.0.0): - dependencies: - detect-node-es: 1.1.0 - react: 19.0.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.0.7 - - use-sync-external-store@1.2.0(react@19.0.0): - dependencies: - react: 19.0.0 - - use-sync-external-store@1.4.0(react@19.0.0): - dependencies: - react: 19.0.0 - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.4 - - utf-8-validate@6.0.5: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - utf8@3.0.0: {} - - utfstring@2.0.2: {} - - util-deprecate@1.0.2: {} - - util@0.10.4: - dependencies: - inherits: 2.0.3 - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.0 - is-typed-array: 1.1.15 - which-typed-array: 1.1.18 - - utila@0.4.0: {} - - utility-types@3.11.0: {} - - utils-merge@1.0.1: {} - - uuid@10.0.0: {} - - uuid@11.0.3: {} - - uuid@11.0.5: {} - - uuid@3.4.0: {} - - uuid@8.3.2: {} - - uuid@9.0.1: {} - - v8-compile-cache-lib@3.0.1: {} - - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - - valibot@0.36.0: {} - - valibot@0.38.0(typescript@5.7.3): - optionalDependencies: - typescript: 5.7.3 - - valid-url@1.0.9: {} - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - validate-npm-package-name@5.0.1: {} - - valtio@1.11.2(@types/react@19.0.7)(react@19.0.0): - dependencies: - proxy-compare: 2.5.1 - use-sync-external-store: 1.2.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.7 - react: 19.0.0 - - value-equal@1.0.1: {} - - varint@5.0.2: {} - - varint@6.0.0: {} - - varuint-bitcoin@2.0.0: - dependencies: - uint8array-tools: 0.0.8 - - vary@1.1.2: {} - - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - - vfile-location@3.2.0: {} - - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 2.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@4.2.1: - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - - viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.6.3)(zod@3.24.1) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - ox: 0.4.4(typescript@5.6.3)(zod@3.24.1) - webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.4.4(typescript@5.7.3)(zod@3.23.8) - webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.4.4(typescript@5.7.3)(zod@3.24.1) - webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8): - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - ox: 0.4.4(typescript@5.7.3)(zod@3.23.8) - webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - ox: 0.4.4(typescript@5.7.3)(zod@3.24.1) - webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - vite-node@0.34.6(@types/node@20.17.9)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - mlly: 1.7.4 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@1.1.3(@types/node@22.10.7)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@1.2.1(@types/node@20.17.9)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@1.2.1(@types/node@22.10.7)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.4(@types/node@20.17.9)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - pathe: 1.1.2 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.4(@types/node@22.10.7)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.5(@types/node@20.17.9)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.5(@types/node@22.10.7)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.8(@types/node@22.10.7)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-node@2.1.8(@types/node@22.8.4)(terser@5.37.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) - es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.4.11(@types/node@22.8.4)(terser@5.37.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-compression@0.5.1(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): - dependencies: - chalk: 4.1.2 - debug: 4.4.0(supports-color@5.5.0) - fs-extra: 10.1.0 - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - - vite-tsconfig-paths@4.3.2(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0)): - dependencies: - debug: 4.4.0(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.6.3) - optionalDependencies: - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - typescript - - vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): - dependencies: - debug: 4.4.0(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.6.3) - optionalDependencies: - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - - typescript - - vite@5.4.11(@types/node@20.17.9)(terser@5.37.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.1 - rollup: 4.30.1 - optionalDependencies: - '@types/node': 20.17.9 - fsevents: 2.3.3 - terser: 5.37.0 - - vite@5.4.11(@types/node@22.10.7)(terser@5.37.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.1 - rollup: 4.30.1 - optionalDependencies: - '@types/node': 22.10.7 - fsevents: 2.3.3 - terser: 5.37.0 - - vite@5.4.11(@types/node@22.8.4)(terser@5.37.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.1 - rollup: 4.30.1 - optionalDependencies: - '@types/node': 22.8.4 - fsevents: 2.3.3 - terser: 5.37.0 - - vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): - dependencies: - esbuild: 0.24.2 - postcss: 8.5.1 - rollup: 4.30.1 - optionalDependencies: - '@types/node': 22.10.7 - fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.37.0 - tsx: 4.19.2 - yaml: 2.7.0 - - vitest@0.34.6(@vitest/ui@0.34.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(playwright@1.48.2)(terser@5.37.0): - dependencies: - '@types/chai': 4.3.20 - '@types/chai-subset': 1.3.5 - '@types/node': 20.17.9 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.14.0 - acorn-walk: 8.3.4 - cac: 6.7.14 - chai: 4.5.0 - debug: 4.4.0(supports-color@5.5.0) - local-pkg: 0.4.3 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.8.0 - strip-literal: 1.3.0 - tinybench: 2.9.0 - tinypool: 0.7.0 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vite-node: 0.34.6(@types/node@20.17.9)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@vitest/ui': 0.34.7(vitest@0.34.6) - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - playwright: 1.48.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 1.1.3 - '@vitest/runner': 1.1.3 - '@vitest/snapshot': 1.1.3 - '@vitest/spy': 1.1.3 - '@vitest/utils': 1.1.3 - acorn-walk: 8.3.4 - cac: 6.7.14 - chai: 4.5.0 - debug: 4.4.0(supports-color@5.5.0) - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.8.0 - strip-literal: 1.3.0 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 1.1.3(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@1.2.1(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): - dependencies: - '@vitest/expect': 1.2.1 - '@vitest/runner': 1.2.1 - '@vitest/snapshot': 1.2.1 - '@vitest/spy': 1.2.1 - '@vitest/utils': 1.2.1 - acorn-walk: 8.3.4 - cac: 6.7.14 - chai: 4.5.0 - debug: 4.4.0 - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.8.0 - strip-literal: 1.3.0 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vite-node: 1.2.1(@types/node@20.17.9)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.17.9 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 1.2.1 - '@vitest/runner': 1.2.1 - '@vitest/snapshot': 1.2.1 - '@vitest/spy': 1.2.1 - '@vitest/utils': 1.2.1 - acorn-walk: 8.3.4 - cac: 6.7.14 - chai: 4.5.0 - debug: 4.4.0(supports-color@5.5.0) - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.8.0 - strip-literal: 1.3.0 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 1.2.1(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.4(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.4 - '@vitest/snapshot': 2.1.4 - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vite-node: 2.1.4(@types/node@20.17.9)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.17.9 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.4 - '@vitest/snapshot': 2.1.4 - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 2.1.4(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.4 - '@vitest/snapshot': 2.1.4 - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 2.1.4(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.5 - '@vitest/snapshot': 2.1.5 - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 - chai: 5.1.2 - debug: 4.4.0 - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - vite-node: 2.1.5(@types/node@20.17.9)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.17.9 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.5 - '@vitest/snapshot': 2.1.5 - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 2.1.5(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.7)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.10.7 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.8(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.8.4)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.8.4)(terser@5.37.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.8.4 - jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vizion@2.2.1: - dependencies: - async: 2.6.4 - git-node-fs: 1.0.0(js-git@0.7.8) - ini: 1.3.8 - js-git: 0.7.8 - - vlq@2.0.4: {} - - vm-browserify@1.1.2: {} - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-uri@3.0.8: {} - - vue@3.5.13(typescript@5.6.3): - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.6.3)) - '@vue/shared': 3.5.13 - optionalDependencies: - typescript: 5.6.3 - - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - - walk-up-path@3.0.1: {} - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - wasm-feature-detect@1.8.0: {} - - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wav-encoder@1.3.0: {} - - wav@1.0.2: - dependencies: - buffer-alloc: 1.2.0 - buffer-from: 1.1.2 - debug: 2.6.9 - readable-stream: 1.1.14 - stream-parser: 0.3.1 - transitivePeerDependencies: - - supports-color - - wavefile@11.0.0: {} - - wbuf@1.7.3: - dependencies: - minimalistic-assert: 1.0.1 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web-namespaces@1.1.4: {} - - web-namespaces@2.0.1: {} - - web-streams-polyfill@3.3.3: {} - - web-streams-polyfill@4.0.0-beta.3: {} - - web-vitals@3.5.2: {} - - web3-core@4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5): - dependencies: - web3-errors: 1.3.1 - web3-eth-accounts: 4.3.1 - web3-eth-iban: 4.0.7 - web3-providers-http: 4.2.0(encoding@0.1.13) - web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - optionalDependencies: - web3-providers-ipc: 4.0.7 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - web3-errors@1.3.1: - dependencies: - web3-types: 1.10.0 - - web3-eth-abi@4.4.1(typescript@5.7.3)(zod@3.24.1): - dependencies: - abitype: 0.7.1(typescript@5.7.3)(zod@3.24.1) - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - typescript - - zod - - web3-eth-accounts@4.3.1: - dependencies: - '@ethereumjs/rlp': 4.0.1 - crc-32: 1.2.2 - ethereum-cryptography: 2.2.1 - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - - web3-eth-contract@4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - '@ethereumjs/rlp': 5.0.2 - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.24.1) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - - web3-eth-ens@4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - - web3-eth-iban@4.0.7: - dependencies: - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - - web3-eth-personal@4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-rpc-methods: 1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - - web3-eth@4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - setimmediate: 1.0.5 - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-errors: 1.3.1 - web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.24.1) - web3-eth-accounts: 4.3.1 - web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@6.0.5) - web3-rpc-methods: 1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - - web3-net@4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5): - dependencies: - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-rpc-methods: 1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - web3-providers-http@4.2.0(encoding@0.1.13): - dependencies: - cross-fetch: 4.1.0(encoding@0.1.13) - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - transitivePeerDependencies: - - encoding - - web3-providers-ipc@4.0.7: - dependencies: - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - optional: true - - web3-providers-ws@4.0.8(bufferutil@4.0.9)(utf-8-validate@6.0.5): - dependencies: - '@types/ws': 8.5.3 - isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-utils: 4.3.3 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - web3-rpc-methods@1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5): - dependencies: - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - web3-rpc-providers@1.0.0-rc.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5): - dependencies: - web3-errors: 1.3.1 - web3-providers-http: 4.2.0(encoding@0.1.13) - web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - web3-types@1.10.0: {} - - web3-utils@1.10.4: - dependencies: - '@ethereumjs/util': 8.1.0 - bn.js: 5.2.1 - ethereum-bloom-filters: 1.2.0 - ethereum-cryptography: 2.2.1 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - - web3-utils@4.3.3: - dependencies: - ethereum-cryptography: 2.2.1 - eventemitter3: 5.0.1 - web3-errors: 1.3.1 - web3-types: 1.10.0 - web3-validator: 2.0.6 - - web3-validator@2.0.6: - dependencies: - ethereum-cryptography: 2.2.1 - util: 0.12.5 - web3-errors: 1.3.1 - web3-types: 1.10.0 - zod: 3.23.8 - - web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): - dependencies: - web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.24.1) - web3-eth-accounts: 4.3.1 - web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-eth-ens: 4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-eth-iban: 4.0.7 - web3-eth-personal: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) - web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-providers-http: 4.2.0(encoding@0.1.13) - web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@6.0.5) - web3-rpc-methods: 1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-rpc-providers: 1.0.0-rc.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - web3-types: 1.10.0 - web3-utils: 4.3.3 - web3-validator: 2.0.6 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - - webauthn-p256@0.0.10: - dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - - webcrypto-core@1.8.1: - dependencies: - '@peculiar/asn1-schema': 2.3.15 - '@peculiar/json-schema': 1.1.12 - asn1js: 3.0.5 - pvtsutils: 1.3.6 - tslib: 2.8.1 - - webidl-conversions@3.0.1: {} - - webidl-conversions@4.0.2: {} - - webidl-conversions@7.0.0: {} - - webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - acorn: 8.14.0 - acorn-walk: 8.3.4 - commander: 7.2.0 - debounce: 1.2.1 - escape-string-regexp: 4.0.0 - gzip-size: 6.0.0 - html-escaper: 2.0.2 - opener: 1.5.2 - picocolors: 1.1.1 - sirv: 2.0.4 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-dev-middleware@5.3.4(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.3.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - - webpack-dev-server@4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.13 - ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.5 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.21.1 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.7(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.9.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.3.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-merge@5.10.0: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-merge@6.0.1: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-sources@3.2.3: {} - - webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.0 - browserslist: 4.24.4 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.0 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpackbar@6.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - consola: 3.4.0 - figures: 3.2.0 - markdown-table: 2.0.0 - pretty-time: 1.1.0 - std-env: 3.8.0 - webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - wrap-ansi: 7.0.0 - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.9 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - websocket@1.0.35: - dependencies: - bufferutil: 4.0.9 - debug: 2.6.9 - es5-ext: 0.10.64 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-fetch@3.6.20: {} - - whatwg-mimetype@4.0.0: {} - - whatwg-url@14.1.0: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - whence@2.0.1: - dependencies: - '@babel/parser': 7.26.5 - eval-estree-expression: 2.0.3 - - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.1 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.3 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.0 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.0 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.18 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-module@2.0.1: {} - - which-pm-runs@1.1.0: {} - - which-typed-array@1.1.18: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - for-each: 0.3.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@4.0.0: - dependencies: - isexe: 3.1.1 - - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - - widest-line@4.0.1: - dependencies: - string-width: 5.1.2 - - wif@2.0.6: - dependencies: - bs58check: 2.1.2 - - wildcard@2.0.1: {} - - word-wrap@1.2.5: {} - - wordwrap@1.0.0: {} - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - - write-json-file@3.2.0: - dependencies: - detect-indent: 5.0.0 - graceful-fs: 4.2.11 - make-dir: 2.1.0 - pify: 4.0.1 - sort-keys: 2.0.0 - write-file-atomic: 2.4.3 - - write-pkg@4.0.0: - dependencies: - sort-keys: 2.0.0 - type-fest: 0.4.1 - write-json-file: 3.2.0 - - ws@7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@7.4.6(bufferutil@4.0.9)(utf-8-validate@6.0.5): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.5): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - - ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - - ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - - wtf_wikipedia@10.3.2(encoding@0.1.13): - dependencies: - isomorphic-unfetch: 3.1.0(encoding@0.1.13) - path-exists-cli: 2.0.0 - transitivePeerDependencies: - - encoding - - xdg-basedir@5.1.0: {} - - xml-js@1.6.11: - dependencies: - sax: 1.4.1 - - xml-name-validator@5.0.0: {} - - xmlchars@2.2.0: {} - - xsalsa20@1.2.0: {} - - xstream@11.14.0: - dependencies: - globalthis: 1.0.4 - symbol-observable: 2.0.3 - - xtend@4.0.2: {} - - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yaeti@0.0.6: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yallist@5.0.0: {} - - yaml@1.10.2: {} - - yaml@2.5.1: {} - - yaml@2.7.0: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs-parser@20.2.9: {} - - yargs-parser@21.1.1: {} - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yargs@17.7.1: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - yocto-queue@1.1.1: {} - - yoctocolors@2.1.1: {} - - youtube-dl-exec@3.0.10: - dependencies: - bin-version-check: 6.0.0 - dargs: 7.0.0 - debug-logfmt: 1.2.3 - is-unix: 2.0.10 - tinyspawn: 1.3.3 - transitivePeerDependencies: - - supports-color - - yup@1.6.1: - dependencies: - property-expr: 2.0.6 - tiny-case: 1.0.3 - toposort: 2.0.2 - type-fest: 2.19.0 - - zimmerframe@1.1.2: {} - - zksync-ethers@6.15.3(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5)): - dependencies: - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - - zlibjs@0.3.1: {} - - zod-to-json-schema@3.24.1(zod@3.23.8): - dependencies: - zod: 3.23.8 - - zod-to-json-schema@3.24.1(zod@3.24.1): - dependencies: - zod: 3.24.1 - - zod@3.23.8: {} - - zod@3.24.1: {} - - zstddec@0.0.2: {} - - zwitch@1.0.5: {} - - zwitch@2.0.4: {} diff --git a/scripts/clean.sh b/scripts/clean.sh index d377f85f2cff..736024f0d0db 100644 --- a/scripts/clean.sh +++ b/scripts/clean.sh @@ -15,3 +15,4 @@ rm -rf ./packages/core/cache rm ./pnpm-lock.yaml echo "Cleanup completed." +exit 0 diff --git a/scripts/start.sh b/scripts/start.sh old mode 100644 new mode 100755 index f3a817a27e4d..407bcc477ef4 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,65 +1,797 @@ -#!/bin/sh +#!/usr/bin/env bash +set -e -# Node.js version check -REQUIRED_NODE_VERSION=22 -CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//') - -# Compare Node versions -if [ "$(expr "$CURRENT_NODE_VERSION" \< "$REQUIRED_NODE_VERSION")" -eq 1 ]; then - echo "\033[1;31mError: Node.js version must be $REQUIRED_NODE_VERSION or higher. Current version is $CURRENT_NODE_VERSION.\033[0m" - exit 1 +# Remove pipefail if not running in bash +if [ -n "$BASH_VERSION" ]; then + set -o pipefail fi -# Check if pnpm is installed -if ! command -v pnpm >/dev/null 2>&1; then - echo "\033[1;31mError: pnpm is not installed. Please install pnpm before running the script.\033[0m" - exit 1 -fi +# Initial variables +NVM_VERSION="v0.39.1" +NODE_VERSION="23.3.0" +RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m' +NC='\033[0m'; BOLD='\033[1m' -# Navigate to project root -cd "$(dirname "$0")"/.. || exit 1 +# Detect OS +detect_os() { + case "$(uname -s)" in + Darwin*) + echo "mac" + ;; + Linux*) + echo "linux" + ;; + *) + echo "unknown" + ;; + esac +} -# Clean cache -echo "\033[1mCleaning cache...\033[0m" -if ! pnpm clean; then - echo "\033[1;31mFailed to clean cache.\033[0m" +OS_TYPE=$(detect_os) +if [ "$OS_TYPE" = "unknown" ]; then + echo "Unsupported operating system" exit 1 fi -# Install dependencies -echo "\033[1mInstalling dependencies...\033[0m" -if ! pnpm install; then - echo "\033[1;31mFailed to install dependencies.\033[0m" - exit 1 -fi +# Basic early logging before any dependencies +early_log() { echo -e "\033[0;34mℹ️ ${1}\033[0m"; } +early_error() { echo -e "\033[0;31m❌ ${1}\033[0m"; } +early_success() { echo -e "\033[0;32m✅ ${1}\033[0m"; } -# Build project -echo "\033[1mBuilding project...\033[0m" -if ! pnpm build; then - echo "\033[1;31mFailed to build project.\033[0m" - exit 1 -fi +# Install package manager and gum +install_package_manager() { + if [ "$OS_TYPE" = "mac" ]; then + if ! command -v brew &> /dev/null; then + early_log "Installing Homebrew..." + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + eval "$(/opt/homebrew/bin/brew shellenv)" + fi + fi +} -# Start project -echo "\033[1mStarting project...\033[0m" -if ! pnpm start; then - echo "\033[1;31mFailed to start project.\033[0m" - exit 1 -fi +install_gum() { + if ! command -v gum &> /dev/null; then + echo -e "\033[0;34mℹ️ Installing gum for better UI...\033[0m" + if [ "$OS_TYPE" = "mac" ]; then + brew install gum + else + sudo mkdir -p /etc/apt/keyrings + curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg + echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list + sudo apt update && sudo apt install -y gum + fi + fi +} + +# Install system dependencies +install_dependencies() { + log_verbose "Starting system dependency installation..." + if [ "$OS_TYPE" = "mac" ]; then + if [ "$VERBOSE" = true ]; then + brew install git curl python3 ffmpeg + else + gum spin --spinner dot --title "Installing system dependencies..." -- \ + brew install git curl python3 ffmpeg + fi + else + if [ "$VERBOSE" = true ]; then + sudo apt update && sudo apt install -y git curl python3 python3-pip make ffmpeg + else + gum spin --spinner dot --title "Installing system dependencies..." -- \ + sudo apt update && sudo apt install -y git curl python3 python3-pip make ffmpeg + fi + fi + log_success "Dependencies installed" + if [ "$VERBOSE" = true ]; then + log_verbose "Installed versions:" + git --version + curl --version | head -n 1 + python3 --version + pip3 --version + ffmpeg -version | head -n 1 + fi +} + +# Early NVM setup before anything else +setup_early_nvm() { + if ! command -v nvm &> /dev/null; then + early_log "Setting up NVM..." + # Download and run the nvm installation script + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + + # Load NVM + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + + # Verify installation + if ! command -v nvm &> /dev/null; then + early_error "Failed to install NVM. Please install it manually:" + echo "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash" + exit 1 + fi + early_success "NVM installed successfully" + else + early_success "NVM already installed" + fi + + # Install required Node version + if ! nvm install "$NODE_VERSION"; then + early_error "Failed to install Node.js $NODE_VERSION" + exit 1 + fi + + if ! nvm use "$NODE_VERSION"; then + early_error "Failed to use Node.js $NODE_VERSION" + exit 1 + fi + + # Install pnpm + if ! command -v pnpm &> /dev/null; then + early_log "Installing pnpm..." + if ! npm install -g pnpm; then + early_error "Failed to install pnpm" + exit 1 + fi + early_success "pnpm installed successfully" + fi +} -# Start client -echo "\033[1mStarting client...\033[0m" -if ! pnpm start:client; then - echo "\033[1;31mFailed to start client.\033[0m" +# Global variables for process management +SERVER_PID="" +CLIENT_PID="" + +# Set up interrupt handling +trap 'cleanup' EXIT INT TERM + +# Basic functions first - fallback logging before gum is installed +log_error() { + if command -v gum &> /dev/null; then + gum style --foreground 1 "❌ ${1}" + else + echo -e "\033[0;31m❌ ${1}\033[0m" + fi +} + +log_success() { + if command -v gum &> /dev/null; then + gum style --foreground 2 "✅ ${1}" + else + echo -e "\033[0;32m✅ ${1}\033[0m" + fi +} + +log_info() { + if command -v gum &> /dev/null; then + gum style --foreground 4 "ℹ️ ${1}" + else + echo -e "\033[0;34mℹ️ ${1}\033[0m" + fi +} + +log_verbose() { + if [ "$VERBOSE" = true ]; then + if command -v gum &> /dev/null; then + gum style --foreground 3 "🔍 ${1}" + else + echo -e "\033[1;33m🔍 ${1}\033[0m" + fi + fi +} + +# Cleanup function +cleanup() { + log_verbose "Cleaning up..." + [ -n "$SERVER_PID" ] && kill $SERVER_PID 2>/dev/null || true + [ -n "$CLIENT_PID" ] && kill $CLIENT_PID 2>/dev/null || true +} + +# Command line argument parsing +VERBOSE=false +SKIP_NVM=false +while [ $# -gt 0 ]; do + case $1 in + -v|--verbose) VERBOSE=true; shift ;; + --skip-nvm) SKIP_NVM=true; shift ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac +done + +# Error handling +handle_error() { + log_error "Error occurred in: $1" + log_error "Exit code: $2" + if [ "$VERBOSE" = true ]; then + log_error "Stack trace:" + caller + fi exit 1 -fi +} -# Open webpage -echo "\033[1mOpening webpage at http://localhost:5173...\033[0m" -if command -v xdg-open >/dev/null 2>&1; then - xdg-open "http://localhost:5173" -elif command -v open >/dev/null 2>&1; then - open "http://localhost:5173" -else - echo "\033[1;33mPlease open http://localhost:5173 in your browser.\033[0m" -fi +show_welcome() { + clear + cat << "EOF" + EEEEEE LL IIII ZZZZZZZ AAAA + EE LL II ZZ AA AA + EEEE LL II ZZZ AAAAAA + EE LL II ZZ AA AA + EEEEEE LLLLL IIII ZZZZZZZ AA AA + +Eliza is an open-source AI agent. + Created by ai16z 2024. + +EOF +} + +setup_environment() { + log_verbose "Setting up environment..." + if [ ! -f .env ]; then + if [ ! -f .env.example ]; then + log_error "No .env.example file found" + exit 1 + fi + if ! cp .env.example .env; then + log_error "Failed to create .env file" + exit 1 + fi + log_success "Environment file created" + else + log_info "Environment file already exists" + fi +} + +create_character_template() { + local name="$1" + cat > "$2" << EOF +{ + "name": "$name", + "clients": [], + "modelProvider": "anthropic", + "settings": { + "voice": { + "model": "en_GB-alan-medium" + } + }, + "plugins": [], + "bio": [ + "Brief description of the character", + "Key personality traits", + "Main purpose or role", + "Notable characteristics" + ], + "lore": [ + "Background information", + "Important history", + "Key relationships", + "Significant attributes" + ], + "knowledge": [ + "Area of expertise 1", + "Area of expertise 2", + "Area of expertise 3", + "Area of expertise 4" + ], + "messageExamples": [ + [ + { + "user": "{{user1}}", + "content": { + "text": "Can you help me with this task?" + } + }, + { + "user": "$name", + "content": { + "text": "Example response showing character's personality" + } + } + ], + [ + { + "user": "{{user1}}", + "content": { + "text": "This seems difficult." + } + }, + { + "user": "$name", + "content": { + "text": "Another example response in character's style" + } + } + ] + ], + "postExamples": [ + "Example of a social media post in character's voice", + "Another example showing typical posting style" + ], + "topics": [""], + "style": { + "all": [ + "Primary trait", + "Secondary trait", + "Third trait", + "Fourth trait" + ], + "chat": [ + "Chat-specific trait", + "Another chat trait", + "Third chat trait" + ], + "post": [ + "Posting style 1", + "Posting style 2", + "Posting style 3" + ] + }, + "adjectives": [ + "Descriptive1", + "Descriptive2", + "Descriptive3", + "Descriptive4", + "Descriptive5" + ] +} +EOF +} + +select_character() { + # Check if characters directory exists + if [ ! -d "./characters" ]; then + log_error "Characters directory not found" + return 1 + fi + + # Get list of character files using POSIX-compatible syntax + characters="" + character_paths="" + for file in ./characters/*.character.json; do + if [ -f "$file" ]; then + character_paths="$character_paths $file" + name=$(basename "$file" .character.json) + characters="$characters $name" + fi + done + + while true; do + # Instructions for user + log_info "Select character(s):" + log_info "(Use Ctrl+Space for multiple, Ctrl+A for all, Enter to confirm)" + + # Show initial menu options + initial_choice=$(printf "Create New\nUse Existing" | gum choose --limit 1) + + case "$initial_choice" in + "Create New") + # Get new character name + log_info "Enter name for new character (without spaces):" + new_name=$(gum input --placeholder "character_name") + + if [ -z "$new_name" ]; then + log_error "No name provided" + continue + fi + + # Create new character file + new_file="./characters/${new_name}.character.json" + if [ -f "$new_file" ]; then + log_error "Character file already exists" + continue + fi + + # Create new character from template + create_character_template "$new_name" "$new_file" + + # Open the new file for editing + log_success "Created new character file. Opening for editing..." + nano "$new_file" + + # Add to current list + characters="$characters $new_name" + character_paths="$character_paths $new_file" + continue + ;; + "Use Existing") + # Show character list for multi-select + selected_names=$(printf "%s\n" $characters | gum choose --no-limit) + + # If no selection made, use the highlighted character + if [ -z "$selected_names" ]; then + # Get the first visible character (highlighted one) + selected_names=$(printf "%s\n" $characters | head -n 1) + if [ -z "$selected_names" ]; then + log_error "No characters available" + continue + fi + fi + + # Show action menu based on selection count + char_count=$(echo "$selected_names" | wc -l) + if [ "$char_count" -gt 1 ]; then + # Multiple characters - only show Run/Delete options + action=$(printf "Run\nDelete" | gum choose --limit 1) + else + # Single character - show all options + action=$(printf "Run\nEdit\nDelete" | gum choose --limit 1) + fi + + case "$action" in + "Delete") + # Delete logic here + ;; + "Edit") + # Count selected characters + char_count=$(echo "$selected_names" | wc -l) + + if [ "$char_count" -gt 1 ]; then + # Edit each selected character + echo "$selected_names" | while read -r name; do + for file in $character_paths; do + base_name=$(basename "$file" .character.json) + if [ "$base_name" = "$name" ]; then + log_info "Editing character: $name" + nano "$file" + break + fi + done + done + log_success "Characters edited. Please select character(s) to continue:" + else + # Single character edit + for file in $character_paths; do + base_name=$(basename "$file" .character.json) + if [ "$base_name" = "$selected_names" ]; then + log_info "Editing character: $selected_names" + nano "$file" + log_success "Character edited. Please select character(s) to continue:" + break + fi + done + fi + continue + ;; + "Run") + # Convert selected names to paths + selected_paths="" + first=true + # Save selected_names to a temp file to preserve it across the pipe + echo "$selected_names" > /tmp/eliza_selected_names + while read -r name; do + for file in $character_paths; do + base_name=$(basename "$file" .character.json) + if [ "$base_name" = "$name" ]; then + if [ "$first" = true ]; then + selected_paths="$file" + first=false + else + selected_paths="$selected_paths,$file" + fi + break + fi + done + done < /tmp/eliza_selected_names + rm -f /tmp/eliza_selected_names + + if [ -n "$selected_paths" ]; then + selected_character_path="$selected_paths" + log_success "Selected characters: $selected_names" + return 0 + fi + ;; + esac + ;; + *) + log_error "Invalid choice" + continue + ;; + esac + done +} + +start_eliza() { + # Ask about editing environment configuration first + log_info "Would you like to configure API secrets in .env?" + if gum confirm "Edit .env file?"; then + if [ ! -f ".env" ]; then + log_error "No .env file found" + return 1 + fi + nano ".env" + log_success "Environment configuration updated" + fi + + # Add character selection before starting + if ! select_character; then + log_error "Failed to select character" + return 1 + fi + + log_info "Starting Eliza..." + + # Start server with selected character(s) + pnpm start --characters="$selected_character_path" & + SERVER_PID=$! + sleep 2 + + # Check if server started successfully + if ! kill -0 $SERVER_PID 2>/dev/null; then + log_error "Failed to start Eliza server" + return 1 + fi + + # Start client + pnpm start:client & + CLIENT_PID=$! + sleep 3 + + # Check if client started successfully + if ! kill -0 $CLIENT_PID 2>/dev/null; then + log_error "Failed to start Eliza client" + kill $SERVER_PID 2>/dev/null + return 1 + fi + + # Open in browser + log_info "Opening Eliza in your browser..." + if command -v xdg-open >/dev/null 2>&1; then + xdg-open "http://localhost:5173" + elif command -v open >/dev/null 2>&1; then + open "http://localhost:5173" + else + log_info "Please open http://localhost:5173 in your browser" + fi + + log_success "Eliza is now running" + log_info "Press Ctrl+C to stop Eliza" + + # Wait for both processes + wait $SERVER_PID $CLIENT_PID + return 0 +} + +build_and_start() { + log_verbose "Starting build process..." + + # Check Node.js version + REQUIRED_NODE_VERSION=22 + if ! command -v node &> /dev/null; then + log_error "Node.js is not installed or not in PATH" + exit 1 + fi + + CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//') + if [ "$(expr "$CURRENT_NODE_VERSION" \< "$REQUIRED_NODE_VERSION")" -eq 1 ]; then + log_error "Node.js version must be $REQUIRED_NODE_VERSION or higher. Current version is $CURRENT_NODE_VERSION." + exit 1 + fi + + # Check for pnpm + if ! command -v pnpm &> /dev/null; then + log_error "pnpm is not installed. Please install pnpm before running the script." + exit 1 + fi + + # Clean and install + log_verbose "Cleaning project..." + if ! pnpm clean; then + log_error "Failed to clean project" + exit 1 + fi + log_success "Project cleaned" + + log_verbose "Installing dependencies..." + if ! pnpm install --no-frozen-lockfile; then + log_error "Failed to install dependencies" + exit 1 + fi + log_success "Dependencies installed" + + log_verbose "Building project..." + if ! pnpm build; then + log_error "Failed to build project" + exit 1 + fi + log_success "Project built successfully" + + start_eliza +} + +check_existing_installation() { + log_verbose "Checking for existing installation..." + + # Check for required files and dependencies + if [ -f ".env" ] && [ -d "node_modules" ]; then + # Load NVM if available + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + + # Check for required commands + if command -v node &> /dev/null && command -v pnpm &> /dev/null; then + # Verify Node.js version + REQUIRED_NODE_VERSION=22 + CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//') + + if [ "$(expr "$CURRENT_NODE_VERSION" '>=' "$REQUIRED_NODE_VERSION")" -eq 1 ]; then + log_info "Existing installation detected" + + # Show options menu + action=$(printf "Start\nUpdate\nReinstall" | gum choose --limit 1) + + case "$action" in + "Start") + start_eliza + exit 0 + ;; + "Update") + log_info "Checking for updates..." + + # Fetch latest changes + if ! git fetch origin; then + log_error "Failed to fetch updates" + return 1 + fi + + # Check if we're behind origin + LOCAL=$(git rev-parse @) + REMOTE=$(git rev-parse @{u}) + + if [ "$LOCAL" = "$REMOTE" ]; then + log_success "Already up to date" + + # Ask to start + if gum confirm "Would you like to start Eliza now?"; then + start_eliza + exit 0 + fi + exit 0 # Exit instead of return if user chooses not to start + fi + + # If we get here, there are updates + log_info "Updates available. Updating Eliza..." + + # Pull latest changes + if ! git pull; then + log_error "Failed to pull updates" + return 1 + fi + + # Install any new dependencies + if ! pnpm install --no-frozen-lockfile; then + log_error "Failed to update dependencies" + return 1 + fi + + # Rebuild + if ! pnpm build; then + log_error "Failed to rebuild after update" + return 1 + fi + + log_success "Update completed" + + # Ask to start + if gum confirm "Would you like to start Eliza now?"; then + start_eliza + exit 0 + fi + exit 0 # Exit instead of return if user chooses not to start + ;; + "Reinstall") + return 0 # Continue with fresh installation + ;; + esac + fi + fi + fi + + log_verbose "No valid installation found" + return 0 +} + +# Install NVM function +install_nvm() { + log_verbose "Installing NVM..." + + if ! command -v nvm &> /dev/null; then + # Download and run the nvm installation script + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + + # Load NVM + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + + # Verify installation + if ! command -v nvm &> /dev/null; then + log_error "Failed to install NVM. Please install it manually:" + echo "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash" + exit 1 + fi + log_success "NVM installed" + else + log_success "NVM already installed" + fi + + # Install required Node version + if ! nvm install "$NODE_VERSION"; then + log_error "Failed to install Node.js $NODE_VERSION" + exit 1 + fi + + if ! nvm use "$NODE_VERSION"; then + log_error "Failed to use Node.js $NODE_VERSION" + exit 1 + fi + + log_success "Node.js setup complete" + + if [ "$VERBOSE" = true ]; then + log_verbose "Node version: $(node -v)" + log_verbose "NPM version: $(npm -v)" + fi +} + +# Setup Node.js environment +setup_node() { + log_verbose "Setting up Node.js environment..." + + # Verify Node.js installation + if ! command -v node &> /dev/null; then + log_error "Node.js is not installed" + exit 1 + fi + + # Install pnpm if not present + if ! command -v pnpm &> /dev/null; then + log_info "Installing pnpm..." + if ! npm install -g pnpm; then + log_error "Failed to install pnpm" + exit 1 + fi + log_success "pnpm installed" + fi + + # Verify versions + if [ "$VERBOSE" = true ]; then + log_verbose "Node version: $(node -v)" + log_verbose "NPM version: $(npm -v)" + log_verbose "PNPM version: $(pnpm -v)" + fi + + log_success "Node.js environment setup complete" +} + +main() { + early_log "Detected operating system: $OS_TYPE" + + # Install package manager first (for macOS) + install_package_manager + + # Install gum before any other operations + install_gum + + show_welcome + [ "$VERBOSE" = true ] && log_verbose "Running in verbose mode" + + # Add the installation check here + check_existing_installation + + if ! gum confirm "Ready to install Eliza?"; then + log_info "Installation cancelled" + exit 0 + fi + + install_dependencies + + if [ "$SKIP_NVM" = false ]; then + install_nvm + fi + + setup_node + setup_environment + build_and_start + + # This will only be reached after Ctrl+C or error + log_info "Eliza has been stopped" +} + +# Call main function +main "$@" \ No newline at end of file diff --git a/tests/README.md b/tests/README.md index 8717d9127e25..00d6585bda24 100644 --- a/tests/README.md +++ b/tests/README.md @@ -24,6 +24,6 @@ This directory contains smoke and integration tests for Eliza project. ## Using in GitHub CI/CD - Settings -> Secrets and variables -> Actions: -- Create an enviroment +- Create an environment - Add repository secret `OPENAI_API_KEY` - Refer to https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions for more information diff --git a/turbo.json b/turbo.json index 485ec01e2ff1..129de6547281 100644 --- a/turbo.json +++ b/turbo.json @@ -32,6 +32,14 @@ "outputs": ["dist/**"], "dependsOn": ["@elizaos/plugin-node#build"] }, + "@elizaos/client-direct#build": { + "outputs": ["dist/**"], + "dependsOn": ["@elizaos/plugin-tee-verifiable-log#build"] + }, + "@elizaos/plugin-tee-verifiable-log#build": { + "outputs": ["dist/**"], + "dependsOn": ["@elizaos/core#build", "@elizaos/plugin-tee#build"] + }, "@elizaos/plugin-evm#build": { "outputs": ["dist/**"], "dependsOn": ["@elizaos/plugin-tee#build"]