From 4c8d3ab44e9aa960e892f62141abf1facb0efc68 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Sat, 20 Dec 2025 16:22:00 +0100 Subject: [PATCH 1/8] add sending a telegram alert for errors and critical events --- .../logging/send_telegram_alert.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 pdf_generator_module/logging/send_telegram_alert.py diff --git a/pdf_generator_module/logging/send_telegram_alert.py b/pdf_generator_module/logging/send_telegram_alert.py new file mode 100644 index 0000000..4e9d4fa --- /dev/null +++ b/pdf_generator_module/logging/send_telegram_alert.py @@ -0,0 +1,42 @@ +import os +import requests +from dotenv import load_dotenv + +load_dotenv() +BOT_TOKEN = os.getenv("TELEGRAM_ALERT_BOT_TOKEN") +GROUP_ID = os.getenv("TELEGRAM_ALERT_GROUP_ID") + +TELEGRAM_MAX_LEN = 4096 + +def escape_markdown_v2(text: str) -> str: + # Caractères à échapper en MarkdownV2 (spec Telegram) + special = r'_\*\[\]\(\)~`>#+\-=|{}.!' + out = [] + for ch in str(text): + if ch in special: + out.append("\\" + ch) + else: + out.append(ch) + return "".join(out) + +def send_telegram_alert(message, group_id=GROUP_ID, bot_token=BOT_TOKEN): + if not bot_token or not group_id: + return None + + url = f"https://api.telegram.org/bot{bot_token}/sendMessage" + + msg = str(message) + if len(msg) > TELEGRAM_MAX_LEN: + msg = msg[:4000] + "\n…(truncated)…" + + msg = escape_markdown_v2(msg) + + payload = { + "chat_id": group_id, + "text": msg, + "disable_web_page_preview": True, + "parse_mode": "MarkdownV2", + } + + resp = requests.post(url, json=payload, timeout=10) + return resp From f07d5fc23f04b2b9c7b8268236c8e2a754b7b3ee Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:09:52 +0100 Subject: [PATCH 2/8] migrate yam-indexing module to proper repository --- yam_indexing_module/__init__.py | 0 yam_indexing_module/db_operations/__init__.py | 2 - .../db_operations/add_events_to_db.py | 65 - yam_indexing_module/db_operations/init_db.py | 88 - .../db_operations/internal/_db_operations.py | 64 - .../db_operations/internal/_event_handlers.py | 226 -- .../internal/_get_status_offer.py | 112 - .../initialize_indexing_module.py | 49 - yam_indexing_module/logging/logging_config.py | 33 - yam_indexing_module/logs_handlers/__init__.py | 0 .../logs_handlers/get_and_decode_logs_yam.py | 113 - .../logs_handlers/internals/_decoders.py | 173 - .../internals/_normalize_ethereum_address.py | 40 - yam_indexing_module/main_indexing.py | 148 - .../the_graphe_handler/__init__.py | 1 - .../backfill_db_block_range.py | 71 - .../abis/RealtYamProxy.json | 1 - .../build/RealtYamProxy/RealtYamProxy.json | 1172 ------- .../build/RealtYamProxy/RealtYamProxy.wasm | Bin 37870 -> 0 bytes .../yam-events-tracker/build/schema.graphql | 51 - .../yam-events-tracker/build/subgraph.yaml | 37 - .../yam-events-tracker/docker-compose.yml | 50 - .../generated/RealtYamProxy/RealtYamProxy.ts | 1787 ----------- .../yam-events-tracker/generated/schema.ts | 649 ---- .../yam-events-tracker/networks.json | 8 - .../yam-events-tracker/package.json | 18 - .../yam-events-tracker/schema.graphql | 51 - .../yam-events-tracker/src/realt-yam-proxy.ts | 86 - .../yam-events-tracker/subgraph.yaml | 35 - .../tests/realt-yam-proxy-utils.ts | 55 - .../tests/realt-yam-proxy.test.ts | 57 - .../yam-events-tracker/tsconfig.json | 4 - .../deployment/yam-events-tracker/yarn.lock | 2811 ----------------- .../deployment/yam_abi.json | 1 - .../the_graphe_handler/internals/__init__.py | 8 - .../internals/fetch_all_offer_accepted.py | 98 - .../internals/fetch_all_offer_created.py | 124 - .../internals/fetch_all_offer_deleted.py | 92 - .../internals/fetch_all_offer_updated.py | 96 - .../fetch_offer_accepted_from_block_range.py | 135 - .../fetch_offer_created_from_block_range.py | 136 - .../fetch_offer_deleted_from_block_range.py | 119 - .../fetch_offer_updated_from_block_range.py | 123 - 43 files changed, 8989 deletions(-) delete mode 100644 yam_indexing_module/__init__.py delete mode 100644 yam_indexing_module/db_operations/__init__.py delete mode 100644 yam_indexing_module/db_operations/add_events_to_db.py delete mode 100644 yam_indexing_module/db_operations/init_db.py delete mode 100644 yam_indexing_module/db_operations/internal/_db_operations.py delete mode 100644 yam_indexing_module/db_operations/internal/_event_handlers.py delete mode 100644 yam_indexing_module/db_operations/internal/_get_status_offer.py delete mode 100644 yam_indexing_module/initialize_indexing_module.py delete mode 100644 yam_indexing_module/logging/logging_config.py delete mode 100644 yam_indexing_module/logs_handlers/__init__.py delete mode 100644 yam_indexing_module/logs_handlers/get_and_decode_logs_yam.py delete mode 100644 yam_indexing_module/logs_handlers/internals/_decoders.py delete mode 100644 yam_indexing_module/logs_handlers/internals/_normalize_ethereum_address.py delete mode 100644 yam_indexing_module/main_indexing.py delete mode 100644 yam_indexing_module/the_graphe_handler/__init__.py delete mode 100644 yam_indexing_module/the_graphe_handler/backfill_db_block_range.py delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/abis/RealtYamProxy.json delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.json delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.wasm delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/schema.graphql delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/subgraph.yaml delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/docker-compose.yml delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/RealtYamProxy/RealtYamProxy.ts delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/schema.ts delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/networks.json delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/package.json delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/schema.graphql delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/src/realt-yam-proxy.ts delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/subgraph.yaml delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy-utils.ts delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy.test.ts delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tsconfig.json delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/yarn.lock delete mode 100644 yam_indexing_module/the_graphe_handler/deployment/yam_abi.json delete mode 100644 yam_indexing_module/the_graphe_handler/internals/__init__.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_accepted.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_created.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_deleted.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_updated.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_offer_accepted_from_block_range.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_offer_created_from_block_range.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_offer_deleted_from_block_range.py delete mode 100644 yam_indexing_module/the_graphe_handler/internals/fetch_offer_updated_from_block_range.py diff --git a/yam_indexing_module/__init__.py b/yam_indexing_module/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/yam_indexing_module/db_operations/__init__.py b/yam_indexing_module/db_operations/__init__.py deleted file mode 100644 index 7ffc3f2..0000000 --- a/yam_indexing_module/db_operations/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .add_events_to_db import add_events_to_db -from .init_db import init_db diff --git a/yam_indexing_module/db_operations/add_events_to_db.py b/yam_indexing_module/db_operations/add_events_to_db.py deleted file mode 100644 index aada186..0000000 --- a/yam_indexing_module/db_operations/add_events_to_db.py +++ /dev/null @@ -1,65 +0,0 @@ -import sqlite3 -from typing import List, Dict -from .internal._event_handlers import _handle_offer_created, _handle_offer_accepted, _handle_offer_deleted, _handle_offer_updated -from .internal._db_operations import _update_indexing_state - - -def add_events_to_db( - db_path: str, - from_block: int, - to_block: int, - decoded_logs: List[Dict], - initialisation_mode: bool = False -) -> None: - """ - Add YAM events to a SQLite database, including offer creation, acceptance, - updates, and deletions. - - The function processes different event types and updates the database accordingly: - - OfferCreated: Adds a new offer to the 'offers' table - - OfferAccepted: Records acceptance in 'offer_events' and updates offer status - - OfferUpdated: Records update in 'offer_events' and sets offer status to 'InProgress' - - OfferDeleted: Records deletion in 'offer_events' and sets offer status to 'Deleted' - - Finally, it updates the 'indexing_state' table to track which blocks have been processed. - - Args: - db_path: Path to the SQLite database file - from_block: Starting block number for this batch of events - to_block: Ending block number for this batch of events - decoded_logs: List of decoded blockchain event logs - - Returns: - None - """ - # Connect to the SQLite database (creates the database file if it doesn't exist) - conn = sqlite3.connect(db_path) - cursor = conn.cursor() - - # Process each event log - for i, log in enumerate(decoded_logs): - event_type = log['topic'] - - if event_type == 'OfferCreated': - _handle_offer_created(cursor, log) - elif event_type == 'OfferAccepted': - _handle_offer_accepted(cursor, log) - conn.commit() # Commit here to ensure status retrieval has latest data - elif event_type == 'OfferUpdated': - _handle_offer_updated(cursor, log) - elif event_type == 'OfferDeleted': - _handle_offer_deleted(cursor, log) - - # Show progress when initialising - if initialisation_mode: - # Clear the line first, then write new content - print(f"\r" + " " * 70, end="", flush=True) # Clear with spaces - print(f"\r{i+1} events added to the DB out of {len(decoded_logs)}", end="", flush=True) - - if from_block is not None and to_block is not None: - # Update the indexing state to track processed blocks - _update_indexing_state(cursor, from_block, to_block) - - # Commit all changes and close the connection - conn.commit() - conn.close() \ No newline at end of file diff --git a/yam_indexing_module/db_operations/init_db.py b/yam_indexing_module/db_operations/init_db.py deleted file mode 100644 index 30d1a1c..0000000 --- a/yam_indexing_module/db_operations/init_db.py +++ /dev/null @@ -1,88 +0,0 @@ -import sqlite3 - -def init_db(DB_PATH): - conn = sqlite3.connect(DB_PATH) - cursor = conn.cursor() - - # Create tables - print("Creating database tables...") - - # Create tables - cursor.execute(""" - CREATE TABLE IF NOT EXISTS offers ( - offer_id INTEGER PRIMARY KEY, - seller_address TEXT NOT NULL, - initial_amount TEXT NOT NULL, - price_per_unit TEXT NOT NULL, - offer_token TEXT NOT NULL, - buyer_token TEXT NOT NULL, - status TEXT CHECK (status IN ('InProgress', 'SoldOut', 'Deleted') ) DEFAULT 'InProgress', - block_number INTEGER NOT NULL, - transaction_hash TEXT NOT NULL, - log_index INTEGER NOT NULL, - creation_timestamp DATETIME - ); - """) - - cursor.execute(""" - CREATE TABLE IF NOT EXISTS offer_events ( - offer_id INTEGER NOT NULL, - event_type TEXT NOT NULL CHECK (event_type IN ('OfferCreated', 'OfferUpdated', 'OfferAccepted', 'OfferDeleted')), - amount TEXT, - price TEXT, - buyer_address TEXT, - amount_bought TEXT, - block_number INTEGER NOT NULL, - transaction_hash TEXT NOT NULL, - log_index INTEGER NOT NULL, - price_bought TEXT, - event_timestamp DATETIME, - unique_id TEXT PRIMARY KEY NOT NULL, - FOREIGN KEY (offer_id) REFERENCES offers (offer_id) - ); - """) - - cursor.execute(""" - CREATE TABLE IF NOT EXISTS indexing_state ( - indexing_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - from_block INTEGER NOT NULL, - to_block INTEGER NOT NULL - ); - """) - - # Create indexes for query optimization - print("Creating database indexes...") - - # Composite index for offer_events filtering (most important) - cursor.execute(""" - CREATE INDEX IF NOT EXISTS idx_offer_events_type_timestamp - ON offer_events (event_type, event_timestamp); - """) - - # Index for buyer address filtering - cursor.execute(""" - CREATE INDEX IF NOT EXISTS idx_offer_events_buyer_address - ON offer_events (buyer_address); - """) - - # Index for seller address filtering - cursor.execute(""" - CREATE INDEX IF NOT EXISTS idx_offers_seller_address - ON offers (seller_address); - """) - - # Foreign key index for JOIN optimization - cursor.execute(""" - CREATE INDEX IF NOT EXISTS idx_offer_events_offer_id - ON offer_events (offer_id); - """) - - conn.commit() - conn.close() - print("Database initialization completed.") - -if __name__ == "__main__": - import json - with open('config.json', 'r') as f: - DB_PATH = json.load(f)['db_path'] - init_db(DB_PATH) \ No newline at end of file diff --git a/yam_indexing_module/db_operations/internal/_db_operations.py b/yam_indexing_module/db_operations/internal/_db_operations.py deleted file mode 100644 index b469c4b..0000000 --- a/yam_indexing_module/db_operations/internal/_db_operations.py +++ /dev/null @@ -1,64 +0,0 @@ -import sqlite3 - -def _update_indexing_state( - cursor: sqlite3.Cursor, - from_block: int, - to_block: int -) -> None: - """ - Update the indexing state to track which blocks have been processed. - - Either extends the most recent entry if the new range is contiguous, - or creates a new entry if there's a gap. - - Args: - cursor: Database cursor - from_block: Starting block number for this batch - to_block: Ending block number for this batch - """ - # Get the most recent indexing entry - cursor.execute("SELECT * FROM indexing_state ORDER BY indexing_id DESC LIMIT 1") - most_recent_entry = cursor.fetchone() - - # Determine if we should extend the existing entry or create a new one - if most_recent_entry is not None: - # Check if new range is contiguous with existing range - if most_recent_entry[1] <= from_block <= most_recent_entry[2] + 1 and to_block > most_recent_entry[2]: - # Extend the existing entry - cursor.execute( - "UPDATE indexing_state SET to_block = ? WHERE indexing_id = ?", - (to_block, most_recent_entry[0]) - ) - return - - # If we reach here, we either need to create a new entry or no update is needed - if most_recent_entry is None or to_block > most_recent_entry[2]: - cursor.execute( - "INSERT INTO indexing_state (from_block, to_block) VALUES (?, ?)", - (from_block, to_block) - ) - -def _get_last_indexed_block(db_path): - """ - Get the last indexed block number from the database. - - Args: - db_path (str): Path to the SQLite database file - - Returns: - int: The last indexed block number, or None if no records found - """ - conn = sqlite3.connect(db_path) - cursor = conn.cursor() - - try: - cursor.execute("SELECT to_block FROM indexing_state ORDER BY indexing_id DESC LIMIT 1") - result = cursor.fetchone() - - if result: - return result[0] - else: - return None - - finally: - conn.close() \ No newline at end of file diff --git a/yam_indexing_module/db_operations/internal/_event_handlers.py b/yam_indexing_module/db_operations/internal/_event_handlers.py deleted file mode 100644 index 3a2fa90..0000000 --- a/yam_indexing_module/db_operations/internal/_event_handlers.py +++ /dev/null @@ -1,226 +0,0 @@ -import sqlite3 -from typing import Dict -from datetime import datetime -from web3 import Web3 -from ._get_status_offer import _get_offer_status - -def _get_timestamp_value(log: Dict) -> str: - """ - Get timestamp value from log, either from Unix timestamp or current time. - - Args: - log: Event log data - - Returns: - Timestamp string in SQLite datetime format - """ - if 'timestamp' in log and log['timestamp'] is not None: - # Convert Unix timestamp to datetime string - return datetime.fromtimestamp(int(log['timestamp'])).strftime('%Y-%m-%d %H:%M:%S') - else: - # Use current timestamp - return datetime.now().strftime('%Y-%m-%d %H:%M:%S') - -def _handle_offer_created( - cursor: sqlite3.Cursor, - log: Dict -) -> None: - """ - Handle 'OfferCreated' event by inserting a new offer into the database. - - Args: - cursor: Database cursor - log: Event log data - """ - # Get timestamp value - timestamp_value = _get_timestamp_value(log) - - # Build the SQL query - insert_query = """ - INSERT INTO offers ( - offer_id, seller_address, initial_amount, price_per_unit, - offer_token, buyer_token, transaction_hash, block_number, log_index, - creation_timestamp - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """ - - try: - # Execute the query with data - cursor.execute( - insert_query, - ( - log['offerId'], - Web3.to_checksum_address(log['seller']), - str(log['amount']), - str(log['price']), - Web3.to_checksum_address(log['offerToken']), - Web3.to_checksum_address(log['buyerToken']), - log['transactionHash'], - log['blockNumber'], - log['logIndex'], - timestamp_value - ) - ) - except sqlite3.IntegrityError as e: - # Ignore duplicate entries -> silently skip already-added entries - if 'UNIQUE constraint failed: offers.offer_id' not in str(e): - raise e - - -def _handle_offer_accepted( - cursor: sqlite3.Cursor, - log: Dict -) -> None: - """ - Handle 'OfferAccepted' event by recording acceptance and updating offer status. - - Args: - cursor: Database cursor - log: Event log data - """ - # Create a unique ID for the primary key of the table offer_events - unique_id = f"{log['transactionHash']}_{log['logIndex']}" - - # Get timestamp value - timestamp_value = _get_timestamp_value(log) - - # Build the SQL query - insert_query = """ - INSERT INTO offer_events ( - offer_id, event_type, buyer_address, amount_bought, price_bought, - transaction_hash, block_number, log_index, unique_id, - event_timestamp - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """ - - try: - cursor.execute( - insert_query, - ( - log['offerId'], - log['topic'], - Web3.to_checksum_address(log['buyer']), - str(log['amount']), - str(log['price']), - log['transactionHash'], - log['blockNumber'], - log['logIndex'], - unique_id, - timestamp_value - ) - ) - except sqlite3.IntegrityError as e: - # Ignore duplicate entries -> silently skip already-added entries - if 'UNIQUE constraint failed: offer_events.unique_id' not in str(e): - raise e - - # Get current offer status and update if necessary - status = _get_offer_status(cursor, log['offerId']) - if status is not None and status != 'InProgress': - cursor.execute( - "UPDATE offers SET status = ? WHERE offer_id = ?", - (status, log['offerId']) - ) - - -def _handle_offer_updated( - cursor: sqlite3.Cursor, - log: Dict -) -> None: - """ - Handle 'OfferUpdated' event by recording the update and setting status to 'InProgress'. - - Args: - cursor: Database cursor - log: Event log data - """ - # Create a unique ID for the primary key of the table offer_events - unique_id = f"{log['transactionHash']}_{log['logIndex']}" - - # Get timestamp value - timestamp_value = _get_timestamp_value(log) - - # Build the SQL query - insert_query = """ - INSERT INTO offer_events ( - offer_id, event_type, amount, price, - transaction_hash, block_number, log_index, unique_id, - event_timestamp - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) - """ - - try: - cursor.execute( - insert_query, - ( - log['offerId'], - log['topic'], - str(log['newAmount']), - str(log['newPrice']), - log['transactionHash'], - log['blockNumber'], - log['logIndex'], - unique_id, - timestamp_value - ) - ) - except sqlite3.IntegrityError as e: - # Ignore duplicate entries -> silently skip already-added entries - if 'UNIQUE constraint failed: offer_events.unique_id' not in str(e): - raise e - - # Update offer status to 'InProgress' - cursor.execute( - "UPDATE offers SET status = 'InProgress' WHERE offer_id = ?", - (log['offerId'],) - ) - - -def _handle_offer_deleted( - cursor: sqlite3.Cursor, - log: Dict -) -> None: - """ - Handle 'OfferDeleted' event by recording the deletion and setting status to 'Deleted'. - - Args: - cursor: Database cursor - log: Event log data - """ - # Create a unique ID for the primary key of the table offer_events - unique_id = f"{log['transactionHash']}_{log['logIndex']}" - - # Get timestamp value - timestamp_value = _get_timestamp_value(log) - - # Build the SQL query - insert_query = """ - INSERT INTO offer_events ( - offer_id, event_type, transaction_hash, block_number, log_index, unique_id, - event_timestamp - ) VALUES (?, ?, ?, ?, ?, ?, ?) - """ - - try: - cursor.execute( - insert_query, - ( - log['offerId'], - log['topic'], - log['transactionHash'], - log['blockNumber'], - log['logIndex'], - unique_id, - timestamp_value - ) - ) - except sqlite3.IntegrityError as e: - # Ignore duplicate entries -> silently skip already-added entries - if 'UNIQUE constraint failed: offer_events.unique_id' not in str(e): - raise e - - # Update offer status to 'Deleted' - cursor.execute( - "UPDATE offers SET status = 'Deleted' WHERE offer_id = ?", - (log['offerId'],) - ) \ No newline at end of file diff --git a/yam_indexing_module/db_operations/internal/_get_status_offer.py b/yam_indexing_module/db_operations/internal/_get_status_offer.py deleted file mode 100644 index 5c90b80..0000000 --- a/yam_indexing_module/db_operations/internal/_get_status_offer.py +++ /dev/null @@ -1,112 +0,0 @@ -from typing import List, Dict, Optional, Any -import sqlite3 - -def _get_offer_status(cursor: sqlite3.Cursor, offer_id: str) -> Optional[str]: - """ - Calculate the current status of an offer based on its event history. - - Determines offer status using the following logic: - - If the last event is 'OfferDeleted', status is 'Deleted' - - Otherwise, calculate remaining amount starting from the latest 'OfferUpdated' event (or from the original offer if no updates) - - If remaining amount is 0, status is 'SoldOut' - - If remaining amount is > 0, status is 'InProgress' - - Args: - cursor: Database cursor - offer_id: ID of the offer to check - - Returns: - Current status ('Deleted', 'SoldOut', 'InProgress') or None if status cannot be determined - """ - # Get all events for this offer - events = _get_all_events_from_offer_id(cursor, offer_id) - - # Check if offer was deleted (last event is OfferDeleted) - if len(events) > 0 and events[-1].get('event_type') == 'OfferDeleted': - return 'Deleted' - - # Find the most recent 'OfferUpdated' event - last_offer_updated_index = None - - for i, event in enumerate(events): - if event.get('event_type') == 'OfferUpdated': - # Keep track of the index of the last 'OfferUpdated' event - last_offer_updated_index = i - - # If an 'OfferUpdated' event was found, consider only events after that one - if last_offer_updated_index is not None: - events = events[last_offer_updated_index:] - - # Calculate remaining amount - if len(events) > 0: - # Get initial amount from first event (either original or after last update) - initial_amount = events[0].get('initial_amount', events[0].get('amount')) - - # Ensure we have a valid amount to start with - if initial_amount is None: - return None - - amount = int(initial_amount) - - # Subtract all bought amounts from subsequent acceptance events - for event in events[1:]: - amount_bought = event.get('amount_bought') - if amount_bought is not None: - amount -= int(amount_bought) - else: - return None - - # Determine status based on remaining amount - if amount == 0: - return 'SoldOut' - elif amount > 0: - return 'InProgress' - else: - # Negative amount is an error condition - return None - - -def _get_all_events_from_offer_id(cursor: sqlite3.Cursor, offer_id: str) -> List[Dict[str, Any]]: - """ - Retrieve all events related to a specific offer. - - Fetches the original offer and all events from the database, combines them - into a single list, and sorts them by block number and log index to maintain - chronological order. - - Args: - cursor: Database cursor - offer_id: ID of the offer to fetch events for - - Returns: - List of dictionaries containing event data, sorted by block order - """ - result = [] - - # Query to get the offer from the offers table - cursor.execute("SELECT * FROM offers WHERE offer_id = ?", (offer_id,)) - offer = cursor.fetchone() - - # If the offer exists, add it to the result list - if offer: - # Convert the tuple to a dictionary using column names - offer_dict = dict(zip([column[0] for column in cursor.description], offer)) - result.append(offer_dict) - - # Query to get all events related to this offer from offer_events table - cursor.execute( - "SELECT * FROM offer_events WHERE offer_id = ? ORDER BY event_timestamp ASC", - (offer_id,) - ) - events = cursor.fetchall() - - # Add each event to the result list - for event in events: - # Convert the tuple to a dictionary using column names - event_dict = dict(zip([column[0] for column in cursor.description], event)) - result.append(event_dict) - - # Sort all entries by blockchain order (block number and log index) - result = sorted(result, key=lambda event: (event['block_number'], event['log_index'])) - - return result \ No newline at end of file diff --git a/yam_indexing_module/initialize_indexing_module.py b/yam_indexing_module/initialize_indexing_module.py deleted file mode 100644 index 09a15d1..0000000 --- a/yam_indexing_module/initialize_indexing_module.py +++ /dev/null @@ -1,49 +0,0 @@ -import json -import sqlite3 -from yam_indexing_module.the_graphe_handler.internals import fetch_all_offer_created, fetch_all_offer_deleted, fetch_all_offer_updated, fetch_all_offer_accepted -from yam_indexing_module.db_operations import add_events_to_db, init_db - - -def initialize_indexing_module(): - with open('config.json', 'r') as config_file: - config = json.load(config_file) - - API_KEY = config["the_graph_api_key"] - DB_PATH = config["db_path"] - SUBGRAPH_URL = config['subgraph_url'] - - # initialize DB - init_db(DB_PATH) - - # Fetch from TheGraph all offerCreated and add them to the DB - print("\nofferCreated:") - created_offers = fetch_all_offer_created(API_KEY, SUBGRAPH_URL) - add_events_to_db(DB_PATH, None, None, created_offers, True) - - # Fetch from TheGraph all offerAccepted/offerDeleted/offerUpdated and add them to the DB - print("\n\nofferAccepted, offerUpdated and offerDeleted:") - accepted_offers = fetch_all_offer_accepted(API_KEY, SUBGRAPH_URL) - updated_offers = fetch_all_offer_updated(API_KEY, SUBGRAPH_URL) - deleted_offers = fetch_all_offer_deleted(API_KEY, SUBGRAPH_URL) - all_events = accepted_offers + updated_offers + deleted_offers - all_events_sorted = sorted(all_events, key=lambda x: x['timestamp']) - add_events_to_db(DB_PATH, None, None, all_events_sorted, True) - - highest_block_number = max(created_offers[-1]['blockNumber'], all_events_sorted[-1]['blockNumber']) - - # Add indexing state record - - conn = sqlite3.connect(DB_PATH) - cursor = conn.cursor() - cursor.execute(""" - INSERT INTO indexing_state (from_block, to_block) - VALUES (?, ?) - """, (25530394, highest_block_number)) - conn.commit() - conn.close() - - print(f'\nInitialization completed! DB indexed up to block {highest_block_number}') - - -if __name__ == "__main__": - initialize_indexing_module() \ No newline at end of file diff --git a/yam_indexing_module/logging/logging_config.py b/yam_indexing_module/logging/logging_config.py deleted file mode 100644 index 0afdf3c..0000000 --- a/yam_indexing_module/logging/logging_config.py +++ /dev/null @@ -1,33 +0,0 @@ -import os -import logging -import logging.config -from logging.handlers import RotatingFileHandler - - -def setup_logging(): - - os.makedirs("logs/indexing", exist_ok=True) - - logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - handlers=[ - RotatingFileHandler( - 'logs/indexing/app.log', - maxBytes=10*1024*1024, # 10MB per file - backupCount=5, # Keep 5 backup files - encoding='utf-8' - ) - ] - ) - -if __name__ == "__main__": - # Test the configuration - setup_logging() - logger = logging.getLogger(__name__) - - logger.debug("Debug message") - logger.info("Info message") - logger.warning("Warning message") - logger.error("Error message") - logger.critical("Critical message") \ No newline at end of file diff --git a/yam_indexing_module/logs_handlers/__init__.py b/yam_indexing_module/logs_handlers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/yam_indexing_module/logs_handlers/get_and_decode_logs_yam.py b/yam_indexing_module/logs_handlers/get_and_decode_logs_yam.py deleted file mode 100644 index 48b0a67..0000000 --- a/yam_indexing_module/logs_handlers/get_and_decode_logs_yam.py +++ /dev/null @@ -1,113 +0,0 @@ -from typing import Dict, List, Any, Optional -from web3 import Web3 -from web3.types import LogReceipt -from .internals._normalize_ethereum_address import normalize_ethereum_address -from .internals._decoders import _decode_log_offer_accepted, _decode_log_offer_deleted, _decode_log_offer_created, _decode_log_offer_updated - -""" -YAM Contract Event Decoder - -This module provides functions for fetching and decoding event logs from YAM smart contracts -on the blockchain. It handles four types of events: -- OfferCreated -- OfferDeleted -- OfferAccepted -- OfferUpdated - -All event decoders follow a common pattern: -- Extract data from the event topics and data field -- Structure the data into a dictionary specific to the event type -- Add common blockchain metadata using _get_generic_data_logs() - -Usage Example: - # Fetch raw logs from the blockchain - raw_logs = get_raw_logs_yam(w3, contract_address, from_block, to_block) - - # Decode the logs into structured dictionaries - decoded_logs = decode_raw_logs_yam(raw_logs) - -Return Data Structure: - Each decoded event is returned as a dictionary. All dictionaries contain some common keys, - while others are specific to certain event types. Here is a comprehensive list of all - possible keys that may appear in the returned dictionaries: - - Common keys (present in all event types): - - topic: String indicating the event type ('OfferCreated', 'OfferDeleted', 'OfferAccepted', 'OfferUpdated') - - transactionHash: String - - logIndex: Integer - - blockNumber: Integer - - offerId: Integer - - Keys specific to OfferCreated and OfferAccepted events: - - seller: String - - buyer: String - - price: Integer - - amount: Integer - - offerToken: String - - buyerToken: String - - Keys specific to OfferUpdated events: - - oldPrice: Integer - - oldAmount: Integer - - newPrice: Integer - - newAmount: Integer - - OfferDeleted events only contain the common keys listed above. -""" - -# Dictionary of YAM event topic hashes for efficient lookup -TOPIC_YAM = { - 'OfferCreated': '9fa2d733a579251ad3a2286bebb5db74c062332de37e4904aa156729c4b38a65', - 'OfferDeleted': '88686b85d6f2c3ab9a04e4f15a22fcfa025ffd97226dcf0a67cdf682def55676', - 'OfferAccepted': '0fe687b89794caf9729d642df21576cbddc748b0c8c7a5e1ec39f3a46bd00410', - 'OfferUpdated': 'c26a0a1f023ef119f120b3d9843d9e77dc8f66bbc0ea91d48d6dd39b8e351178' -} - -def get_raw_logs_yam(w3: Web3, yam_contract_address: str, from_block: int, to_block: int) -> List[LogReceipt]: - """ - Fetch raw event logs from a YAM contract within a specified block range. - - Args: - w3: Web3 instance connected to an Ethereum node - yam_contract_address: The address of the YAM contract - from_block: Starting block number - to_block: Ending block number or 'latest' - - Returns: - List of raw log events - """ - logs = w3.eth.get_logs({ - 'address': yam_contract_address, - 'fromBlock': from_block, - 'toBlock': to_block - }) - return logs - -def decode_raw_logs_yam(logs: List[LogReceipt]) -> List[Optional[Dict[str, Any]]]: - """ - Decode a list of raw YAM event logs into structured event data. - - Args: - logs: List of raw log events from the YAM contract - - Returns: - List of decoded events as dictionaries, with None for unrecognized events - """ - decoded_logs = [] - for log in logs: - topic_hash = log['topics'][0].hex() - - if topic_hash == TOPIC_YAM['OfferCreated']: - event = _decode_log_offer_created(log) - elif topic_hash == TOPIC_YAM['OfferDeleted']: - event = _decode_log_offer_deleted(log) - elif topic_hash == TOPIC_YAM['OfferAccepted']: - event = _decode_log_offer_accepted(log) - elif topic_hash == TOPIC_YAM['OfferUpdated']: - event = _decode_log_offer_updated(log) - else: - continue # Skip unrecognized events - - decoded_logs.append(event) - - return decoded_logs \ No newline at end of file diff --git a/yam_indexing_module/logs_handlers/internals/_decoders.py b/yam_indexing_module/logs_handlers/internals/_decoders.py deleted file mode 100644 index d47eea5..0000000 --- a/yam_indexing_module/logs_handlers/internals/_decoders.py +++ /dev/null @@ -1,173 +0,0 @@ -from typing import Dict, List, Any -from web3.types import LogReceipt -from ._normalize_ethereum_address import normalize_ethereum_address - -def _decode_log_offer_created(log: LogReceipt) -> Dict[str, Any]: - """ - Decode an OfferCreated event log. - - Args: - log: Raw OfferCreated event log - - Returns: - Dictionary containing structured event data specific to this event type. - See the documentation of get_and_decode_logs_yam.py for details on all returned fields. - """ - # Extract data from event topics - offer_token = normalize_ethereum_address(log['topics'][1].hex()) - buyer_token = normalize_ethereum_address(log['topics'][2].hex()) - offer_id = _hex_to_decimal(log['topics'][3].hex()) - - hex_data = log['data'].hex() - - # Extract additional data from the data field - seller_address = normalize_ethereum_address('0x' + hex_data[:64]) - buyer_address = normalize_ethereum_address('0x' + hex_data[64:128]) - price = _hex_to_decimal(hex_data[130:192]) - amount = _hex_to_decimal(hex_data[193:]) - - # Create event data dictionary - custom_data_log = { - 'seller': seller_address, - 'buyer': buyer_address, - 'price': price, - 'amount': amount, - 'offerToken': offer_token, - 'buyerToken': buyer_token, - 'offerId': offer_id, - 'topic': 'OfferCreated' - } - - # Add standard log metadata - custom_data_log.update(_get_generic_data_logs(log)) - - return custom_data_log - -def _decode_log_offer_accepted(log: LogReceipt) -> Dict[str, Any]: - """ - Decode an OfferAccepted event log. - - Args: - log: Raw OfferAccepted event log - - Returns: - Dictionary containing structured event data specific to this event type. - See the documentation of get_and_decode_logs_yam.py for details on all returned fields. - """ - # Extract data from event topics - offer_id = _hex_to_decimal(log['topics'][1].hex()) - seller_address = normalize_ethereum_address(log['topics'][2].hex()) - buyer_address = normalize_ethereum_address(log['topics'][3].hex()) - - hex_data = log['data'].hex() - - # Extract additional data from the data field - offer_token = normalize_ethereum_address('0x' + hex_data[:64]) - buyer_token = normalize_ethereum_address('0x' + hex_data[64:128]) - price = _hex_to_decimal(hex_data[128:192]) - amount = _hex_to_decimal(hex_data[192:256]) - - # Create event data dictionary - custom_data_log = { - 'seller': seller_address, - 'buyer': buyer_address, - 'price': price, - 'amount': amount, - 'offerToken': offer_token, - 'buyerToken': buyer_token, - 'offerId': offer_id, - 'topic': 'OfferAccepted' - } - - # Add standard log metadata - custom_data_log.update(_get_generic_data_logs(log)) - - return custom_data_log - -def _decode_log_offer_updated(log: LogReceipt) -> Dict[str, Any]: - """ - Decode an OfferUpdated event log. - - Args: - log: Raw OfferUpdated event log - - Returns: - Dictionary containing structured event data specific to this event type. - See the documentation of get_and_decode_logs_yam.py for details on all returned fields. - """ - # Extract data from event topics - offer_id = _hex_to_decimal(log['topics'][1].hex()) - new_price = _hex_to_decimal(log['topics'][2].hex()) - new_amount = _hex_to_decimal(log['topics'][3].hex()) - - hex_data = log['data'].hex() - - # Extract additional data from the data field - old_price = _hex_to_decimal(hex_data[:64]) - old_amount = _hex_to_decimal(hex_data[64:]) - - # Create event data dictionary - custom_data_log = { - 'oldPrice': old_price, - 'oldAmount': old_amount, - 'newPrice': new_price, - 'newAmount': new_amount, - 'offerId': offer_id, - 'topic': 'OfferUpdated' - } - - # Add standard log metadata - custom_data_log.update(_get_generic_data_logs(log)) - - return custom_data_log - -def _decode_log_offer_deleted(log: LogReceipt) -> Dict[str, Any]: - """ - Decode an OfferDeleted event log. - - Args: - log: Raw OfferDeleted event log - - Returns: - Dictionary containing structured event data specific to this event type. - See the documentation of get_and_decode_logs_yam.py for details on all returned fields. - """ - # Extract data from event topics - offer_id = _hex_to_decimal(log['topics'][1].hex()) - - # Create event data dictionary - custom_data_log = { - 'offerId': offer_id, - 'topic': 'OfferDeleted' - } - - # Add standard log metadata - custom_data_log.update(_get_generic_data_logs(log)) - - return custom_data_log - -def _get_generic_data_logs(log: LogReceipt) -> Dict[str, Any]: - """ - Extract standard metadata common to all event logs. - - This function extracts the blockchain metadata that is common to all events, - regardless of their specific type. Every decoded event will include these fields. - - Args: - log: Raw event log - - Returns: - Dictionary containing common log metadata: - - transactionHash: Hash of the transaction - - logIndex: Index of the log in the transaction - - blockNumber: Block number where this event was emitted - """ - return { - 'transactionHash': '0x' + log['transactionHash'].hex(), - 'logIndex': log['logIndex'], - 'blockNumber': log['blockNumber'] - } - -def _hex_to_decimal(hex_str: str) -> int: - #Convert a hexadecimal string to a decimal integer. - return int(hex_str, 16) \ No newline at end of file diff --git a/yam_indexing_module/logs_handlers/internals/_normalize_ethereum_address.py b/yam_indexing_module/logs_handlers/internals/_normalize_ethereum_address.py deleted file mode 100644 index 005ec81..0000000 --- a/yam_indexing_module/logs_handlers/internals/_normalize_ethereum_address.py +++ /dev/null @@ -1,40 +0,0 @@ -from web3 import Web3 -from typing import AnyStr - -def normalize_ethereum_address(address: AnyStr) -> str: - """ - Normalizes an Ethereum address by removing leading zeros and applying checksum formatting. - - This function takes a hexadecimal string representing an Ethereum address (potentially with - extra leading zeros) and returns the normalized form with proper checksum capitalization. - - Args: - address: A string containing the Ethereum address, must start with '0x' - - Returns: - str: The normalized Ethereum address with checksum formatting - - Raises: - ValueError: If the input address doesn't start with '0x' - - Examples: - normalize_ethereum_address('0x000000000000000000000000a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6') - '0xA1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6' - normalize_ethereum_address('0x0000000000000000000000000000000000000000') - '0x0000000000000000000000000000000000000000' - """ - # Validate the input address format - if not isinstance(address, str): - address = str(address) - - # Remove leading zeros after '0x' prefix (keeping the last 40 characters) - # Standard Ethereum addresses are 20 bytes (40 hex characters) plus '0x' prefix - address_without_leading_zeros = '0x' + address[-40:] if len(address) > 42 else address - - # Apply checksum formatting, but skip for zero address - ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' - if address_without_leading_zeros.lower() != ZERO_ADDRESS: - checksummed_address = Web3.to_checksum_address(address_without_leading_zeros) - return checksummed_address - else: - return ZERO_ADDRESS \ No newline at end of file diff --git a/yam_indexing_module/main_indexing.py b/yam_indexing_module/main_indexing.py deleted file mode 100644 index 6b7870b..0000000 --- a/yam_indexing_module/main_indexing.py +++ /dev/null @@ -1,148 +0,0 @@ -import json -import sqlite3 -import logging -import time -from web3 import Web3 -from pprint import pprint -from yam_indexing_module.the_graphe_handler import backfill_db_block_range -from yam_indexing_module.db_operations.internal._db_operations import _get_last_indexed_block -from yam_indexing_module.logs_handlers.get_and_decode_logs_yam import get_raw_logs_yam, decode_raw_logs_yam -from yam_indexing_module.db_operations import add_events_to_db -from yam_indexing_module.logging.logging_config import setup_logging - - -BLOCK_TO_RETRIEVE = 3 # Number of block to retrieve from the W3 RPC by HTTP request -COUNT_BEFORE_RESYNC = 100 # Number of retrieve before resynchronizing to the latest block -BLOCK_BUFFER = 5 # Gap between the latest block available and what is actually retrieve -TIME_TO_WAIT_BEFORE_RETRY = 1.5 # time to wait before retry when RPC is not available -MAX_RETRIES_PER_BLOCK_RANGE = 6 # Number of time the request will be retried when it has failed before changing the RPC -COUNT_PERIODIC_BACKFILL_THEGRAPH = 960 # Number of iteration before backfilling the blocks into the DB the blocks of the last few hours (with TheGraph) - - -def main_indexing(): - - #### LOAD DATA #### - - # Set up logging at the start of your application - setup_logging() - logger = logging.getLogger(__name__) - logger.info("Application started") - - with open('Ressources/blockchain_contracts.json', 'r') as f: - yam_contract_address = json.load(f)['contracts']['yamv1']['address'] - - # Load the config file - with open("config.json", "r") as f: - config = json.load(f) - w3_urls = config["w3_urls"] - db_path = config['db_path'] - subgraph_url = config['subgraph_url'] - the_graph_api_key = config['the_graph_api_key'] - - #### INITIALIZATION #### - - w3_indice = 0 - w3 = Web3(Web3.HTTPProvider(w3_urls[w3_indice])) - - last_block_indexed = _get_last_indexed_block(db_path) - latest_block_number = w3.eth.block_number - - # backfill DB from the last indexed block in DB to the latest available block in the blockchain - backfill_db_block_range(db_path, subgraph_url, the_graph_api_key, last_block_indexed, latest_block_number) - - from_block = latest_block_number - BLOCK_BUFFER - BLOCK_TO_RETRIEVE + 1 - to_block = latest_block_number - BLOCK_BUFFER - sync_counter = 0 - backfill_thegraph_count = 0 - - print('indexing module running...') - - #### INDEXING LOGIC #### - - try: - while True: - - start_time = time.time() - - success = False - - for attempt in range(MAX_RETRIES_PER_BLOCK_RANGE): - - try: - raw_logs = get_raw_logs_yam(w3, yam_contract_address, from_block, to_block) - success = True - break # leave the for loop if success - - except Exception as e: - - if attempt < MAX_RETRIES_PER_BLOCK_RANGE - 1: - logger.info(f"Blocks retrieval failed. Retrying in {TIME_TO_WAIT_BEFORE_RETRY} seconds...") - time.sleep(TIME_TO_WAIT_BEFORE_RETRY) - - else: - # if the request has fails severals time, change RPC - old_indice = w3_indice - w3_indice = (w3_indice + 1) % len(w3_urls) # This will give you the sequence: 0 → 1 → 2 → ... → n → 0 → 1 → 2 → ... → n → 0 ... - w3 = Web3(Web3.HTTPProvider(w3_urls[w3_indice])) - logger.info(f"Blocks retrieval failed too many times. Changing from w3 RPC n°{old_indice + 1} to w3 RPC n°{w3_indice + 1} [{w3.provider.endpoint_uri.split('//')[1].rsplit('/', 1)[0]}]") - continue - - if not success: - logger.info(f"All attempts with the same RPC [{w3.provider.endpoint_uri.split('//')[1].rsplit('/', 1)[0]}] failed.") - continue - - decoded_logs = decode_raw_logs_yam(raw_logs) - - ### Add logs to the DB - add_events_to_db(db_path, from_block, to_block, decoded_logs) - logger.info(f"{len(decoded_logs)} YAM log(s) retrieved from block {from_block} to {to_block}") - - from_block = to_block + 1 - to_block += BLOCK_TO_RETRIEVE - - sync_counter += 1 - backfill_thegraph_count += 1 - - if sync_counter > COUNT_BEFORE_RESYNC: - sync_counter = 0 - latest_block_number = w3.eth.block_number - # we resynchronize the 'to_block' to the latest block without touching the 'from_block' - to_block = latest_block_number - BLOCK_BUFFER - - # We calcul the deviation and we move back the 'from_block' if it is ahead of what it should do - deviation = to_block - from_block - BLOCK_TO_RETRIEVE - if deviation < 0: - from_block = latest_block_number - BLOCK_BUFFER - BLOCK_TO_RETRIEVE + 1 - logger.info(f"resync on newest block - deviation was {deviation} block(s)") - - if backfill_thegraph_count > COUNT_PERIODIC_BACKFILL_THEGRAPH: - backfill_thegraph_count = 0 - # backfill DB from the last indexed block in DB to the latest available block in the blockchain - from_block_backfill = to_block - 17280 # 17280 blocks = 1 day - backfill_db_block_range(db_path, subgraph_url, the_graph_api_key, from_block_backfill, to_block) - - # Adjust sleep time accordingly - we don't want to deviate so we take the execution time into account - execution_time = time.time() - start_time - time_to_sleep = max(0, BLOCK_TO_RETRIEVE * 5.1 - execution_time) # 5.1 because it seems to go too fast with 5 and it ends up fetching block that doesn't exist yet - - # Sleep for the adjusted time - time.sleep(time_to_sleep) - - except KeyboardInterrupt: - logger.info("Received Ctrl+C, shutting down the indexing service...") - print("Process stopped by user") - raise - except Exception as e: - logger.error(f"Indexing loop failed with error: {str(e)}", exc_info=True) - print(f"Indexing loop failed with error: {str(e)}") - -if __name__ == "__main__": - while True: - try: - main_indexing() - except KeyboardInterrupt: - break - except Exception as e: - logger = logging.getLogger(__name__) - logger.exception("Fatal error in main_indexing. Restarting in 30 seconds...") - time.sleep(30) \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/__init__.py b/yam_indexing_module/the_graphe_handler/__init__.py deleted file mode 100644 index a0ef743..0000000 --- a/yam_indexing_module/the_graphe_handler/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .backfill_db_block_range import backfill_db_block_range \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/backfill_db_block_range.py b/yam_indexing_module/the_graphe_handler/backfill_db_block_range.py deleted file mode 100644 index 8da2807..0000000 --- a/yam_indexing_module/the_graphe_handler/backfill_db_block_range.py +++ /dev/null @@ -1,71 +0,0 @@ -import logging -from typing import List, Dict, Any, Union -from yam_indexing_module.db_operations import add_events_to_db -from yam_indexing_module.the_graphe_handler.internals import ( - fetch_offer_accepted_from_block_range, - fetch_offer_created_from_block_range, - fetch_offer_updated_from_block_range, - fetch_offer_deleted_from_block_range -) - - -def backfill_db_block_range( - db_path: str, - subgraph_url: str, - the_graph_api_key: str, - last_block_indexed: int, - latest_block_number: int -) -> None: - """ - Backfill the database with YAM events from a specified block range. - - This function fetches all YAM marketplace events (created, accepted, updated, deleted) - from TheGraph subgraph within the given block range and adds them to the local database - in chronological order based on their timestamps. - - Args: - db_path (str): Path to the local database file - subgraph_url (str): URL of TheGraph subgraph endpoint - the_graph_api_key (str): API key for TheGraph authentication - last_block_indexed (int): The last block number that was previously indexed (inclusive) - latest_block_number (Optional[int]): The ending block number (inclusive). If None, fetches to latest block - - Returns: - None - - Raises: - Exception: If any of the fetch operations or database operations fail - - """ - - # Initialize logger for this module - logger = logging.getLogger(__name__) - - try: - # Fetch all offer events from TheGraph subgraph within the specified block range - # Each fetch function returns a list of events for that specific event type - - print(f"Backfilling DB from block {last_block_indexed} to block {latest_block_number} - fetching events from TheGraph...") - - created_offers: List[Dict[str, Any]] = fetch_offer_created_from_block_range(subgraph_url, the_graph_api_key, last_block_indexed, latest_block_number) - accepted_offers: List[Dict[str, Any]] = fetch_offer_accepted_from_block_range(subgraph_url, the_graph_api_key, last_block_indexed, latest_block_number) - updated_offers: List[Dict[str, Any]] = fetch_offer_updated_from_block_range(subgraph_url, the_graph_api_key, last_block_indexed, latest_block_number) - deleted_offers: List[Dict[str, Any]] = fetch_offer_deleted_from_block_range(subgraph_url, the_graph_api_key, last_block_indexed, latest_block_number) - - # Combine all event types into a single list - all_events = (created_offers + accepted_offers + updated_offers + deleted_offers) - - # Sort events chronologically by timestamp to maintain proper event ordering - # This ensures that events are processed in the correct temporal sequence - all_events_sorted = sorted(all_events, key=lambda event: event['timestamp']) - - # Add all sorted events to the database - add_events_to_db(db_path, last_block_indexed, latest_block_number, all_events_sorted) - - logger.info(f"Backfilling successful - {len(all_events_sorted)} YAM events fetched from the graph between block {last_block_indexed} and block {latest_block_number}.") - - except Exception as e: - logger.error( - f"Failed to backfill database for block range {last_block_indexed}-{latest_block_number}: {e}" - ) - raise \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/abis/RealtYamProxy.json b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/abis/RealtYamProxy.json deleted file mode 100644 index cf0e562..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/abis/RealtYamProxy.json +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"offerToken","type":"address"},{"indexed":false,"internalType":"address","name":"buyerToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OfferAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"offerToken","type":"address"},{"indexed":true,"internalType":"address","name":"buyerToken","type":"address"},{"indexed":false,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OfferCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"OfferDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldPrice","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"OfferUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"tokens","type":"address[]"},{"indexed":true,"internalType":"enum IRealTokenYamUpgradeableV3.TokenType[]","name":"types","type":"uint8[]"}],"name":"TokenWhitelistWithTypeToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MODERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_offerIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"buyOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","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":"buyWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"offerToken","type":"address"},{"internalType":"address","name":"buyerToken","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"createOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_offerTokens","type":"address[]"},{"internalType":"address[]","name":"_buyerTokens","type":"address[]"},{"internalType":"address[]","name":"_buyers","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"createOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"offerToken","type":"address"},{"internalType":"address","name":"buyerToken","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"newAllowance","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":"createOfferWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"deleteOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"offerIds","type":"uint256[]"}],"name":"deleteOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"offerIds","type":"uint256[]"}],"name":"deleteOfferByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"getInitialOffer","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOfferCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"token","type":"address"}],"name":"getTokenType","outputs":[{"internalType":"enum IRealTokenYamUpgradeableV3.TokenType","name":"","type":"uint8"}],"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":"admin_","type":"address"},{"internalType":"address","name":"moderator_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"pricePreview","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","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":"token","type":"address"}],"name":"saveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee_","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"showOffer","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens_","type":"address[]"},{"internalType":"enum IRealTokenYamUpgradeableV3.TokenType[]","name":"types_","type":"uint8[]"}],"name":"toggleWhitelistWithType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"tokenInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_offerIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"updateOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"newAllowance","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":"updateOfferWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}] \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.json b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.json deleted file mode 100644 index bfdb418..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.json +++ /dev/null @@ -1,1172 +0,0 @@ -[ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "oldFee", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "newFee", - "type": "uint256" - } - ], - "name": "FeeChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "seller", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "offerToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "buyerToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "OfferAccepted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "offerToken", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "buyerToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "seller", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "OfferCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - } - ], - "name": "OfferDeleted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "oldPrice", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "newPrice", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "oldAmount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "newAmount", - "type": "uint256" - } - ], - "name": "OfferUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "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" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address[]", - "name": "tokens", - "type": "address[]" - }, - { - "indexed": true, - "internalType": "enum IRealTokenYamUpgradeableV3.TokenType[]", - "name": "types", - "type": "uint8[]" - } - ], - "name": "TokenWhitelistWithTypeToggled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MODERATOR_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UPGRADER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "buy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_offerIds", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_prices", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_amounts", - "type": "uint256[]" - } - ], - "name": "buyOfferBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "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": "buyWithPermit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "offerToken", - "type": "address" - }, - { - "internalType": "address", - "name": "buyerToken", - "type": "address" - }, - { - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "createOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_offerTokens", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_buyerTokens", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_buyers", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "_prices", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_amounts", - "type": "uint256[]" - } - ], - "name": "createOfferBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "offerToken", - "type": "address" - }, - { - "internalType": "address", - "name": "buyerToken", - "type": "address" - }, - { - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "newAllowance", - "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": "createOfferWithPermit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - } - ], - "name": "deleteOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "offerIds", - "type": "uint256[]" - } - ], - "name": "deleteOfferBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "offerIds", - "type": "uint256[]" - } - ], - "name": "deleteOfferByAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - } - ], - "name": "getInitialOffer", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOfferCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "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": "address", - "name": "token", - "type": "address" - } - ], - "name": "getTokenType", - "outputs": [ - { - "internalType": "enum IRealTokenYamUpgradeableV3.TokenType", - "name": "", - "type": "uint8" - } - ], - "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": "admin_", - "type": "address" - }, - { - "internalType": "address", - "name": "moderator_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "pricePreview", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "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": "token", - "type": "address" - } - ], - "name": "saveLostTokens", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "fee_", - "type": "uint256" - } - ], - "name": "setFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - } - ], - "name": "showOffer", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "tokens_", - "type": "address[]" - }, - { - "internalType": "enum IRealTokenYamUpgradeableV3.TokenType[]", - "name": "types_", - "type": "uint8[]" - } - ], - "name": "toggleWhitelistWithType", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenAddr", - "type": "address" - } - ], - "name": "tokenInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "string", - "name": "", - "type": "string" - }, - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "updateOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_offerIds", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_prices", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_amounts", - "type": "uint256[]" - } - ], - "name": "updateOfferBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "newAllowance", - "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": "updateOfferWithPermit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.wasm b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/build/RealtYamProxy/RealtYamProxy.wasm deleted file mode 100644 index 1f0769fa71c98b5a041f1cc7c583d7f06d37ac5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37870 zcmeHw3!GHN)#tr^d!BciX@=+Uke&gR_q<<#!X2Om0YSk>h{@Q@G(*p$d+6>#CNVH7 zDk>@}zDYt7qb7@yeCzJAU)Wue_&`GpNsR06M-mfFf=UvSn8YL`e*b^feRVU#0GIrB zfBW0%U!7B3bed^yty{M$$SODZwp!m&tSC45 zQ6q~{zeU~ZyHCy0qVY{Rk#&h=TFEVJO~f}vlc`uDUYhRfi7vFi&R*A-j;7WmmP9uz zii>PwHd(BFX*|6qu{xcM#oHAnFW%d|4iZPKi?uI`w#K?6U9;16ZB8uS7TsKsN+*)h z*{Nt+QMJ${Maxq(O;uG5ol;aK-|trxAAa!7my_f7t3AM)s;IdK^1g~58;ZVFkw9h6 zN1ze-333Q>3GxW?2?_`b33P%Yf&jrVf?|Ro!Ek~Sf)NBG2}Ti&CKy97mY|ei9Km>k z2?P@fE+Cjh5F#ieC?}XqFoobkf{O?)CYVYvjbJ*#41$>ivj}DrR1j1WR1s7Y)DYAX z)DhGZG!QfrG!e`pm`gB^;1YsM3FZ?V6juDEfZr1E+XB8I;EMvjB;d;e9un{s0bdpH zI|3dS@Vf%OCgAr3JR;!t1^j`4KNRqF0e>Xm8v-5^4S0 z-xBa=0{&dUw*`Dhz+VXXO96i+;4uN;74SU)-xu(>fWH>-Hv;}vz!L)gPQc#__y++$ z5b%!z{zKUaLZIRV{vmIx(fYn2xVRItUr41YHwuDR7;!=0T;`D}SGTPgH zO{A+gss%HcRx?=3is7T&OqZt;aamqs^+q&o4#J2GDT_Bng4>h4G~jg>5&jI^c~M!LGRF_y7hT8tfMl3RUWlZ?bu z;J{j_m5$7+Z0<_5c536Sp|E&_^zj#(#MdSxJ?IR-u}9gRnP6GTq!R-)aZDz&)AtLq zb&$56Wc9_>^^i624tH5Lx9GZ7KE-U#QqpC1m%z!B2Pbpdm@+AgO7_?#=fVpHq;N!B zG;=@#77k>>i!Il=Dw^u;N)JLN3_H~tUrA~=DJrK8Gn*9-dv&8Wy*Q(ws$QFsSyEH2 z&CD#RuhnK{h*{dG&CVcM3NaO#B@k1YSpqRt86{!RRA-ierY2)Hxh8$>1XJ@XqLHNN z&Z0;2p{rGHNL-@b+v<7RolXXQj+1V9c6-jT< z8m&RKMS?ztNSsKnPDeVUT2m-n?CLHw7j3iYv^iGzv1P1|wZ|jr-egppdx};IH}u9k zmqa6N=+HdNH3cWuid1S@v~N{3*&R!9A1igg#4?wp;-r=pms<0J6^mlYsGRWg-NmbV z*LB5OAyr%8E_O6D%3K``_r`?`#sWtTt=XC!Y$)8@)x~u!m2y!mbPJcYY;%zn5rl^B zv0Usnyj(lMmgtSA<*;dCcbki%Jza@DD-N0zmrWc*bF+Sldt5|B#L{WjEp^*ejI>#C zxm#nStqr{}YnHjaPcGq3<#Km-WMyV|R#*|;8ARdNJ!$O8?G+Wv_B~U#thFN3M1^XuG(a3Txa?-4kg|H^q;#a_4Xk6Vq1SrA{|}4Ne-@- z&NSYl-eg2<)Os_GCpS5pGRG>@iL@It^%S*SGPTVER8R@6FSBu5sZUuGQfh9MFOQ|t z+NZO1kR37md{gG+3rC~cXEF!Fj4fL-Z6`}t#=H8Yn{3UTNXujG8`83-U%e>9tfFdR zR}8ywBb|=4c3RqMH>;W5v*wI;i<&thtcn%bdBwC_)yy7RwX5+Os4J>%%VI{y)2pLt zvs<^RnYMOT+}l-a4U(SR^uXww5>?B)7pZ4hnhJkPMFc|$?Eo+Sa&p)j&%2E z_o|s5u_o4|-KS;_zANktf8D8CL0$F|9lu}A^rAJJn-gt)+5=fbY=t)M!7PRBz@_cV zYTT|dJ@}z4BiZ#BWbI)!GmN_{Wk^hEj||p;B+wqsa-eJEYf7{E$JESFw*p(MNPAS+ zRa@mc$q3Gtc_JnOGBY9&qvMDOvVz=$nX7Q?IBC&qudbv5%KC4|ao==gLzlxGfMWuSzGiFRIpJfjvjEGafZVz?WaHs3R+rP6J1@{jw|JQOG`4HjAka=#!Ol z)$n(e`#>?G!|2&)_&dv$j&g0jQtmf`X``5h2LT{ysKXjQWpmla4K^Yppc4Q7;2~dsv5o(RwZ;`p$`&$ zX0^}IY{FcdPy>bEF3&g1LrSNiZ7lb7ltTQl;vM*D`5;!pVPfTYmBt*UNqf%dQ5=wARs`li8tD!`R6Cx)=24E{(&%W;KpRWLtPB7bL@#+hm z6l06|h>VI!=%1wspQpQ*`6vR)XdBU4F#C+482XS3Ynko}0}7vHSw78=KEc{_KNS;7 zbOs1b8bM1UItvp>$}Bmy0bmFC2qsM?B_oQE2_))$W<5+XS4G z0|wVYFMQ@lbPt^!rYWiqwqn=Ha;TeW36WFhD5?-@n+y#MWHk+a6qXupTS^5_emaz6 zjNO#9jg|vu6l$^%bD9koNJ_sfG));O&v8)>Zq*{+K*~d+oW5vJSVj!7=ng}cscea@ ztPc!9DjReun+s+XqK1X0vW1coH7qoh9R_6`%F`&TI?6)M>Ag_cbA+v;28OXzG2f+P z9#ljjEbUTJmz1!yOT}WS=ui%>B0L{1o8djuD;!^t?p8jCr~F@CtC`*{+yky1LV?{e zIdiNzI`BL=54}4B9jw`ZS{=?njuj;=IdF_Yro{j;Lx0VO)ys$YS0;QvjMX0|>kM&u z4k2`=JF&FTIYR!Rj+n{pQj{?0BWmPr#L59DW)7wP#Q{ILIw_6&3Pwi;2@!&Q90`VC z#$GVNc}>s9O2HKu1%i_+1^C2*L0UmfH3k=Hwn}O&9$CtT{2f{Pl|#P{cB*3_ji`r1 zA(eCM!5%vGjs$4>4Zm8r)yL%s3$s|8wackFzJ#=30g)Okbd?lw5u<%HwqPij*r>&x z3egC0z$nFzAW!ZY1oDTlH(;#IlRE=SF3-WTgebv{RS5Zf`oJb`K7H7Ce)N&T4eSY> zi~k6tl50P9m7r6~bIS_YdKxRT*y&;*1ztM7oXZ+_V)@I)8@_ZoydtD78(*HEy%~Mm z+Kd)p6~y+Yc%z|)R4l@V!X5K0Lt}%J!Hsdj+D{vl7j}fp^iV!l(Q@cy?w~Q|g`pyP zmyT4Fz4xv)%H+0%d)7kiv~_2vUBu4nWY5}Z7ooJs*=ZLoP{fv7?6eE9(=HG@Z7zz1 zGy}ed3YLw>o|^g=28%*UnF^1hLMZ95IS@kGn-KN|*j^)#o+usYQb_B>?oA2hVwV(x zTn?2$ejS+G2w-l_uxO<_LV2T1S2N*oq6PEP2kgNgaQ$NAnIx_uiW3fqQ&cZ5W4 z3T%EBTJ-2VM}b9XhYW?(fb?c-*m{YUBxMe&@Wdn)QH{zD?9O!kQT(Y9Mvo>uF`*bU znPC*bn6#-}8IKvc=bqf9*lkl&i3?X^#^#`aT{bj!>R8^&4!E0U^gsJ^zoa_2?UI#7 zuAuAR_5M+9CBh;JzV$yVK#PFffk~&Pg)1P!BD{s z(=Ykm@-z6U>6b8|OPpYhLqaAizn{t~TpEw{PjjH5amGmJLbKpl{T?3&9NKo4=ZbJA z!$mH9Q%rS4`y<78&MW4^s^U!q%5&i2@FfQ4JbcZwqYjM12dx~qKv|AxJs19O#iVkz z3k2q{mT3kaFd#E0lq=qAWXj~|gBUB9BOPm-nr6fb<#m)HM5<`pqGRk6m0YJ;>DIv! zO=q`Q(0^Ms!3zuNkNaT`>!HZO(iCivmKs)|YW|$uynLUp0Fx?M!slOx#T>>+1!&ket|0QwL~giWJ`dB6 zL|``hX9}4FMaIFI!7;&M##=Lk!_ey^1y&!pjvD>5*oT7|eF*Y>g&34Pk{l5vKhGrb zLDUDc1yyh)V!Ux;wsCwm2hz6*Qy@4-pQ9Lub)hG~a>#k1!bN_t!Z=XjB8Rwxve96H z{x7*cbqin5P4$fgO;9!V6$gj$t3T)q4#Q;d8>51`!F;^@(4G}09s?6&j&QX>pyt~p zAC^um*#XdwcUMXph@I*iixI-6$sa6s3(3t8a&Y*NLgcc1Iw2>97UCOHlRYIvY9jW* zr|-_tLi|#bpxY*5Gi4k0;D{kL$r)0}iJ^t$4k={kNNQp^id*B%QQT+K`Q1dB-8x|t z1*iHZ3{JOal+`HcraE-k*wJ;c-!c7f6rx=KJILYkC1L+) zBkJiV&GXfA(j2IklV)GFv9~&F() zi>2nGQ>Km2I5>ignJdnqvxjo9cI_MKtba~~(F}K3Gf7XFq=QB_lWxx_De`o|%_KeI zkPaH(6rrdU+jiD)oSyLyF-~>nIMtcsRA=n1%NnPz`mJ#Sku^?V%^7-}rk+J~n|8`D zo$2^+IL*~>a3N-N8+4F;#?Ja7g_zOpG(rvzEyRp&rx9{uXdy%I2=+8sOCmRHgE=hS z+M*lOTYbhqdmTQ~KwrI6JH4-d&?J5JWRvvO6HUhPrYv8*TQhxi&m6~Bw~tVqN1^|p z^J)R{$_3Ad;ed)qP+u6ovBWPI!vPJ*AI4j8JeY(7c#1S~!+~6&yl?=o361=40KZ={ z3c>-rdNc~dfkGfX9KchCQ4|i~{i6{G2e5ZEhJ^!oxG;*t0X(`J!Ek`T{T?0;3I;Q+RF#`thxG|+@_U<}a2a9}LZ=x_i#H)BjVFb-&JIDkhu zqcj|t05mQfmBk;XoBobvS_K(5MLqYJh6Pfm)!tZ~(E_s1FC~ff~Yr2B5}ppb@Ak9KeJy=7a-q zd1G!kFc)ZEI4}?Bl5pS>p!wmzr9cOja9}?0H-WLoHNFLG0Dl{}8TbX@g}^TYF9LoE zcrozHz+vD+z?T8P0=xwHRp6z--vPcH_%QG?;O_!22YwBB1@QNPuK+#*yb}2Pz^j0N z0DL9z4}q@&ejRu<@Q;Ak0KWlzHSjSw&^5sC0$&UK9`JR*?*o4f_$ZucE%1+lKMwp8 z;Ol{Z3j7J+w}3wh{4?Md;GYBE0Q@#^1o$1`b-=#>ZUz1&a2xQifTO_2fY$@R3)~L; z9`FX>_km-;$AR&t%=k5MC-858yMTWS+zosJI1cOw&H{d?tlfa(>{yXref&T$~6YxjCc>8JeV|Hx; zz8M(L@Ww5`{VFoIB6Bk{+mN}1ncI-Lm6_X-*~ZKr$lS)vc4Tg6=1yepVCF7lwli}# zGIuhw1DU&+xd)lMnYkC49n9Q^%stHPMCM**?nmZ6W*$IhCo>Nsb3Ze?ka>Wahmd)Y znTL_t#mpnfJjBeS$UMxc$wf3!7Bup zAbppa*9g8x(16s0G#BXz3%*J4BZ6<)xi^^mUj+X~aFpQ31V178DZyI=KO+bs{hXP% z3Em<21;MWfen{{x!FvS1CHNh|9|-?Og4_A^4ubFV>kkNM=GU3o&hk46L=Wy} z?p}fi2<|8NBEi!HUm^H9!50YrBf+x-&l5aM5JLK|%-lurS%Mt|PZ8`U*iW#F;2Q+@ z5#X;+b>qJiJVfvy!G9w7SAwq*JVEe32p%JNl;BGQUnY2x;1Pm71pk>}AHjbipi+-p znP-@}hu}GaZxZ|mg1rP^CHOqS0fNsFe2d^;2>u(vw+Rjsyg=|W!HWbh5ga0Th2T|! z?+_d&pc3C@Mi^Sra~15$a&$kCj=$6qX{0jwD|j;vB6Z4FRAcWUWeR@9w7>3u<4+WK z7LO!a(ygsR||=}4=Uw31X}N?d8j1eNvs^YsAhbCH&!CXKZSH8U0C&3t`4Yeph9 zgR5Oxq(qfg>4L^9BJ5}bXCaX{7{ za&g9$UhskQsH{8Y;%o*_8f~Z0rmWpw==4hJX6nAXP_|p>=p<_z(JJcDuS11;DRnAA zS|fTx$!TcTt@L0;0@XY;RH#p%3W|_lQ5GQGfV2~7AJP$|6G*`vMX5wul>>9?Lim1N zAEkjUh}4fNCWrnD&`bU!KvC#`JYf*|Pe57K3%ABVIB z6fqdN0z8&6XG3)u<^ZUn_Msvje+MSpG=xDD7_taxVi*|w)hluwBDO^t?P$?BDS5XC z^b5&*K}JhSa8w8b^`d2~wSX}5p#b^>YS;qu+t5dpLyKbpeFn>?AhC~aXk|0nOkj}H z0G!R}$YdXr*2GfaTtJ3UobsQ>?C5~38F?&bYh7aje_!tL*x(Y8p6x3T)$h#iN8Px@_2CdSAHhPew z9F8Bgu5i`OLU{@$t)PpbZ*kDeMdM#Ttc8?U^ z{me*bo-m+toKt|Uppmm|3BIK;HpWqKAmkhysgI#Xj0#y0~n~_VIPjtBb2umX`#^3@=NNv2|OWXrR@m| zAwP<8hFL};`UGWj)`gTCMUJya&R^--OR*prM@P#UKU$x~)-FQgjE*DGGEyGn2YodP zT_aWu**!*A_hQbE(I3NPQRC7k|9xvnic)gQ)wjnX1xlKP+nFbE}N*nmNO2~DI(N%ik zsS%&^Aq}sL3W^ZglF^n!R-@FT-3fB0PH?=^u@47223uF4zidU$E~~fTWQ3UDtP7Qh z3={PGv`U4aDx_+p8l+mJI;47}2Bb!$CP7gJSOvN&&{cu13UpPVs{&mW=&C?RDWs?t zA6l#ysSc?gsR5}GsY$d%DWs?opIX2=qehO~|qL>>0JDMr@6eNX1VhQWGF8 z#NM-K)S4QxHA*5CKTY^ZE7C&jJ$pv2sS#VFBvKhWLb`8)AA8)8en-9v-{MB(Oh>5_ zepZRGuS8_3gzr_tmnso#IKF2xdR5@B0)G|wtH56c{wnaF>8MtNzZ(42;I9UMHTbK+ zPro{o(XIi14ft!oUjzOc@YjH!K6xfyPz(NA@YjOB7W}o~uLVE-`Aoc{4*YfCuLFM_ z`0K!52mUklntJfpgTEg9_291ue?9om)SDW>-vIsw@Hc?J0sIZ%KT|Jj1b-v=8^PZQ z{zmXOg8xjtuL=B3;BNwd6Zo6J-voYo6+MHa%MqfLX({%W8nab$M#N_wAou5ONL+u{ zLn6JBo<;BA2y>KZXucT+uJ2=7| zC0d%+VvngcTP8O@+?mQ*$eG01K#!(Z(zECt9ASWj6N7;xqiMy&^tcW*aUFuUlg@`jv ztSgUBJDatTaT9CdVel@;-glagKe$v-Hq@Fw&_g%Z)agRbGt>1t%9%Z+9P6Q+7LQYt zznR>w_^oB1I@btA;mhPYFJY&vO@Ye9KEPoT!>_4B}K7l@=6xRK4=9yY| z9Y&P9Q@P*Z{-ck!IWSA~@X)L?>mmNc6P_dY^Wqugq~zZ|Td$&a(~+)*)jNe(-3S zvCMY~I~s(fM;ja}DJg^M0H`qbhZ@di?61ZglQHHjpXK*9im~6{c#dPA-S9tY?2k4H z(;aJa#(n|gV%FI2m?JGbXP~jqRMj{DTC8h_=bYV3-;=V5?Q@-%zN;o8C?lCKefQ1P z1Fu1`5VgY(*RQ#{&u1Xi&ehc%{04QdexZSyJS1YSe#8YP=K3bT8&A&D3q$zIA4+&( zo?ZehenJw7^0(&c0lr4!55o@{-FAs=bQiE6tWTQXpC>NB@3$|}3-GF1{EUWfnO{$2 ze%*GdzSw}CRPAOHtI(ITVTG&$B)nk0w-GPg+#Ha5IL4(>hHqw zxT5vFR_1_}Ic#N)B2(bVF+SjTOCGv=7>Dbsz$bx)tQ|OKS7df0li^YaSYU|)Hg@4K zUh*CQ&Zv0ZtT+xVWSz7!2XJz)C^>9pP9j4gJ8+sW@op2p11x#X%snZ8JklLicMhAP zjM&l@TUW8JH--~`;;D)VPmNZWh{6T!IPG#nPco5C;NXr5@oiQ*Re_V#x)X6A>tN{$ zo&th{SIl#!T?b41mV1DkPe{KGxNh-+bBzZA*${QE*OOssg8V#?pP0Vcb+Y z+1m%sX4DJnh9kf>m-uJkD{dkOz96-Y%w^n|O3=1y1_ujb3`` zCAB3IPsIDW6TPXMD#wHz-Ao_oz#)24aWU`4&h^k#>A5m5LtGknQ7YM5 zfy1=B(zE&^-LnvtH}_Sz&eS#!+8%%L5Oh4~if3<67)qdd9QVYb=*$zkFSsO*)74tK z6K%a+(Nx7?Ye#!mVqFAliA2sBQj_MM1G{zVR46+nP@wrQo2XM)=&KI7$7{m~H zI=X+6Cm~hxJoOxJQp`ipbG=D14^7YWAjLU4J>SC^xz2?z@F>Q#Orb|HrfKx>xevDc zwE7~ia!h>!9)`*}9DA6Dc_60~&d@JjdhVtXLLAo#F83(PI(J^|9EN*U%sHsNWQj+` z?Bmr(c<@JIExDkM^x8LZOrba|a@5B?_AO(3EY-8SJNo+bFWecHG0V{jP)?3 z9BY=YICqsS?{ytRIqov=;>1Ci<2?i(OD~?_KH<7^SLpQjKTPy6Gh8=DTyVK(1#R!0 zbRMiPLQ%+rZ#nK><{@0$eJVc>eG=|I`Py?g^Z+5l>E@Jc&Z}U%=NDe(U9Jpoj;D9&Wg!XJp_Dt^3qN;wT zXBjosvpmbFubu7H97`K3ysCj)TPi)vsHv{xcRt3$b@9q29u{Arow#ZSm)JNL`G|48)WZ~! za_u{c=6l$|P?UYE(E^Wx>{}TOkAm#cY+mEd;Re2IX`zRW4-GcZ?M#b2c3EB-06$sm zVZSa$(-rH&9z(zYcSc?2(RKsfGPPvY`5R>!N|$4Q9&|>fV#_>^ zE`If6Ux>Bb<4Trwzt#$m&N9G_TvvE_AK?T!^UkW39))Gx`nAfVgE-49?+LroM!3Xntp^*4r$^om_i?We2vFpD4~odki*WzkCp>JGZ6TstpY#xw zr6lK$yA}^FEoIra;@#jO3|OMv_vl4DcT>FR5++;c;ZZ>9CS_&Z)z|7_MYDvuZue{R zEY7;5OmsQw;Zam-=UnY21g`h2pLH>p5ZCV6UF_g2~^ssYxiCNm#<=H=kKFXmJm(+@&zarG$rHn^;m9l6uZV zlr%%zM$cx?x|tGJe4hOupO}lR)kpKn%G7z#E#vmf^wnN<8}Po&UeA-#x?yvZ=SeBn zg&RG`vdraWv*$4t^7taL@BE13O`)IiYY-dUfk9s%L+*Hbl3op7$=6C~-aP zHr2DsS@PtCvbT9x5bLIM1?}ys=V@=h9=${L@DfeV)>E&!-L86gf0HTHz8LpT)x+~} zrcCQ9-MduJk&3%$4mNMkz5D!#v##si;oXR0kMF+V_a5)z!Fg`D*Sj0qmk8gddJfCD zc6g`iIi9-Sb8vyZU-j^YL3-Vq%@3%amkW6r@`K)kruCGz%lqKjPgDQZZgJ){(2t(SZcCAmd0!|pu9|*a_59T4x}5q6?@NVicHzIOc%Aib zFLT4ZTv|M;e%8yXZ3@b`GW&C?ho@BQ+UrRB=e, maybe as a - # workaround for https://github.com/docker/for-mac/issues/6270? - PGDATA: "/var/lib/postgresql/data" - POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" - volumes: - - ./data/postgres:/var/lib/postgresql/data diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/RealtYamProxy/RealtYamProxy.ts b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/RealtYamProxy/RealtYamProxy.ts deleted file mode 100644 index 7e0a9aa..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/RealtYamProxy/RealtYamProxy.ts +++ /dev/null @@ -1,1787 +0,0 @@ -// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - -import { - ethereum, - JSONValue, - TypedMap, - Entity, - Bytes, - Address, - BigInt, -} from "@graphprotocol/graph-ts"; - -export class AdminChanged extends ethereum.Event { - get params(): AdminChanged__Params { - return new AdminChanged__Params(this); - } -} - -export class AdminChanged__Params { - _event: AdminChanged; - - constructor(event: AdminChanged) { - this._event = event; - } - - get previousAdmin(): Address { - return this._event.parameters[0].value.toAddress(); - } - - get newAdmin(): Address { - return this._event.parameters[1].value.toAddress(); - } -} - -export class BeaconUpgraded extends ethereum.Event { - get params(): BeaconUpgraded__Params { - return new BeaconUpgraded__Params(this); - } -} - -export class BeaconUpgraded__Params { - _event: BeaconUpgraded; - - constructor(event: BeaconUpgraded) { - this._event = event; - } - - get beacon(): Address { - return this._event.parameters[0].value.toAddress(); - } -} - -export class FeeChanged extends ethereum.Event { - get params(): FeeChanged__Params { - return new FeeChanged__Params(this); - } -} - -export class FeeChanged__Params { - _event: FeeChanged; - - constructor(event: FeeChanged) { - this._event = event; - } - - get oldFee(): BigInt { - return this._event.parameters[0].value.toBigInt(); - } - - get newFee(): BigInt { - return this._event.parameters[1].value.toBigInt(); - } -} - -export class Initialized extends ethereum.Event { - get params(): Initialized__Params { - return new Initialized__Params(this); - } -} - -export class Initialized__Params { - _event: Initialized; - - constructor(event: Initialized) { - this._event = event; - } - - get version(): i32 { - return this._event.parameters[0].value.toI32(); - } -} - -export class OfferAccepted extends ethereum.Event { - get params(): OfferAccepted__Params { - return new OfferAccepted__Params(this); - } -} - -export class OfferAccepted__Params { - _event: OfferAccepted; - - constructor(event: OfferAccepted) { - this._event = event; - } - - get offerId(): BigInt { - return this._event.parameters[0].value.toBigInt(); - } - - get seller(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get buyer(): Address { - return this._event.parameters[2].value.toAddress(); - } - - get offerToken(): Address { - return this._event.parameters[3].value.toAddress(); - } - - get buyerToken(): Address { - return this._event.parameters[4].value.toAddress(); - } - - get price(): BigInt { - return this._event.parameters[5].value.toBigInt(); - } - - get amount(): BigInt { - return this._event.parameters[6].value.toBigInt(); - } -} - -export class OfferCreated extends ethereum.Event { - get params(): OfferCreated__Params { - return new OfferCreated__Params(this); - } -} - -export class OfferCreated__Params { - _event: OfferCreated; - - constructor(event: OfferCreated) { - this._event = event; - } - - get offerToken(): Address { - return this._event.parameters[0].value.toAddress(); - } - - get buyerToken(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get seller(): Address { - return this._event.parameters[2].value.toAddress(); - } - - get buyer(): Address { - return this._event.parameters[3].value.toAddress(); - } - - get offerId(): BigInt { - return this._event.parameters[4].value.toBigInt(); - } - - get price(): BigInt { - return this._event.parameters[5].value.toBigInt(); - } - - get amount(): BigInt { - return this._event.parameters[6].value.toBigInt(); - } -} - -export class OfferDeleted extends ethereum.Event { - get params(): OfferDeleted__Params { - return new OfferDeleted__Params(this); - } -} - -export class OfferDeleted__Params { - _event: OfferDeleted; - - constructor(event: OfferDeleted) { - this._event = event; - } - - get offerId(): BigInt { - return this._event.parameters[0].value.toBigInt(); - } -} - -export class OfferUpdated extends ethereum.Event { - get params(): OfferUpdated__Params { - return new OfferUpdated__Params(this); - } -} - -export class OfferUpdated__Params { - _event: OfferUpdated; - - constructor(event: OfferUpdated) { - this._event = event; - } - - get offerId(): BigInt { - return this._event.parameters[0].value.toBigInt(); - } - - get oldPrice(): BigInt { - return this._event.parameters[1].value.toBigInt(); - } - - get newPrice(): BigInt { - return this._event.parameters[2].value.toBigInt(); - } - - get oldAmount(): BigInt { - return this._event.parameters[3].value.toBigInt(); - } - - get newAmount(): BigInt { - return this._event.parameters[4].value.toBigInt(); - } -} - -export class Paused extends ethereum.Event { - get params(): Paused__Params { - return new Paused__Params(this); - } -} - -export class Paused__Params { - _event: Paused; - - constructor(event: Paused) { - this._event = event; - } - - get account(): Address { - return this._event.parameters[0].value.toAddress(); - } -} - -export class RoleAdminChanged extends ethereum.Event { - get params(): RoleAdminChanged__Params { - return new RoleAdminChanged__Params(this); - } -} - -export class RoleAdminChanged__Params { - _event: RoleAdminChanged; - - constructor(event: RoleAdminChanged) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get previousAdminRole(): Bytes { - return this._event.parameters[1].value.toBytes(); - } - - get newAdminRole(): Bytes { - return this._event.parameters[2].value.toBytes(); - } -} - -export class RoleGranted extends ethereum.Event { - get params(): RoleGranted__Params { - return new RoleGranted__Params(this); - } -} - -export class RoleGranted__Params { - _event: RoleGranted; - - constructor(event: RoleGranted) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get account(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get sender(): Address { - return this._event.parameters[2].value.toAddress(); - } -} - -export class RoleRevoked extends ethereum.Event { - get params(): RoleRevoked__Params { - return new RoleRevoked__Params(this); - } -} - -export class RoleRevoked__Params { - _event: RoleRevoked; - - constructor(event: RoleRevoked) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get account(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get sender(): Address { - return this._event.parameters[2].value.toAddress(); - } -} - -export class TokenWhitelistWithTypeToggled extends ethereum.Event { - get params(): TokenWhitelistWithTypeToggled__Params { - return new TokenWhitelistWithTypeToggled__Params(this); - } -} - -export class TokenWhitelistWithTypeToggled__Params { - _event: TokenWhitelistWithTypeToggled; - - constructor(event: TokenWhitelistWithTypeToggled) { - this._event = event; - } - - get tokens(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get types(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class Unpaused extends ethereum.Event { - get params(): Unpaused__Params { - return new Unpaused__Params(this); - } -} - -export class Unpaused__Params { - _event: Unpaused; - - constructor(event: Unpaused) { - this._event = event; - } - - get account(): Address { - return this._event.parameters[0].value.toAddress(); - } -} - -export class Upgraded extends ethereum.Event { - get params(): Upgraded__Params { - return new Upgraded__Params(this); - } -} - -export class Upgraded__Params { - _event: Upgraded; - - constructor(event: Upgraded) { - this._event = event; - } - - get implementation(): Address { - return this._event.parameters[0].value.toAddress(); - } -} - -export class RealtYamProxy__getInitialOfferResult { - value0: Address; - value1: Address; - value2: Address; - value3: Address; - value4: BigInt; - value5: BigInt; - - constructor( - value0: Address, - value1: Address, - value2: Address, - value3: Address, - value4: BigInt, - value5: BigInt, - ) { - this.value0 = value0; - this.value1 = value1; - this.value2 = value2; - this.value3 = value3; - this.value4 = value4; - this.value5 = value5; - } - - toMap(): TypedMap { - let map = new TypedMap(); - map.set("value0", ethereum.Value.fromAddress(this.value0)); - map.set("value1", ethereum.Value.fromAddress(this.value1)); - map.set("value2", ethereum.Value.fromAddress(this.value2)); - map.set("value3", ethereum.Value.fromAddress(this.value3)); - map.set("value4", ethereum.Value.fromUnsignedBigInt(this.value4)); - map.set("value5", ethereum.Value.fromUnsignedBigInt(this.value5)); - return map; - } - - getValue0(): Address { - return this.value0; - } - - getValue1(): Address { - return this.value1; - } - - getValue2(): Address { - return this.value2; - } - - getValue3(): Address { - return this.value3; - } - - getValue4(): BigInt { - return this.value4; - } - - getValue5(): BigInt { - return this.value5; - } -} - -export class RealtYamProxy__showOfferResult { - value0: Address; - value1: Address; - value2: Address; - value3: Address; - value4: BigInt; - value5: BigInt; - - constructor( - value0: Address, - value1: Address, - value2: Address, - value3: Address, - value4: BigInt, - value5: BigInt, - ) { - this.value0 = value0; - this.value1 = value1; - this.value2 = value2; - this.value3 = value3; - this.value4 = value4; - this.value5 = value5; - } - - toMap(): TypedMap { - let map = new TypedMap(); - map.set("value0", ethereum.Value.fromAddress(this.value0)); - map.set("value1", ethereum.Value.fromAddress(this.value1)); - map.set("value2", ethereum.Value.fromAddress(this.value2)); - map.set("value3", ethereum.Value.fromAddress(this.value3)); - map.set("value4", ethereum.Value.fromUnsignedBigInt(this.value4)); - map.set("value5", ethereum.Value.fromUnsignedBigInt(this.value5)); - return map; - } - - getValue0(): Address { - return this.value0; - } - - getValue1(): Address { - return this.value1; - } - - getValue2(): Address { - return this.value2; - } - - getValue3(): Address { - return this.value3; - } - - getValue4(): BigInt { - return this.value4; - } - - getValue5(): BigInt { - return this.value5; - } -} - -export class RealtYamProxy__tokenInfoResult { - value0: BigInt; - value1: string; - value2: string; - - constructor(value0: BigInt, value1: string, value2: string) { - this.value0 = value0; - this.value1 = value1; - this.value2 = value2; - } - - toMap(): TypedMap { - let map = new TypedMap(); - map.set("value0", ethereum.Value.fromUnsignedBigInt(this.value0)); - map.set("value1", ethereum.Value.fromString(this.value1)); - map.set("value2", ethereum.Value.fromString(this.value2)); - return map; - } - - getValue0(): BigInt { - return this.value0; - } - - getValue1(): string { - return this.value1; - } - - getValue2(): string { - return this.value2; - } -} - -export class RealtYamProxy extends ethereum.SmartContract { - static bind(address: Address): RealtYamProxy { - return new RealtYamProxy("RealtYamProxy", address); - } - - DEFAULT_ADMIN_ROLE(): Bytes { - let result = super.call( - "DEFAULT_ADMIN_ROLE", - "DEFAULT_ADMIN_ROLE():(bytes32)", - [], - ); - - return result[0].toBytes(); - } - - try_DEFAULT_ADMIN_ROLE(): ethereum.CallResult { - let result = super.tryCall( - "DEFAULT_ADMIN_ROLE", - "DEFAULT_ADMIN_ROLE():(bytes32)", - [], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - MODERATOR_ROLE(): Bytes { - let result = super.call("MODERATOR_ROLE", "MODERATOR_ROLE():(bytes32)", []); - - return result[0].toBytes(); - } - - try_MODERATOR_ROLE(): ethereum.CallResult { - let result = super.tryCall( - "MODERATOR_ROLE", - "MODERATOR_ROLE():(bytes32)", - [], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - UPGRADER_ROLE(): Bytes { - let result = super.call("UPGRADER_ROLE", "UPGRADER_ROLE():(bytes32)", []); - - return result[0].toBytes(); - } - - try_UPGRADER_ROLE(): ethereum.CallResult { - let result = super.tryCall( - "UPGRADER_ROLE", - "UPGRADER_ROLE():(bytes32)", - [], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - fee(): BigInt { - let result = super.call("fee", "fee():(uint256)", []); - - return result[0].toBigInt(); - } - - try_fee(): ethereum.CallResult { - let result = super.tryCall("fee", "fee():(uint256)", []); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBigInt()); - } - - getInitialOffer(offerId: BigInt): RealtYamProxy__getInitialOfferResult { - let result = super.call( - "getInitialOffer", - "getInitialOffer(uint256):(address,address,address,address,uint256,uint256)", - [ethereum.Value.fromUnsignedBigInt(offerId)], - ); - - return new RealtYamProxy__getInitialOfferResult( - result[0].toAddress(), - result[1].toAddress(), - result[2].toAddress(), - result[3].toAddress(), - result[4].toBigInt(), - result[5].toBigInt(), - ); - } - - try_getInitialOffer( - offerId: BigInt, - ): ethereum.CallResult { - let result = super.tryCall( - "getInitialOffer", - "getInitialOffer(uint256):(address,address,address,address,uint256,uint256)", - [ethereum.Value.fromUnsignedBigInt(offerId)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue( - new RealtYamProxy__getInitialOfferResult( - value[0].toAddress(), - value[1].toAddress(), - value[2].toAddress(), - value[3].toAddress(), - value[4].toBigInt(), - value[5].toBigInt(), - ), - ); - } - - getOfferCount(): BigInt { - let result = super.call("getOfferCount", "getOfferCount():(uint256)", []); - - return result[0].toBigInt(); - } - - try_getOfferCount(): ethereum.CallResult { - let result = super.tryCall( - "getOfferCount", - "getOfferCount():(uint256)", - [], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBigInt()); - } - - getRoleAdmin(role: Bytes): Bytes { - let result = super.call("getRoleAdmin", "getRoleAdmin(bytes32):(bytes32)", [ - ethereum.Value.fromFixedBytes(role), - ]); - - return result[0].toBytes(); - } - - try_getRoleAdmin(role: Bytes): ethereum.CallResult { - let result = super.tryCall( - "getRoleAdmin", - "getRoleAdmin(bytes32):(bytes32)", - [ethereum.Value.fromFixedBytes(role)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - getTokenType(token: Address): i32 { - let result = super.call("getTokenType", "getTokenType(address):(uint8)", [ - ethereum.Value.fromAddress(token), - ]); - - return result[0].toI32(); - } - - try_getTokenType(token: Address): ethereum.CallResult { - let result = super.tryCall( - "getTokenType", - "getTokenType(address):(uint8)", - [ethereum.Value.fromAddress(token)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toI32()); - } - - hasRole(role: Bytes, account: Address): boolean { - let result = super.call("hasRole", "hasRole(bytes32,address):(bool)", [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromAddress(account), - ]); - - return result[0].toBoolean(); - } - - try_hasRole(role: Bytes, account: Address): ethereum.CallResult { - let result = super.tryCall("hasRole", "hasRole(bytes32,address):(bool)", [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromAddress(account), - ]); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - paused(): boolean { - let result = super.call("paused", "paused():(bool)", []); - - return result[0].toBoolean(); - } - - try_paused(): ethereum.CallResult { - let result = super.tryCall("paused", "paused():(bool)", []); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - pricePreview(offerId: BigInt, amount: BigInt): BigInt { - let result = super.call( - "pricePreview", - "pricePreview(uint256,uint256):(uint256)", - [ - ethereum.Value.fromUnsignedBigInt(offerId), - ethereum.Value.fromUnsignedBigInt(amount), - ], - ); - - return result[0].toBigInt(); - } - - try_pricePreview( - offerId: BigInt, - amount: BigInt, - ): ethereum.CallResult { - let result = super.tryCall( - "pricePreview", - "pricePreview(uint256,uint256):(uint256)", - [ - ethereum.Value.fromUnsignedBigInt(offerId), - ethereum.Value.fromUnsignedBigInt(amount), - ], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBigInt()); - } - - proxiableUUID(): Bytes { - let result = super.call("proxiableUUID", "proxiableUUID():(bytes32)", []); - - return result[0].toBytes(); - } - - try_proxiableUUID(): ethereum.CallResult { - let result = super.tryCall( - "proxiableUUID", - "proxiableUUID():(bytes32)", - [], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - showOffer(offerId: BigInt): RealtYamProxy__showOfferResult { - let result = super.call( - "showOffer", - "showOffer(uint256):(address,address,address,address,uint256,uint256)", - [ethereum.Value.fromUnsignedBigInt(offerId)], - ); - - return new RealtYamProxy__showOfferResult( - result[0].toAddress(), - result[1].toAddress(), - result[2].toAddress(), - result[3].toAddress(), - result[4].toBigInt(), - result[5].toBigInt(), - ); - } - - try_showOffer( - offerId: BigInt, - ): ethereum.CallResult { - let result = super.tryCall( - "showOffer", - "showOffer(uint256):(address,address,address,address,uint256,uint256)", - [ethereum.Value.fromUnsignedBigInt(offerId)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue( - new RealtYamProxy__showOfferResult( - value[0].toAddress(), - value[1].toAddress(), - value[2].toAddress(), - value[3].toAddress(), - value[4].toBigInt(), - value[5].toBigInt(), - ), - ); - } - - supportsInterface(interfaceId: Bytes): boolean { - let result = super.call( - "supportsInterface", - "supportsInterface(bytes4):(bool)", - [ethereum.Value.fromFixedBytes(interfaceId)], - ); - - return result[0].toBoolean(); - } - - try_supportsInterface(interfaceId: Bytes): ethereum.CallResult { - let result = super.tryCall( - "supportsInterface", - "supportsInterface(bytes4):(bool)", - [ethereum.Value.fromFixedBytes(interfaceId)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - tokenInfo(tokenAddr: Address): RealtYamProxy__tokenInfoResult { - let result = super.call( - "tokenInfo", - "tokenInfo(address):(uint256,string,string)", - [ethereum.Value.fromAddress(tokenAddr)], - ); - - return new RealtYamProxy__tokenInfoResult( - result[0].toBigInt(), - result[1].toString(), - result[2].toString(), - ); - } - - try_tokenInfo( - tokenAddr: Address, - ): ethereum.CallResult { - let result = super.tryCall( - "tokenInfo", - "tokenInfo(address):(uint256,string,string)", - [ethereum.Value.fromAddress(tokenAddr)], - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue( - new RealtYamProxy__tokenInfoResult( - value[0].toBigInt(), - value[1].toString(), - value[2].toString(), - ), - ); - } -} - -export class ConstructorCall extends ethereum.Call { - get inputs(): ConstructorCall__Inputs { - return new ConstructorCall__Inputs(this); - } - - get outputs(): ConstructorCall__Outputs { - return new ConstructorCall__Outputs(this); - } -} - -export class ConstructorCall__Inputs { - _call: ConstructorCall; - - constructor(call: ConstructorCall) { - this._call = call; - } -} - -export class ConstructorCall__Outputs { - _call: ConstructorCall; - - constructor(call: ConstructorCall) { - this._call = call; - } -} - -export class BuyCall extends ethereum.Call { - get inputs(): BuyCall__Inputs { - return new BuyCall__Inputs(this); - } - - get outputs(): BuyCall__Outputs { - return new BuyCall__Outputs(this); - } -} - -export class BuyCall__Inputs { - _call: BuyCall; - - constructor(call: BuyCall) { - this._call = call; - } - - get offerId(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } - - get price(): BigInt { - return this._call.inputValues[1].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[2].value.toBigInt(); - } -} - -export class BuyCall__Outputs { - _call: BuyCall; - - constructor(call: BuyCall) { - this._call = call; - } -} - -export class BuyOfferBatchCall extends ethereum.Call { - get inputs(): BuyOfferBatchCall__Inputs { - return new BuyOfferBatchCall__Inputs(this); - } - - get outputs(): BuyOfferBatchCall__Outputs { - return new BuyOfferBatchCall__Outputs(this); - } -} - -export class BuyOfferBatchCall__Inputs { - _call: BuyOfferBatchCall; - - constructor(call: BuyOfferBatchCall) { - this._call = call; - } - - get _offerIds(): Array { - return this._call.inputValues[0].value.toBigIntArray(); - } - - get _prices(): Array { - return this._call.inputValues[1].value.toBigIntArray(); - } - - get _amounts(): Array { - return this._call.inputValues[2].value.toBigIntArray(); - } -} - -export class BuyOfferBatchCall__Outputs { - _call: BuyOfferBatchCall; - - constructor(call: BuyOfferBatchCall) { - this._call = call; - } -} - -export class BuyWithPermitCall extends ethereum.Call { - get inputs(): BuyWithPermitCall__Inputs { - return new BuyWithPermitCall__Inputs(this); - } - - get outputs(): BuyWithPermitCall__Outputs { - return new BuyWithPermitCall__Outputs(this); - } -} - -export class BuyWithPermitCall__Inputs { - _call: BuyWithPermitCall; - - constructor(call: BuyWithPermitCall) { - this._call = call; - } - - get offerId(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } - - get price(): BigInt { - return this._call.inputValues[1].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[2].value.toBigInt(); - } - - get deadline(): BigInt { - return this._call.inputValues[3].value.toBigInt(); - } - - get v(): i32 { - return this._call.inputValues[4].value.toI32(); - } - - get r(): Bytes { - return this._call.inputValues[5].value.toBytes(); - } - - get s(): Bytes { - return this._call.inputValues[6].value.toBytes(); - } -} - -export class BuyWithPermitCall__Outputs { - _call: BuyWithPermitCall; - - constructor(call: BuyWithPermitCall) { - this._call = call; - } -} - -export class CreateOfferCall extends ethereum.Call { - get inputs(): CreateOfferCall__Inputs { - return new CreateOfferCall__Inputs(this); - } - - get outputs(): CreateOfferCall__Outputs { - return new CreateOfferCall__Outputs(this); - } -} - -export class CreateOfferCall__Inputs { - _call: CreateOfferCall; - - constructor(call: CreateOfferCall) { - this._call = call; - } - - get offerToken(): Address { - return this._call.inputValues[0].value.toAddress(); - } - - get buyerToken(): Address { - return this._call.inputValues[1].value.toAddress(); - } - - get buyer(): Address { - return this._call.inputValues[2].value.toAddress(); - } - - get price(): BigInt { - return this._call.inputValues[3].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[4].value.toBigInt(); - } -} - -export class CreateOfferCall__Outputs { - _call: CreateOfferCall; - - constructor(call: CreateOfferCall) { - this._call = call; - } -} - -export class CreateOfferBatchCall extends ethereum.Call { - get inputs(): CreateOfferBatchCall__Inputs { - return new CreateOfferBatchCall__Inputs(this); - } - - get outputs(): CreateOfferBatchCall__Outputs { - return new CreateOfferBatchCall__Outputs(this); - } -} - -export class CreateOfferBatchCall__Inputs { - _call: CreateOfferBatchCall; - - constructor(call: CreateOfferBatchCall) { - this._call = call; - } - - get _offerTokens(): Array
{ - return this._call.inputValues[0].value.toAddressArray(); - } - - get _buyerTokens(): Array
{ - return this._call.inputValues[1].value.toAddressArray(); - } - - get _buyers(): Array
{ - return this._call.inputValues[2].value.toAddressArray(); - } - - get _prices(): Array { - return this._call.inputValues[3].value.toBigIntArray(); - } - - get _amounts(): Array { - return this._call.inputValues[4].value.toBigIntArray(); - } -} - -export class CreateOfferBatchCall__Outputs { - _call: CreateOfferBatchCall; - - constructor(call: CreateOfferBatchCall) { - this._call = call; - } -} - -export class CreateOfferWithPermitCall extends ethereum.Call { - get inputs(): CreateOfferWithPermitCall__Inputs { - return new CreateOfferWithPermitCall__Inputs(this); - } - - get outputs(): CreateOfferWithPermitCall__Outputs { - return new CreateOfferWithPermitCall__Outputs(this); - } -} - -export class CreateOfferWithPermitCall__Inputs { - _call: CreateOfferWithPermitCall; - - constructor(call: CreateOfferWithPermitCall) { - this._call = call; - } - - get offerToken(): Address { - return this._call.inputValues[0].value.toAddress(); - } - - get buyerToken(): Address { - return this._call.inputValues[1].value.toAddress(); - } - - get buyer(): Address { - return this._call.inputValues[2].value.toAddress(); - } - - get price(): BigInt { - return this._call.inputValues[3].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[4].value.toBigInt(); - } - - get newAllowance(): BigInt { - return this._call.inputValues[5].value.toBigInt(); - } - - get deadline(): BigInt { - return this._call.inputValues[6].value.toBigInt(); - } - - get v(): i32 { - return this._call.inputValues[7].value.toI32(); - } - - get r(): Bytes { - return this._call.inputValues[8].value.toBytes(); - } - - get s(): Bytes { - return this._call.inputValues[9].value.toBytes(); - } -} - -export class CreateOfferWithPermitCall__Outputs { - _call: CreateOfferWithPermitCall; - - constructor(call: CreateOfferWithPermitCall) { - this._call = call; - } -} - -export class DeleteOfferCall extends ethereum.Call { - get inputs(): DeleteOfferCall__Inputs { - return new DeleteOfferCall__Inputs(this); - } - - get outputs(): DeleteOfferCall__Outputs { - return new DeleteOfferCall__Outputs(this); - } -} - -export class DeleteOfferCall__Inputs { - _call: DeleteOfferCall; - - constructor(call: DeleteOfferCall) { - this._call = call; - } - - get offerId(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } -} - -export class DeleteOfferCall__Outputs { - _call: DeleteOfferCall; - - constructor(call: DeleteOfferCall) { - this._call = call; - } -} - -export class DeleteOfferBatchCall extends ethereum.Call { - get inputs(): DeleteOfferBatchCall__Inputs { - return new DeleteOfferBatchCall__Inputs(this); - } - - get outputs(): DeleteOfferBatchCall__Outputs { - return new DeleteOfferBatchCall__Outputs(this); - } -} - -export class DeleteOfferBatchCall__Inputs { - _call: DeleteOfferBatchCall; - - constructor(call: DeleteOfferBatchCall) { - this._call = call; - } - - get offerIds(): Array { - return this._call.inputValues[0].value.toBigIntArray(); - } -} - -export class DeleteOfferBatchCall__Outputs { - _call: DeleteOfferBatchCall; - - constructor(call: DeleteOfferBatchCall) { - this._call = call; - } -} - -export class DeleteOfferByAdminCall extends ethereum.Call { - get inputs(): DeleteOfferByAdminCall__Inputs { - return new DeleteOfferByAdminCall__Inputs(this); - } - - get outputs(): DeleteOfferByAdminCall__Outputs { - return new DeleteOfferByAdminCall__Outputs(this); - } -} - -export class DeleteOfferByAdminCall__Inputs { - _call: DeleteOfferByAdminCall; - - constructor(call: DeleteOfferByAdminCall) { - this._call = call; - } - - get offerIds(): Array { - return this._call.inputValues[0].value.toBigIntArray(); - } -} - -export class DeleteOfferByAdminCall__Outputs { - _call: DeleteOfferByAdminCall; - - constructor(call: DeleteOfferByAdminCall) { - this._call = call; - } -} - -export class GrantRoleCall extends ethereum.Call { - get inputs(): GrantRoleCall__Inputs { - return new GrantRoleCall__Inputs(this); - } - - get outputs(): GrantRoleCall__Outputs { - return new GrantRoleCall__Outputs(this); - } -} - -export class GrantRoleCall__Inputs { - _call: GrantRoleCall; - - constructor(call: GrantRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class GrantRoleCall__Outputs { - _call: GrantRoleCall; - - constructor(call: GrantRoleCall) { - this._call = call; - } -} - -export class InitializeCall extends ethereum.Call { - get inputs(): InitializeCall__Inputs { - return new InitializeCall__Inputs(this); - } - - get outputs(): InitializeCall__Outputs { - return new InitializeCall__Outputs(this); - } -} - -export class InitializeCall__Inputs { - _call: InitializeCall; - - constructor(call: InitializeCall) { - this._call = call; - } - - get admin_(): Address { - return this._call.inputValues[0].value.toAddress(); - } - - get moderator_(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class InitializeCall__Outputs { - _call: InitializeCall; - - constructor(call: InitializeCall) { - this._call = call; - } -} - -export class PauseCall extends ethereum.Call { - get inputs(): PauseCall__Inputs { - return new PauseCall__Inputs(this); - } - - get outputs(): PauseCall__Outputs { - return new PauseCall__Outputs(this); - } -} - -export class PauseCall__Inputs { - _call: PauseCall; - - constructor(call: PauseCall) { - this._call = call; - } -} - -export class PauseCall__Outputs { - _call: PauseCall; - - constructor(call: PauseCall) { - this._call = call; - } -} - -export class RenounceRoleCall extends ethereum.Call { - get inputs(): RenounceRoleCall__Inputs { - return new RenounceRoleCall__Inputs(this); - } - - get outputs(): RenounceRoleCall__Outputs { - return new RenounceRoleCall__Outputs(this); - } -} - -export class RenounceRoleCall__Inputs { - _call: RenounceRoleCall; - - constructor(call: RenounceRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class RenounceRoleCall__Outputs { - _call: RenounceRoleCall; - - constructor(call: RenounceRoleCall) { - this._call = call; - } -} - -export class RevokeRoleCall extends ethereum.Call { - get inputs(): RevokeRoleCall__Inputs { - return new RevokeRoleCall__Inputs(this); - } - - get outputs(): RevokeRoleCall__Outputs { - return new RevokeRoleCall__Outputs(this); - } -} - -export class RevokeRoleCall__Inputs { - _call: RevokeRoleCall; - - constructor(call: RevokeRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class RevokeRoleCall__Outputs { - _call: RevokeRoleCall; - - constructor(call: RevokeRoleCall) { - this._call = call; - } -} - -export class SaveLostTokensCall extends ethereum.Call { - get inputs(): SaveLostTokensCall__Inputs { - return new SaveLostTokensCall__Inputs(this); - } - - get outputs(): SaveLostTokensCall__Outputs { - return new SaveLostTokensCall__Outputs(this); - } -} - -export class SaveLostTokensCall__Inputs { - _call: SaveLostTokensCall; - - constructor(call: SaveLostTokensCall) { - this._call = call; - } - - get token(): Address { - return this._call.inputValues[0].value.toAddress(); - } -} - -export class SaveLostTokensCall__Outputs { - _call: SaveLostTokensCall; - - constructor(call: SaveLostTokensCall) { - this._call = call; - } -} - -export class SetFeeCall extends ethereum.Call { - get inputs(): SetFeeCall__Inputs { - return new SetFeeCall__Inputs(this); - } - - get outputs(): SetFeeCall__Outputs { - return new SetFeeCall__Outputs(this); - } -} - -export class SetFeeCall__Inputs { - _call: SetFeeCall; - - constructor(call: SetFeeCall) { - this._call = call; - } - - get fee_(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } -} - -export class SetFeeCall__Outputs { - _call: SetFeeCall; - - constructor(call: SetFeeCall) { - this._call = call; - } -} - -export class ToggleWhitelistWithTypeCall extends ethereum.Call { - get inputs(): ToggleWhitelistWithTypeCall__Inputs { - return new ToggleWhitelistWithTypeCall__Inputs(this); - } - - get outputs(): ToggleWhitelistWithTypeCall__Outputs { - return new ToggleWhitelistWithTypeCall__Outputs(this); - } -} - -export class ToggleWhitelistWithTypeCall__Inputs { - _call: ToggleWhitelistWithTypeCall; - - constructor(call: ToggleWhitelistWithTypeCall) { - this._call = call; - } - - get tokens_(): Array
{ - return this._call.inputValues[0].value.toAddressArray(); - } - - get types_(): Array { - return this._call.inputValues[1].value.toI32Array(); - } -} - -export class ToggleWhitelistWithTypeCall__Outputs { - _call: ToggleWhitelistWithTypeCall; - - constructor(call: ToggleWhitelistWithTypeCall) { - this._call = call; - } -} - -export class UnpauseCall extends ethereum.Call { - get inputs(): UnpauseCall__Inputs { - return new UnpauseCall__Inputs(this); - } - - get outputs(): UnpauseCall__Outputs { - return new UnpauseCall__Outputs(this); - } -} - -export class UnpauseCall__Inputs { - _call: UnpauseCall; - - constructor(call: UnpauseCall) { - this._call = call; - } -} - -export class UnpauseCall__Outputs { - _call: UnpauseCall; - - constructor(call: UnpauseCall) { - this._call = call; - } -} - -export class UpdateOfferCall extends ethereum.Call { - get inputs(): UpdateOfferCall__Inputs { - return new UpdateOfferCall__Inputs(this); - } - - get outputs(): UpdateOfferCall__Outputs { - return new UpdateOfferCall__Outputs(this); - } -} - -export class UpdateOfferCall__Inputs { - _call: UpdateOfferCall; - - constructor(call: UpdateOfferCall) { - this._call = call; - } - - get offerId(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } - - get price(): BigInt { - return this._call.inputValues[1].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[2].value.toBigInt(); - } -} - -export class UpdateOfferCall__Outputs { - _call: UpdateOfferCall; - - constructor(call: UpdateOfferCall) { - this._call = call; - } -} - -export class UpdateOfferBatchCall extends ethereum.Call { - get inputs(): UpdateOfferBatchCall__Inputs { - return new UpdateOfferBatchCall__Inputs(this); - } - - get outputs(): UpdateOfferBatchCall__Outputs { - return new UpdateOfferBatchCall__Outputs(this); - } -} - -export class UpdateOfferBatchCall__Inputs { - _call: UpdateOfferBatchCall; - - constructor(call: UpdateOfferBatchCall) { - this._call = call; - } - - get _offerIds(): Array { - return this._call.inputValues[0].value.toBigIntArray(); - } - - get _prices(): Array { - return this._call.inputValues[1].value.toBigIntArray(); - } - - get _amounts(): Array { - return this._call.inputValues[2].value.toBigIntArray(); - } -} - -export class UpdateOfferBatchCall__Outputs { - _call: UpdateOfferBatchCall; - - constructor(call: UpdateOfferBatchCall) { - this._call = call; - } -} - -export class UpdateOfferWithPermitCall extends ethereum.Call { - get inputs(): UpdateOfferWithPermitCall__Inputs { - return new UpdateOfferWithPermitCall__Inputs(this); - } - - get outputs(): UpdateOfferWithPermitCall__Outputs { - return new UpdateOfferWithPermitCall__Outputs(this); - } -} - -export class UpdateOfferWithPermitCall__Inputs { - _call: UpdateOfferWithPermitCall; - - constructor(call: UpdateOfferWithPermitCall) { - this._call = call; - } - - get offerId(): BigInt { - return this._call.inputValues[0].value.toBigInt(); - } - - get price(): BigInt { - return this._call.inputValues[1].value.toBigInt(); - } - - get amount(): BigInt { - return this._call.inputValues[2].value.toBigInt(); - } - - get newAllowance(): BigInt { - return this._call.inputValues[3].value.toBigInt(); - } - - get deadline(): BigInt { - return this._call.inputValues[4].value.toBigInt(); - } - - get v(): i32 { - return this._call.inputValues[5].value.toI32(); - } - - get r(): Bytes { - return this._call.inputValues[6].value.toBytes(); - } - - get s(): Bytes { - return this._call.inputValues[7].value.toBytes(); - } -} - -export class UpdateOfferWithPermitCall__Outputs { - _call: UpdateOfferWithPermitCall; - - constructor(call: UpdateOfferWithPermitCall) { - this._call = call; - } -} - -export class UpgradeToCall extends ethereum.Call { - get inputs(): UpgradeToCall__Inputs { - return new UpgradeToCall__Inputs(this); - } - - get outputs(): UpgradeToCall__Outputs { - return new UpgradeToCall__Outputs(this); - } -} - -export class UpgradeToCall__Inputs { - _call: UpgradeToCall; - - constructor(call: UpgradeToCall) { - this._call = call; - } - - get newImplementation(): Address { - return this._call.inputValues[0].value.toAddress(); - } -} - -export class UpgradeToCall__Outputs { - _call: UpgradeToCall; - - constructor(call: UpgradeToCall) { - this._call = call; - } -} - -export class UpgradeToAndCallCall extends ethereum.Call { - get inputs(): UpgradeToAndCallCall__Inputs { - return new UpgradeToAndCallCall__Inputs(this); - } - - get outputs(): UpgradeToAndCallCall__Outputs { - return new UpgradeToAndCallCall__Outputs(this); - } -} - -export class UpgradeToAndCallCall__Inputs { - _call: UpgradeToAndCallCall; - - constructor(call: UpgradeToAndCallCall) { - this._call = call; - } - - get newImplementation(): Address { - return this._call.inputValues[0].value.toAddress(); - } - - get data(): Bytes { - return this._call.inputValues[1].value.toBytes(); - } -} - -export class UpgradeToAndCallCall__Outputs { - _call: UpgradeToAndCallCall; - - constructor(call: UpgradeToAndCallCall) { - this._call = call; - } -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/schema.ts b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/schema.ts deleted file mode 100644 index b320824..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/generated/schema.ts +++ /dev/null @@ -1,649 +0,0 @@ -// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - -import { - TypedMap, - Entity, - Value, - ValueKind, - store, - Bytes, - BigInt, - BigDecimal, - Int8, -} from "@graphprotocol/graph-ts"; - -export class OfferCreated extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id != null, "Cannot save OfferCreated entity without an ID"); - if (id) { - assert( - id.kind == ValueKind.STRING, - `Entities of type OfferCreated must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}`, - ); - store.set("OfferCreated", id.toString(), this); - } - } - - static loadInBlock(id: string): OfferCreated | null { - return changetype( - store.get_in_block("OfferCreated", id), - ); - } - - static load(id: string): OfferCreated | null { - return changetype(store.get("OfferCreated", id)); - } - - get id(): string { - let value = this.get("id"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toString(); - } - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get offerId(): BigInt { - let value = this.get("offerId"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set offerId(value: BigInt) { - this.set("offerId", Value.fromBigInt(value)); - } - - get offerToken(): Bytes { - let value = this.get("offerToken"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set offerToken(value: Bytes) { - this.set("offerToken", Value.fromBytes(value)); - } - - get buyerToken(): Bytes { - let value = this.get("buyerToken"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set buyerToken(value: Bytes) { - this.set("buyerToken", Value.fromBytes(value)); - } - - get seller(): Bytes { - let value = this.get("seller"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set seller(value: Bytes) { - this.set("seller", Value.fromBytes(value)); - } - - get buyer(): Bytes { - let value = this.get("buyer"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set buyer(value: Bytes) { - this.set("buyer", Value.fromBytes(value)); - } - - get price(): BigInt { - let value = this.get("price"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set price(value: BigInt) { - this.set("price", Value.fromBigInt(value)); - } - - get amount(): BigInt { - let value = this.get("amount"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set amount(value: BigInt) { - this.set("amount", Value.fromBigInt(value)); - } - - get transactionHash(): Bytes { - let value = this.get("transactionHash"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set transactionHash(value: Bytes) { - this.set("transactionHash", Value.fromBytes(value)); - } - - get logIndex(): BigInt { - let value = this.get("logIndex"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set logIndex(value: BigInt) { - this.set("logIndex", Value.fromBigInt(value)); - } - - get blockNumber(): BigInt { - let value = this.get("blockNumber"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set blockNumber(value: BigInt) { - this.set("blockNumber", Value.fromBigInt(value)); - } - - get timestamp(): BigInt { - let value = this.get("timestamp"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set timestamp(value: BigInt) { - this.set("timestamp", Value.fromBigInt(value)); - } -} - -export class OfferAccepted extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id != null, "Cannot save OfferAccepted entity without an ID"); - if (id) { - assert( - id.kind == ValueKind.STRING, - `Entities of type OfferAccepted must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}`, - ); - store.set("OfferAccepted", id.toString(), this); - } - } - - static loadInBlock(id: string): OfferAccepted | null { - return changetype( - store.get_in_block("OfferAccepted", id), - ); - } - - static load(id: string): OfferAccepted | null { - return changetype(store.get("OfferAccepted", id)); - } - - get id(): string { - let value = this.get("id"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toString(); - } - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get offerId(): BigInt { - let value = this.get("offerId"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set offerId(value: BigInt) { - this.set("offerId", Value.fromBigInt(value)); - } - - get offerToken(): Bytes { - let value = this.get("offerToken"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set offerToken(value: Bytes) { - this.set("offerToken", Value.fromBytes(value)); - } - - get buyerToken(): Bytes { - let value = this.get("buyerToken"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set buyerToken(value: Bytes) { - this.set("buyerToken", Value.fromBytes(value)); - } - - get seller(): Bytes { - let value = this.get("seller"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set seller(value: Bytes) { - this.set("seller", Value.fromBytes(value)); - } - - get buyer(): Bytes { - let value = this.get("buyer"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set buyer(value: Bytes) { - this.set("buyer", Value.fromBytes(value)); - } - - get price(): BigInt { - let value = this.get("price"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set price(value: BigInt) { - this.set("price", Value.fromBigInt(value)); - } - - get amount(): BigInt { - let value = this.get("amount"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set amount(value: BigInt) { - this.set("amount", Value.fromBigInt(value)); - } - - get transactionHash(): Bytes { - let value = this.get("transactionHash"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set transactionHash(value: Bytes) { - this.set("transactionHash", Value.fromBytes(value)); - } - - get logIndex(): BigInt { - let value = this.get("logIndex"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set logIndex(value: BigInt) { - this.set("logIndex", Value.fromBigInt(value)); - } - - get blockNumber(): BigInt { - let value = this.get("blockNumber"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set blockNumber(value: BigInt) { - this.set("blockNumber", Value.fromBigInt(value)); - } - - get timestamp(): BigInt { - let value = this.get("timestamp"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set timestamp(value: BigInt) { - this.set("timestamp", Value.fromBigInt(value)); - } -} - -export class OfferUpdated extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id != null, "Cannot save OfferUpdated entity without an ID"); - if (id) { - assert( - id.kind == ValueKind.STRING, - `Entities of type OfferUpdated must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}`, - ); - store.set("OfferUpdated", id.toString(), this); - } - } - - static loadInBlock(id: string): OfferUpdated | null { - return changetype( - store.get_in_block("OfferUpdated", id), - ); - } - - static load(id: string): OfferUpdated | null { - return changetype(store.get("OfferUpdated", id)); - } - - get id(): string { - let value = this.get("id"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toString(); - } - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get offerId(): BigInt { - let value = this.get("offerId"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set offerId(value: BigInt) { - this.set("offerId", Value.fromBigInt(value)); - } - - get oldPrice(): BigInt { - let value = this.get("oldPrice"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set oldPrice(value: BigInt) { - this.set("oldPrice", Value.fromBigInt(value)); - } - - get oldAmount(): BigInt { - let value = this.get("oldAmount"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set oldAmount(value: BigInt) { - this.set("oldAmount", Value.fromBigInt(value)); - } - - get newPrice(): BigInt { - let value = this.get("newPrice"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set newPrice(value: BigInt) { - this.set("newPrice", Value.fromBigInt(value)); - } - - get newAmount(): BigInt { - let value = this.get("newAmount"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set newAmount(value: BigInt) { - this.set("newAmount", Value.fromBigInt(value)); - } - - get transactionHash(): Bytes { - let value = this.get("transactionHash"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set transactionHash(value: Bytes) { - this.set("transactionHash", Value.fromBytes(value)); - } - - get logIndex(): BigInt { - let value = this.get("logIndex"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set logIndex(value: BigInt) { - this.set("logIndex", Value.fromBigInt(value)); - } - - get blockNumber(): BigInt { - let value = this.get("blockNumber"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set blockNumber(value: BigInt) { - this.set("blockNumber", Value.fromBigInt(value)); - } - - get timestamp(): BigInt { - let value = this.get("timestamp"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set timestamp(value: BigInt) { - this.set("timestamp", Value.fromBigInt(value)); - } -} - -export class OfferDeleted extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id != null, "Cannot save OfferDeleted entity without an ID"); - if (id) { - assert( - id.kind == ValueKind.STRING, - `Entities of type OfferDeleted must have an ID of type String but the id '${id.displayData()}' is of type ${id.displayKind()}`, - ); - store.set("OfferDeleted", id.toString(), this); - } - } - - static loadInBlock(id: string): OfferDeleted | null { - return changetype( - store.get_in_block("OfferDeleted", id), - ); - } - - static load(id: string): OfferDeleted | null { - return changetype(store.get("OfferDeleted", id)); - } - - get id(): string { - let value = this.get("id"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toString(); - } - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get offerId(): BigInt { - let value = this.get("offerId"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set offerId(value: BigInt) { - this.set("offerId", Value.fromBigInt(value)); - } - - get transactionHash(): Bytes { - let value = this.get("transactionHash"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBytes(); - } - } - - set transactionHash(value: Bytes) { - this.set("transactionHash", Value.fromBytes(value)); - } - - get logIndex(): BigInt { - let value = this.get("logIndex"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set logIndex(value: BigInt) { - this.set("logIndex", Value.fromBigInt(value)); - } - - get blockNumber(): BigInt { - let value = this.get("blockNumber"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set blockNumber(value: BigInt) { - this.set("blockNumber", Value.fromBigInt(value)); - } - - get timestamp(): BigInt { - let value = this.get("timestamp"); - if (!value || value.kind == ValueKind.NULL) { - throw new Error("Cannot return null for a required field."); - } else { - return value.toBigInt(); - } - } - - set timestamp(value: BigInt) { - this.set("timestamp", Value.fromBigInt(value)); - } -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/networks.json b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/networks.json deleted file mode 100644 index a752e32..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/networks.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "gnosis": { - "RealtYamProxy": { - "address": "0xC759AA7f9dd9720A1502c104DaE4F9852bb17C14", - "startBlock": 25530394 - } - } -} \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/package.json b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/package.json deleted file mode 100644 index 7dc5520..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "yam-events-tracker", - "license": "UNLICENSED", - "scripts": { - "codegen": "graph codegen", - "build": "graph build", - "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ yam-events-tracker", - "create-local": "graph create --node http://localhost:8020/ yam-events-tracker", - "remove-local": "graph remove --node http://localhost:8020/ yam-events-tracker", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 yam-events-tracker", - "test": "graph test" - }, - "dependencies": { - "@graphprotocol/graph-cli": "0.97.1", - "@graphprotocol/graph-ts": "0.37.0" - }, - "devDependencies": { "matchstick-as": "0.6.0" } -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/schema.graphql b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/schema.graphql deleted file mode 100644 index ea3e9ad..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/schema.graphql +++ /dev/null @@ -1,51 +0,0 @@ -type OfferCreated @entity(immutable: true) { - id: ID! - offerId: BigInt! - offerToken: Bytes! - buyerToken: Bytes! - seller: Bytes! - buyer: Bytes! - price: BigInt! - amount: BigInt! - transactionHash: Bytes! - logIndex: BigInt! - blockNumber: BigInt! - timestamp: BigInt! -} - -type OfferAccepted @entity(immutable: true) { - id: ID! - offerId: BigInt! - offerToken: Bytes! - buyerToken: Bytes! - seller: Bytes! - buyer: Bytes! - price: BigInt! - amount: BigInt! - transactionHash: Bytes! - logIndex: BigInt! - blockNumber: BigInt! - timestamp: BigInt! -} - -type OfferUpdated @entity(immutable: true) { - id: ID! - offerId: BigInt! - oldPrice: BigInt! - oldAmount: BigInt! - newPrice: BigInt! - newAmount: BigInt! - transactionHash: Bytes! - logIndex: BigInt! - blockNumber: BigInt! - timestamp: BigInt! -} - -type OfferDeleted @entity(immutable: true) { - id: ID! - offerId: BigInt! - transactionHash: Bytes! - logIndex: BigInt! - blockNumber: BigInt! - timestamp: BigInt! -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/src/realt-yam-proxy.ts b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/src/realt-yam-proxy.ts deleted file mode 100644 index 3192297..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/src/realt-yam-proxy.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { - OfferAccepted as OfferAcceptedEvent, - OfferCreated as OfferCreatedEvent, - OfferDeleted as OfferDeletedEvent, - OfferUpdated as OfferUpdatedEvent, -} from "../generated/RealtYamProxy/RealtYamProxy" -import { - OfferAccepted, - OfferCreated, - OfferDeleted, - OfferUpdated, -} from "../generated/schema" -import { ethereum } from "@graphprotocol/graph-ts" - -// Create a unique ID per log (tx hash + logIndex) -function getLogId(event: ethereum.Event): string { - return event.transaction.hash.toHex() + "-" + event.logIndex.toString() -} - -export function handleOfferCreated(event: OfferCreatedEvent): void { - let entity = new OfferCreated(getLogId(event)) - - entity.offerToken = event.params.offerToken - entity.buyerToken = event.params.buyerToken - entity.seller = event.params.seller - entity.buyer = event.params.buyer - entity.offerId = event.params.offerId - entity.price = event.params.price - entity.amount = event.params.amount - - entity.transactionHash = event.transaction.hash - entity.logIndex = event.logIndex - entity.blockNumber = event.block.number - entity.timestamp = event.block.timestamp - - entity.save() -} - -export function handleOfferAccepted(event: OfferAcceptedEvent): void { - let entity = new OfferAccepted(getLogId(event)) - - entity.offerId = event.params.offerId - entity.seller = event.params.seller - entity.buyer = event.params.buyer - entity.offerToken = event.params.offerToken - entity.buyerToken = event.params.buyerToken - entity.price = event.params.price - entity.amount = event.params.amount - - entity.transactionHash = event.transaction.hash - entity.logIndex = event.logIndex - entity.blockNumber = event.block.number - entity.timestamp = event.block.timestamp - - entity.save() -} - -export function handleOfferDeleted(event: OfferDeletedEvent): void { - let entity = new OfferDeleted(getLogId(event)) - - entity.offerId = event.params.offerId - - entity.transactionHash = event.transaction.hash - entity.logIndex = event.logIndex - entity.blockNumber = event.block.number - entity.timestamp = event.block.timestamp - - entity.save() -} - -export function handleOfferUpdated(event: OfferUpdatedEvent): void { - let entity = new OfferUpdated(getLogId(event)) - - entity.offerId = event.params.offerId - entity.oldPrice = event.params.oldPrice - entity.newPrice = event.params.newPrice - entity.oldAmount = event.params.oldAmount - entity.newAmount = event.params.newAmount - - entity.transactionHash = event.transaction.hash - entity.logIndex = event.logIndex - entity.blockNumber = event.block.number - entity.timestamp = event.block.timestamp - - entity.save() -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/subgraph.yaml b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/subgraph.yaml deleted file mode 100644 index 2ccf423..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/subgraph.yaml +++ /dev/null @@ -1,35 +0,0 @@ -specVersion: 1.3.0 -indexerHints: - prune: auto -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum - name: RealtYamProxy - network: gnosis - source: - address: "0xC759AA7f9dd9720A1502c104DaE4F9852bb17C14" - abi: RealtYamProxy - startBlock: 25530394 - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - OfferAccepted - - OfferCreated - - OfferDeleted - - OfferUpdated - abis: - - name: RealtYamProxy - file: ./abis/RealtYamProxy.json - eventHandlers: - - event: OfferAccepted(indexed uint256,indexed address,indexed address,address,address,uint256,uint256) - handler: handleOfferAccepted - - event: OfferCreated(indexed address,indexed address,address,address,indexed uint256,uint256,uint256) - handler: handleOfferCreated - - event: OfferDeleted(indexed uint256) - handler: handleOfferDeleted - - event: OfferUpdated(indexed uint256,uint256,indexed uint256,uint256,indexed uint256) - handler: handleOfferUpdated - file: ./src/realt-yam-proxy.ts diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy-utils.ts b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy-utils.ts deleted file mode 100644 index 251681d..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy-utils.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { newMockEvent } from "matchstick-as" -import { ethereum, Address } from "@graphprotocol/graph-ts" -import { - AdminChanged, - BeaconUpgraded, - Upgraded -} from "../generated/RealtYamProxy/RealtYamProxy" - -export function createAdminChangedEvent( - previousAdmin: Address, - newAdmin: Address -): AdminChanged { - let adminChangedEvent = changetype(newMockEvent()) - - adminChangedEvent.parameters = new Array() - - adminChangedEvent.parameters.push( - new ethereum.EventParam( - "previousAdmin", - ethereum.Value.fromAddress(previousAdmin) - ) - ) - adminChangedEvent.parameters.push( - new ethereum.EventParam("newAdmin", ethereum.Value.fromAddress(newAdmin)) - ) - - return adminChangedEvent -} - -export function createBeaconUpgradedEvent(beacon: Address): BeaconUpgraded { - let beaconUpgradedEvent = changetype(newMockEvent()) - - beaconUpgradedEvent.parameters = new Array() - - beaconUpgradedEvent.parameters.push( - new ethereum.EventParam("beacon", ethereum.Value.fromAddress(beacon)) - ) - - return beaconUpgradedEvent -} - -export function createUpgradedEvent(implementation: Address): Upgraded { - let upgradedEvent = changetype(newMockEvent()) - - upgradedEvent.parameters = new Array() - - upgradedEvent.parameters.push( - new ethereum.EventParam( - "implementation", - ethereum.Value.fromAddress(implementation) - ) - ) - - return upgradedEvent -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy.test.ts b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy.test.ts deleted file mode 100644 index 3c58f2f..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tests/realt-yam-proxy.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - assert, - describe, - test, - clearStore, - beforeAll, - afterAll -} from "matchstick-as/assembly/index" -import { Address } from "@graphprotocol/graph-ts" -import { AdminChanged } from "../generated/schema" -import { AdminChanged as AdminChangedEvent } from "../generated/RealtYamProxy/RealtYamProxy" -import { handleAdminChanged } from "../src/realt-yam-proxy" -import { createAdminChangedEvent } from "./realt-yam-proxy-utils" - -// Tests structure (matchstick-as >=0.5.0) -// https://thegraph.com/docs/en/subgraphs/developing/creating/unit-testing-framework/#tests-structure - -describe("Describe entity assertions", () => { - beforeAll(() => { - let previousAdmin = Address.fromString( - "0x0000000000000000000000000000000000000001" - ) - let newAdmin = Address.fromString( - "0x0000000000000000000000000000000000000001" - ) - let newAdminChangedEvent = createAdminChangedEvent(previousAdmin, newAdmin) - handleAdminChanged(newAdminChangedEvent) - }) - - afterAll(() => { - clearStore() - }) - - // For more test scenarios, see: - // https://thegraph.com/docs/en/subgraphs/developing/creating/unit-testing-framework/#write-a-unit-test - - test("AdminChanged created and stored", () => { - assert.entityCount("AdminChanged", 1) - - // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function - assert.fieldEquals( - "AdminChanged", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "previousAdmin", - "0x0000000000000000000000000000000000000001" - ) - assert.fieldEquals( - "AdminChanged", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "newAdmin", - "0x0000000000000000000000000000000000000001" - ) - - // More assert options: - // https://thegraph.com/docs/en/subgraphs/developing/creating/unit-testing-framework/#asserts - }) -}) diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tsconfig.json b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tsconfig.json deleted file mode 100644 index 4e86672..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "@graphprotocol/graph-ts/types/tsconfig.base.json", - "include": ["src", "tests"] -} diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/yarn.lock b/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/yarn.lock deleted file mode 100644 index 536ab8a..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam-events-tracker/yarn.lock +++ /dev/null @@ -1,2811 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== - -"@chainsafe/is-ip@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.1.0.tgz#ba9ac32acd9027698e0b56b91c7af069d28d7931" - integrity sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w== - -"@chainsafe/netmask@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" - integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== - dependencies: - "@chainsafe/is-ip" "^2.0.1" - -"@fastify/busboy@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.1.1.tgz#af3aea7f1e52ec916d8b5c9dcc0f09d4c060a3fc" - integrity sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw== - -"@float-capital/float-subgraph-uncrashable@0.0.0-internal-testing.5": - version "0.0.0-internal-testing.5" - resolved "https://registry.yarnpkg.com/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz#060f98440f6e410812766c5b040952d2d02e2b73" - integrity sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA== - dependencies: - "@rescript/std" "9.0.0" - graphql "^16.6.0" - graphql-import-node "^0.0.5" - js-yaml "^4.1.0" - -"@graphprotocol/graph-cli@0.97.1": - version "0.97.1" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.97.1.tgz#a9130b813437b032aaf7857f2d75fc9f7c18f991" - integrity sha512-j5dc2Tl694jMZmVQu8SSl5Yt3VURiBPgglQEpx30aW6UJ89eLR/x46Nn7S6eflV69fmB5IHAuAACnuTzo8MD0Q== - dependencies: - "@float-capital/float-subgraph-uncrashable" "0.0.0-internal-testing.5" - "@oclif/core" "4.3.0" - "@oclif/plugin-autocomplete" "^3.2.11" - "@oclif/plugin-not-found" "^3.2.29" - "@oclif/plugin-warn-if-update-available" "^3.1.24" - "@pinax/graph-networks-registry" "^0.6.5" - "@whatwg-node/fetch" "^0.10.1" - assemblyscript "0.19.23" - chokidar "4.0.3" - debug "4.4.1" - docker-compose "1.2.0" - fs-extra "11.3.0" - glob "11.0.2" - gluegun "5.2.0" - graphql "16.11.0" - immutable "5.1.2" - jayson "4.2.0" - js-yaml "4.1.0" - kubo-rpc-client "^5.0.2" - open "10.1.2" - prettier "3.5.3" - semver "7.7.2" - tmp-promise "3.0.3" - undici "7.9.0" - web3-eth-abi "4.4.1" - yaml "2.8.0" - -"@graphprotocol/graph-ts@0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.37.0.tgz#ad5e9bc24a099db336e6488e37d5bd5283501a39" - integrity sha512-3xp/sO8zFDBkX44ydGB87ow5Cyrfr/SAm/cWzIRzUVL7ROw0KUyFBG1xj4KKlMnAod7/RL99zChYquC15H4Oqg== - dependencies: - assemblyscript "0.27.31" - -"@inquirer/checkbox@^4.1.6": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.1.6.tgz#bd62673a187a011b633dc982c3aab2df19f538b6" - integrity sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/figures" "^1.0.11" - "@inquirer/type" "^3.0.6" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/confirm@^5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.10.tgz#de3732cb7ae9333bd3e354afee6a6ef8cf28d951" - integrity sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - -"@inquirer/core@^10.1.11": - version "10.1.11" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.11.tgz#4022032b5b6b35970e1c3fcfc522bc250ef8810d" - integrity sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw== - dependencies: - "@inquirer/figures" "^1.0.11" - "@inquirer/type" "^3.0.6" - ansi-escapes "^4.3.2" - cli-width "^4.1.0" - mute-stream "^2.0.0" - signal-exit "^4.1.0" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/editor@^4.2.11": - version "4.2.11" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-4.2.11.tgz#71cee5d50bbcebcbc5e6e8c513b6a5cb7292d990" - integrity sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - external-editor "^3.1.0" - -"@inquirer/expand@^4.0.13": - version "4.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-4.0.13.tgz#2f018c28464683a1a4a450713a810248d48f4762" - integrity sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.11.tgz#4744e6db95288fea1dead779554859710a959a21" - integrity sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw== - -"@inquirer/input@^4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-4.1.10.tgz#e3eafb903a2f4251f8bd21d0fe598fe61a237ffc" - integrity sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - -"@inquirer/number@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-3.0.13.tgz#7bef02085be742ede6771c5fb036201ee3eb6df7" - integrity sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - -"@inquirer/password@^4.0.13": - version "4.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-4.0.13.tgz#17793bbc91704ca37850de440b7d4f2a94fc99c2" - integrity sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - ansi-escapes "^4.3.2" - -"@inquirer/prompts@^7.5.1": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-7.5.1.tgz#44e70dacfe20314d233c61410618ceef29a8482f" - integrity sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg== - dependencies: - "@inquirer/checkbox" "^4.1.6" - "@inquirer/confirm" "^5.1.10" - "@inquirer/editor" "^4.2.11" - "@inquirer/expand" "^4.0.13" - "@inquirer/input" "^4.1.10" - "@inquirer/number" "^3.0.13" - "@inquirer/password" "^4.0.13" - "@inquirer/rawlist" "^4.1.1" - "@inquirer/search" "^3.0.13" - "@inquirer/select" "^4.2.1" - -"@inquirer/rawlist@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-4.1.1.tgz#ce9f925a5001f0c5fa5cd2b846a04f8ef942acab" - integrity sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - yoctocolors-cjs "^2.1.2" - -"@inquirer/search@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-3.0.13.tgz#465a5786f3302be39ff94e23512fde51fa3cf062" - integrity sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/figures" "^1.0.11" - "@inquirer/type" "^3.0.6" - yoctocolors-cjs "^2.1.2" - -"@inquirer/select@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-4.2.1.tgz#1be785ef4cd7dccd67fa4b77ff9dc8460cbc554b" - integrity sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/figures" "^1.0.11" - "@inquirer/type" "^3.0.6" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/type@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.6.tgz#2500e435fc2014c5250eec3279f42b70b64089bd" - integrity sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA== - -"@ipld/dag-cbor@^9.0.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.2.4.tgz#64aba7060836af081debe87610cd1c915997ba6a" - integrity sha512-GbDWYl2fdJgkYtIJN0HY9oO0o50d1nB4EQb7uYWKUd2ztxCjxiEW3PjwGG0nqUpN1G4Cug6LX8NzbA7fKT+zfA== - dependencies: - cborg "^4.0.0" - multiformats "^13.1.0" - -"@ipld/dag-json@^10.0.0": - version "10.2.5" - resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-10.2.5.tgz#a17e1c10ba58ea5bf43b6c7de8b73bb6461f6654" - integrity sha512-Q4Fr3IBDEN8gkpgNefynJ4U/ZO5Kwr7WSUMBDbZx0c37t0+IwQCTM9yJh8l5L4SRFjm31MuHwniZ/kM+P7GQ3Q== - dependencies: - cborg "^4.0.0" - multiformats "^13.1.0" - -"@ipld/dag-pb@^4.0.0": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.5.tgz#e3bdf11995e038877a737e3684d2382e481b60df" - integrity sha512-w4PZ2yPqvNmlAir7/2hsCRMqny1EY5jj26iZcSgxREJexmbAc2FI21jp26MqiNdfgAxvkCnf2N/TJI18GaDNwA== - dependencies: - multiformats "^13.1.0" - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" - integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== - -"@libp2p/crypto@^5.0.0", "@libp2p/crypto@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-5.1.3.tgz#fda40cbf635dc877a06567d510c5a2d5a7d248f8" - integrity sha512-iPXUIswDSq2ikZ6fJcz8VtJuH3Rtr2n2PzTQkbFFqmjkM76yhV6drtaeJ1FnbIcog4AkwXSaqgtDfGtlRqG6LA== - dependencies: - "@libp2p/interface" "^2.10.1" - "@noble/curves" "^1.9.1" - "@noble/hashes" "^1.8.0" - multiformats "^13.3.4" - protons-runtime "^5.5.0" - uint8arraylist "^2.4.8" - uint8arrays "^5.1.0" - -"@libp2p/interface@^2.0.0", "@libp2p/interface@^2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-2.10.1.tgz#86783d66dbcbea3722ee7f368ae53b7afefbc796" - integrity sha512-h0Q0RD7cQq+hj4xKgzx2VkDOc7oEP/EA95uXOhfrNo58+RBc7zvGiF/HjcK+z56S2snVcVfkTSJbg4cNNaHSXg== - dependencies: - "@multiformats/multiaddr" "^12.4.0" - it-pushable "^3.2.3" - it-stream-types "^2.0.2" - multiformats "^13.3.4" - progress-events "^1.0.1" - uint8arraylist "^2.4.8" - -"@libp2p/logger@^5.0.0": - version "5.1.17" - resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-5.1.17.tgz#c9aed7fc17e1fcb1ccc1151326ef917521c57696" - integrity sha512-e3qKQEzgg9WsBJmF4nqABqDrVXiF0zwfhD4iUETowonlEAy5XpwoBfepo1RVVtj6ORnsc/Sm27Au/jNwSJz0zQ== - dependencies: - "@libp2p/interface" "^2.10.1" - "@multiformats/multiaddr" "^12.4.0" - interface-datastore "^8.3.1" - multiformats "^13.3.4" - weald "^1.0.4" - -"@libp2p/peer-id@^5.0.0": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-5.1.4.tgz#4c7a6f8eb923aaf06b994e8af649e81c29ea4b58" - integrity sha512-R3PTniVrhPCmLxgyINsJfxSDGhCclc6+r5dQMFq9bkhc6mMQ3Y1xTAgA891OCr7JN0/MBGnu8O7jtWTqz//vOA== - dependencies: - "@libp2p/crypto" "^5.1.3" - "@libp2p/interface" "^2.10.1" - multiformats "^13.3.4" - uint8arrays "^5.1.0" - -"@multiformats/dns@^1.0.3": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.6.tgz#b8c7de11459a02a5f4e609d35d3cdb95cb6ad152" - integrity sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw== - dependencies: - "@types/dns-packet" "^5.6.5" - buffer "^6.0.3" - dns-packet "^5.6.1" - hashlru "^2.3.0" - p-queue "^8.0.1" - progress-events "^1.0.0" - uint8arrays "^5.0.2" - -"@multiformats/multiaddr-to-uri@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.0.tgz#ec0ee9494f1cfc6ccd5173e61bbb0b6722029e97" - integrity sha512-9RNmlIGwZbBLsHekT50dbt4o4u8Iciw9kGjv+WHiGxQdsJ6xKKjU1+C0Vbas6RilMbaVOAOnEyfNcXbUmTkLxQ== - dependencies: - "@multiformats/multiaddr" "^12.3.0" - -"@multiformats/multiaddr@^12.2.1", "@multiformats/multiaddr@^12.3.0", "@multiformats/multiaddr@^12.4.0": - version "12.4.0" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.4.0.tgz#13fca8d68805fe0d0569bdd7d4dce41497503d31" - integrity sha512-FL7yBTLijJ5JkO044BGb2msf+uJLrwpD6jD6TkXlbjA9N12+18HT40jvd4o5vL4LOJMc86dPX6tGtk/uI9kYKg== - dependencies: - "@chainsafe/is-ip" "^2.0.1" - "@chainsafe/netmask" "^2.0.0" - "@multiformats/dns" "^1.0.3" - multiformats "^13.0.0" - uint8-varint "^2.0.1" - uint8arrays "^5.0.0" - -"@noble/curves@1.4.2", "@noble/curves@~1.4.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" - integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/curves@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" - integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@oclif/core@4.3.0", "@oclif/core@^4": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.3.0.tgz#9a2951f05f81a4c7ae5ffcc00b2d720cca0898e6" - integrity sha512-lIzHY+JMP6evrS5E/sGijNnwrCoNtGy8703jWXcMuPOYKiFhWoAqnIm1BGgoRgmxczkbSfRsHUL/lwsSgh74Lw== - dependencies: - ansi-escapes "^4.3.2" - ansis "^3.17.0" - clean-stack "^3.0.1" - cli-spinners "^2.9.2" - debug "^4.4.0" - ejs "^3.1.10" - get-package-type "^0.1.0" - globby "^11.1.0" - indent-string "^4.0.0" - is-wsl "^2.2.0" - lilconfig "^3.1.3" - minimatch "^9.0.5" - semver "^7.6.3" - string-width "^4.2.3" - supports-color "^8" - widest-line "^3.1.0" - wordwrap "^1.0.0" - wrap-ansi "^7.0.0" - -"@oclif/plugin-autocomplete@^3.2.11": - version "3.2.29" - resolved "https://registry.yarnpkg.com/@oclif/plugin-autocomplete/-/plugin-autocomplete-3.2.29.tgz#e05ad322f2e6afec778f45f0202a325bc539f04e" - integrity sha512-uQqcT4yVDqj4e/AAF+E2wT3A/QAbbPh/ov9lBhLCFB5GFJR3ixOMUFdZg7yQua5VjfvvnNSWkE879wdM4k+rGw== - dependencies: - "@oclif/core" "^4" - ansis "^3.16.0" - debug "^4.4.1" - ejs "^3.1.10" - -"@oclif/plugin-not-found@^3.2.29": - version "3.2.52" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.52.tgz#8bb8c6703c3d1200cc75b01342eaf4fb5f09e662" - integrity sha512-SpT6zcKA7ojCE5ZI2wTWMu0oI4Owd2p8OwCfWRi24I4Wj6rNHf3uBz76oU1b1btm/WYgc6K5Eq91Sj+1xoRKig== - dependencies: - "@inquirer/prompts" "^7.5.1" - "@oclif/core" "^4" - ansis "^3.17.0" - fast-levenshtein "^3.0.0" - -"@oclif/plugin-warn-if-update-available@^3.1.24": - version "3.1.40" - resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.40.tgz#eb00fd7f199e6d08e6e4897560126b3570ecd5cb" - integrity sha512-k5FBGxjXsSj56075MFVx5I9MAJa082evyPqLUBOjXL9w91q3k/89U+kTCfFNTQga8DykxhMP/7UTuDFV+d/Dhg== - dependencies: - "@oclif/core" "^4" - ansis "^3.17.0" - debug "^4.4.1" - http-call "^5.2.2" - lodash "^4.17.21" - registry-auth-token "^5.1.0" - -"@pinax/graph-networks-registry@^0.6.5": - version "0.6.7" - resolved "https://registry.yarnpkg.com/@pinax/graph-networks-registry/-/graph-networks-registry-0.6.7.tgz#ceb994f3b31e2943b9c9d9b09dd86eb00d067c0e" - integrity sha512-xogeCEZ50XRMxpBwE3TZjJ8RCO8Guv39gDRrrKtlpDEDEMLm0MzD3A0SQObgj7aF7qTZNRTWzsuvQdxgzw25wQ== - -"@pnpm/config.env-replace@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" - integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" - integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" - integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@rescript/std@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@rescript/std/-/std-9.0.0.tgz#df53f3fa5911cb4e85bd66b92e9e58ddf3e4a7e1" - integrity sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ== - -"@scure/base@~1.1.6": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" - integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== - -"@scure/bip32@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" - integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== - dependencies: - "@noble/curves" "~1.4.0" - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@scure/bip39@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" - integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== - dependencies: - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/dns-packet@^5.6.5": - version "5.6.5" - resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" - integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "22.15.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.21.tgz#196ef14fe20d87f7caf1e7b39832767f9a995b77" - integrity sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ== - dependencies: - undici-types "~6.21.0" - -"@types/node@^12.12.54": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@whatwg-node/disposablestack@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz#2064a1425ea66194def6df0c7a1851b6939c82bb" - integrity sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw== - dependencies: - "@whatwg-node/promise-helpers" "^1.0.0" - tslib "^2.6.3" - -"@whatwg-node/fetch@^0.10.1": - version "0.10.8" - resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.10.8.tgz#1467f9505826fa7271c67dfaf0d7251ab8c2b9cc" - integrity sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg== - dependencies: - "@whatwg-node/node-fetch" "^0.7.21" - urlpattern-polyfill "^10.0.0" - -"@whatwg-node/node-fetch@^0.7.21": - version "0.7.21" - resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.7.21.tgz#ba944eea7684047c91ac7f50097243633f6c9f5f" - integrity sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw== - dependencies: - "@fastify/busboy" "^3.1.1" - "@whatwg-node/disposablestack" "^0.0.6" - "@whatwg-node/promise-helpers" "^1.3.2" - tslib "^2.6.3" - -"@whatwg-node/promise-helpers@^1.0.0", "@whatwg-node/promise-helpers@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz#3b54987ad6517ef6db5920c66a6f0dada606587d" - integrity sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA== - dependencies: - tslib "^2.6.3" - -abitype@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.7.1.tgz#16db20abe67de80f6183cf75f3de1ff86453b745" - integrity sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ== - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -ansis@^3.16.0, ansis@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" - integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== - -any-signal@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-4.1.1.tgz#928416c355c66899e6b2a91cad4488f0324bae03" - integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== - -apisauce@^2.1.5: - version "2.1.6" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.6.tgz#94887f335bf3d735305fc895c8a191c9c2608a7f" - integrity sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg== - dependencies: - axios "^0.21.4" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -assemblyscript@0.19.23: - version "0.19.23" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" - integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== - dependencies: - binaryen "102.0.0-nightly.20211028" - long "^5.2.0" - source-map-support "^0.5.20" - -assemblyscript@0.27.31: - version "0.27.31" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.27.31.tgz#07412b1bc42c67f78080dbaddca030ab74d3b9b2" - integrity sha512-Ra8kiGhgJQGZcBxjtMcyVRxOEJZX64kd+XGpjWzjcjgxWJVv+CAQO0aDBk4GQVhjYbOkATarC83mHjAVGtwPBQ== - dependencies: - binaryen "116.0.0-nightly.20240114" - long "^5.2.1" - -async@^3.2.3: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axios@^0.21.4: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -binaryen@102.0.0-nightly.20211028: - version "102.0.0-nightly.20211028" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" - integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== - -binaryen@116.0.0-nightly.20240114: - version "116.0.0-nightly.20240114" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-116.0.0-nightly.20240114.tgz#ad8bfbde77d4cb4715b93997114eefc30f45155b" - integrity sha512-0GZrojJnuhoe+hiwji7QFaL3tBlJoA+KFUN7ouYSDGZLSo9CKM8swQX8n/UcbR0d1VuZKU+nhogNzv423JEu5A== - -blob-to-it@^2.0.5: - version "2.0.9" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.9.tgz#2382b70582a744d161920b6a32e009d98f6819dc" - integrity sha512-iFdJpmbHLAOO9mnPoru/x+A9sAlSUJDKhMSyGTrvmBaI7YTS8tgQP6vAiLiyuqeAtsM7mjpoKCX1PO81GIr59A== - dependencies: - browser-readablestream-to-it "^2.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-readablestream-to-it@^2.0.0, browser-readablestream-to-it@^2.0.5: - version "2.0.9" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.9.tgz#79729561b0507d1ff1450fc4a68865c8c4882d05" - integrity sha512-f/yOqsXAC1tTJuq4vK1JSGLDTlK08XxTAAzoM5ePJhddySkI1yh/VjNoo0LACxwy+M1PV1xvD1OBJdToZ877ew== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -cborg@^4.0.0: - version "4.2.11" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.2.11.tgz#48b8aa03c0403994f50f058e680603c9a4aa2af7" - integrity sha512-7gs3iaqtsD9OHowgqzc6ixQGwSBONqosVR2co0Bg0pARgrLap+LCcEIXJuuIz2jHy0WWQeDMFPEsU2r17I2XPQ== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -clean-stack@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" - integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== - dependencies: - escape-string-regexp "4.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0, cli-spinners@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-table3@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== - dependencies: - object-assign "^4.1.0" - string-width "^4.2.0" - optionalDependencies: - colors "^1.1.2" - -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colors@1.4.0, colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -content-type@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -cosmiconfig@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -dag-jose@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-5.1.1.tgz#02708321f14b6f43990e238010c73464916259a7" - integrity sha512-9alfZ8Wh1XOOMel8bMpDqWsDT72ojFQCJPtwZSev9qh4f8GoCV9qrJW8jcOUhcstO8Kfm09FHGo//jqiZq3z9w== - dependencies: - "@ipld/dag-cbor" "^9.0.0" - multiformats "~13.1.3" - -debug@4.4.1, debug@^4.1.1, debug@^4.4.0, debug@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-packet@^5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -docker-compose@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-1.2.0.tgz#e4c30afdd1a111b47e87d97754baa304302586fc" - integrity sha512-wIU1eHk3Op7dFgELRdmOYlPYS4gP8HhH1ZmZa13QZF59y0fblzFDFmKPhyc05phCy2hze9OEvNZAsoljrs+72w== - dependencies: - yaml "^2.2.2" - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ejs@3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -ejs@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-fetch@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" - integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== - dependencies: - encoding "^0.1.13" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -enquirer@2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -ethereum-cryptography@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" - integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== - dependencies: - "@noble/curves" "1.4.2" - "@noble/hashes" "1.4.0" - "@scure/bip32" "1.4.0" - "@scure/bip39" "1.3.0" - -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -execa@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - 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.3" - strip-final-newline "^2.0.0" - -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - -fast-fifo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - -fast-glob@^3.2.9, fast-glob@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-levenshtein@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" - integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== - dependencies: - fastest-levenshtein "^1.0.7" - -fastest-levenshtein@^1.0.7: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== - dependencies: - reusify "^1.0.4" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -follow-redirects@^1.14.0: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -fs-extra@11.3.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" - integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-jetpack@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-4.3.1.tgz#cdfd4b64e6bfdec7c7dc55c76b39efaa7853bb20" - integrity sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ== - dependencies: - minimatch "^3.0.2" - rimraf "^2.6.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-intrinsic@^1.2.4, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - 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-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-proto@^1.0.0, get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.2.tgz#3261e3897bbc603030b041fd77ba636022d51ce0" - integrity sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ== - dependencies: - foreground-child "^3.1.0" - jackspeak "^4.0.1" - minimatch "^10.0.0" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^2.0.0" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gluegun@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/gluegun/-/gluegun-5.2.0.tgz#88ba1f76f20e68a135557a4a4c8ea283291a7491" - integrity sha512-jSUM5xUy2ztYFQANne17OUm/oAd7qSX7EBksS9bQDt9UvLPqcEkeWUebmaposb8Tx7eTTD8uJVWGRe6PYSsYkg== - dependencies: - apisauce "^2.1.5" - app-module-path "^2.2.0" - cli-table3 "0.6.0" - colors "1.4.0" - cosmiconfig "7.0.1" - cross-spawn "7.0.3" - ejs "3.1.8" - enquirer "2.3.6" - execa "5.1.1" - fs-jetpack "4.3.1" - lodash.camelcase "^4.3.0" - lodash.kebabcase "^4.1.1" - lodash.lowercase "^4.3.0" - lodash.lowerfirst "^4.3.1" - lodash.pad "^4.5.1" - lodash.padend "^4.6.1" - lodash.padstart "^4.6.1" - lodash.repeat "^4.1.0" - lodash.snakecase "^4.1.1" - lodash.startcase "^4.4.0" - lodash.trim "^4.5.1" - lodash.trimend "^4.5.1" - lodash.trimstart "^4.5.1" - lodash.uppercase "^4.3.0" - lodash.upperfirst "^4.3.1" - ora "4.0.2" - pluralize "^8.0.0" - semver "7.3.5" - which "2.0.2" - yargs-parser "^21.0.0" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphql-import-node@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/graphql-import-node/-/graphql-import-node-0.0.5.tgz#caf76a6cece10858b14f27cce935655398fc1bf0" - integrity sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q== - -graphql@16.11.0, graphql@^16.6.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" - integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hashlru@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" - integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -http-call@^5.2.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/http-call/-/http-call-5.3.0.tgz#4ded815b13f423de176eb0942d69c43b25b148db" - integrity sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w== - dependencies: - content-type "^1.0.4" - debug "^4.1.1" - is-retry-allowed "^1.1.0" - is-stream "^2.0.0" - parse-json "^4.0.0" - tunnel-agent "^0.6.0" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -immutable@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.2.tgz#e8169476414505e5a4fa650107b65e1227d16d4b" - integrity sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ== - -import-fresh@^3.2.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -interface-datastore@^8.3.1: - version "8.3.1" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.3.1.tgz#c793f990c5cf078a24a8a2ded13f7e2099a2a282" - integrity sha512-3r0ETmHIi6HmvM5sc09QQiCD3gUfwtEM/AAChOyAd/UAKT69uk8LXfTSUBufbUIO/dU65Vj8nb9O6QjwW8vDSQ== - dependencies: - interface-store "^6.0.0" - uint8arrays "^5.1.0" - -interface-store@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-6.0.2.tgz#1746a1ee07634f7678b3aa778738b79e3f75c909" - integrity sha512-KSFCXtBlNoG0hzwNa0RmhHtrdhzexp+S+UY2s0rWTBJyfdEIgn6i6Zl9otVqrcFYbYrneBT7hbmHQ8gE0C3umA== - -ipfs-unixfs@^11.1.4: - version "11.2.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.2.1.tgz#679adc00cdfd37b55ce5318715efa19051a300b4" - integrity sha512-gUeeX63EFgiaMgcs0cUs2ZUPvlOeEZ38okjK8twdWGZX2jYd2rCk8k/TJ3DSRIDZ2t/aZMv6I23guxHaofZE3w== - dependencies: - protons-runtime "^5.5.0" - uint8arraylist "^2.4.8" - -is-arguments@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" - integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-electron@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== - dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-glob@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-retry-allowed@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typed-array@^1.1.3: - version "1.1.15" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -iso-url@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" - integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -it-all@^3.0.4: - version "3.0.8" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.8.tgz#b249d916576172982f588385096be249898bb7f4" - integrity sha512-TFAXqUjwuPFhyktbU7XIOjdvqjpc/c2xvDYfCrfHA6HP68+EQDCXuwGJ9YchvZTyXSaB2fkX3lI9aybcFUHWUw== - -it-first@^3.0.4: - version "3.0.8" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.8.tgz#0c8f89f279bcdc4eb1c9627ce9e4e117c64a7526" - integrity sha512-neaRRwOMCmMKkXJVZ4bvUDVlde+Xh0aTWr7hFaOZeDXzbctGVV/WHmPVqBqy3RjlsP7eRM0vcqNtlM8hivcmGw== - -it-glob@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-3.0.3.tgz#b1f2ec8083bcec17d19c9410a3b79022dd642ad1" - integrity sha512-sLf7O4otUWG370biMC0Hz+HQGkPg6YH7v1eIK7WvIHavMSYsKaSuH82ZNn0aCFAgFirM4zLL29ig9wuWg30iNg== - dependencies: - fast-glob "^3.3.3" - -it-last@^3.0.4: - version "3.0.8" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.8.tgz#29194b7a6867a765ba5b00438f15b8d9cf638bff" - integrity sha512-sdzoMeMAIJmRucZTnRd1GTtcoGV2EAS81fXfRKCVLviEX1wcvHhE43G0b/aKFFPc6ypuHWZR8vxaoHtDz/6b/A== - -it-map@^3.0.5: - version "3.1.3" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-3.1.3.tgz#bccbeb1971e01f2ebe2da9b0e47d68f22cc7d609" - integrity sha512-BAdTuPN/Ie5K4pKLShqyLGBvkLSPtraYXBrX8h+Ki1CZQI8o0dOcaLewISLTXmEJsOHcAjkwxJsVwxND4/Rkpg== - dependencies: - it-peekable "^3.0.0" - -it-peekable@^3.0.0, it-peekable@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.7.tgz#d2a845bc2b5de9be4f00409955d7e0504c5f0a00" - integrity sha512-w9W0WzNCsHLctV0z6vAA6N3jPgJu0qZZVlhngS+L29Rdva940f4Ea4ubtEXXYVBbq3l9Woo1MdWLGiEXzQDtdg== - -it-pushable@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" - integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== - dependencies: - p-defer "^4.0.0" - -it-stream-types@^2.0.1, it-stream-types@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.2.tgz#60bbace90096796b4e6cc3bfab99cf9f2b86c152" - integrity sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww== - -it-to-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" - integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== - dependencies: - buffer "^6.0.3" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - -jackspeak@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" - integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - -jake@^10.8.5: - version "10.9.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jayson@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" - integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - stream-json "^1.9.1" - uuid "^8.3.2" - ws "^7.5.10" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -kubo-rpc-client@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-5.1.0.tgz#06f9216b2b8a62487a150261b16fd941a75adb34" - integrity sha512-yTBoyEN1Ymwi0Tzi8+Mfxylg3BRAatzykih8jzwaJjfYCqKUEqCX+43m4X78CdTPRXyIHUbdI9N0DcKRwNwk+A== - dependencies: - "@ipld/dag-cbor" "^9.0.0" - "@ipld/dag-json" "^10.0.0" - "@ipld/dag-pb" "^4.0.0" - "@libp2p/crypto" "^5.0.0" - "@libp2p/interface" "^2.0.0" - "@libp2p/logger" "^5.0.0" - "@libp2p/peer-id" "^5.0.0" - "@multiformats/multiaddr" "^12.2.1" - "@multiformats/multiaddr-to-uri" "^11.0.0" - any-signal "^4.1.1" - blob-to-it "^2.0.5" - browser-readablestream-to-it "^2.0.5" - dag-jose "^5.0.0" - electron-fetch "^1.9.1" - err-code "^3.0.1" - ipfs-unixfs "^11.1.4" - iso-url "^1.2.1" - it-all "^3.0.4" - it-first "^3.0.4" - it-glob "^3.0.1" - it-last "^3.0.4" - it-map "^3.0.5" - it-peekable "^3.0.3" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - multiformats "^13.1.0" - nanoid "^5.0.7" - native-fetch "^4.0.2" - parse-duration "^2.1.2" - react-native-fetch-api "^3.0.0" - stream-to-it "^1.0.1" - uint8arrays "^5.0.3" - wherearewe "^2.0.1" - -lilconfig@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" - integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - -lodash.lowercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" - integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== - -lodash.lowerfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" - integrity sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w== - -lodash.pad@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== - -lodash.padend@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== - -lodash.repeat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" - integrity sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw== - -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== - -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== - -lodash.trim@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" - integrity sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg== - -lodash.trimend@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" - integrity sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA== - -lodash.trimstart@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" - integrity sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ== - -lodash.uppercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" - integrity sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA== - -lodash.upperfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -long@^5.2.0, long@^5.2.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" - integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== - -lru-cache@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" - integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -matchstick-as@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/matchstick-as/-/matchstick-as-0.6.0.tgz#c65296b1f51b1014d605c52067d9b5321ea630e8" - integrity sha512-E36fWsC1AbCkBFt05VsDDRoFvGSdcZg6oZJrtIe/YDBbuFh8SKbR5FcoqDhNWqSN+F7bN/iS2u8Md0SM+4pUpw== - dependencies: - wabt "1.0.24" - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" - integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.2, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -ms@^3.0.0-canary.1: - version "3.0.0-canary.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" - integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== - -multiformats@^13.0.0, multiformats@^13.1.0, multiformats@^13.3.4: - version "13.3.6" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.6.tgz#3a657fd4ae39e04b739491b9e8b3be7926e0f792" - integrity sha512-yakbt9cPYj8d3vi/8o/XWm61MrOILo7fsTL0qxNx6zS0Nso6K5JqqS2WV7vK/KSuDBvrW3KfCwAdAgarAgOmww== - -multiformats@~13.1.3: - version "13.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.3.tgz#36d312401ff424948ef90746fbda9dd798cffa09" - integrity sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw== - -mute-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" - integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== - -nanoid@^5.0.7: - version "5.1.5" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.5.tgz#f7597f9d9054eb4da9548cdd53ca70f1790e87de" - integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw== - -native-fetch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" - integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@10.1.2: - version "10.1.2" - resolved "https://registry.yarnpkg.com/open/-/open-10.1.2.tgz#d5df40984755c9a9c3c93df8156a12467e882925" - integrity sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^3.1.0" - -ora@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.2.tgz#0e1e68fd45b135d28648b27cf08081fa6e8a297d" - integrity sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig== - dependencies: - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-defer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.1.tgz#d12c6d41420785ed0d162dbd86b71ba490f7f99e" - integrity sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A== - -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== - dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" - -p-queue@^8.0.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.1.0.tgz#d71929249868b10b16f885d8a82beeaf35d32279" - integrity sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw== - dependencies: - eventemitter3 "^5.0.1" - p-timeout "^6.1.2" - -p-timeout@^6.1.2: - version "6.1.4" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.4.tgz#418e1f4dd833fa96a2e3f532547dd2abdb08dbc2" - integrity sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-duration@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-2.1.4.tgz#02918736726f657eaf70b52bb8da7910316df51d" - integrity sha512-b98m6MsCh+akxfyoz9w9dt0AlH2dfYLOBss5SdDsr9pkhKNvkWBXU/r8A4ahmIGByBOLV2+4YwfCuFxbDDaGyg== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" - integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -possible-typed-array-names@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" - integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== - -prettier@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" - integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== - -progress-events@^1.0.0, progress-events@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.1.tgz#693b6d4153f08c1418ae3cd5fcad8596c91db7e8" - integrity sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protons-runtime@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.5.0.tgz#ea06d9ef843aad77ea5de3e1ebafa81b58c24570" - integrity sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA== - dependencies: - uint8-varint "^2.0.2" - uint8arraylist "^2.4.3" - uint8arrays "^5.0.1" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-native-fetch-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" - integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== - dependencies: - p-defer "^3.0.0" - -readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - -registry-auth-token@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" - integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -run-applescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" - integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -semver@7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@7.7.2, semver@^7.6.3: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@^0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -stream-chain@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" - integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== - -stream-json@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" - integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== - dependencies: - stream-chain "^2.2.5" - -stream-to-it@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-1.0.1.tgz#7d5e1b04bab70facd48273279bfa49f0d0165950" - integrity sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA== - dependencies: - it-stream-types "^2.0.1" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" - integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== - -tmp-promise@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^2.6.3: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -uint8-varint@^2.0.1, uint8-varint@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" - integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== - dependencies: - uint8arraylist "^2.0.0" - uint8arrays "^5.0.0" - -uint8arraylist@^2.0.0, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" - integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== - dependencies: - uint8arrays "^5.0.1" - -uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2, uint8arrays@^5.0.3, uint8arrays@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" - integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== - dependencies: - multiformats "^13.0.0" - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -undici@7.9.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.9.0.tgz#09266190e9281cb049ba79ca6a5ec9372175dfd9" - integrity sha512-e696y354tf5cFZPXsF26Yg+5M63+5H3oE6Vtkh2oqbvsE2Oe7s2nIbcQh5lmG7Lp/eS29vJtTpw9+p6PX0qNSg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -urlpattern-polyfill@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz#1b2517e614136c73ba32948d5e7a3a063cba8e74" - integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw== - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.5: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -wabt@1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/wabt/-/wabt-1.0.24.tgz#c02e0b5b4503b94feaf4a30a426ef01c1bea7c6c" - integrity sha512-8l7sIOd3i5GWfTWciPL0+ff/FK/deVK2Q6FN+MPz4vfUcD78i2M/49XJTwF6aml91uIiuXJEsLKWMB2cw/mtKg== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -weald@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/weald/-/weald-1.0.4.tgz#8858cf9186869deba58357ae10cf26eaada80bb0" - integrity sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ== - dependencies: - ms "^3.0.0-canary.1" - supports-color "^9.4.0" - -web3-errors@^1.2.0, web3-errors@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/web3-errors/-/web3-errors-1.3.1.tgz#163bc4d869f98614760b683d733c3ed1fb415d98" - integrity sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ== - dependencies: - web3-types "^1.10.0" - -web3-eth-abi@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-4.4.1.tgz#1dca9d80341b3cd7a1ae07dc98080c2073d62a29" - integrity sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg== - dependencies: - abitype "0.7.1" - web3-errors "^1.3.1" - web3-types "^1.10.0" - web3-utils "^4.3.3" - web3-validator "^2.0.6" - -web3-types@^1.10.0, web3-types@^1.6.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-types/-/web3-types-1.10.0.tgz#41b0b4d2dd75e919d5b6f37bf139e29f445db04e" - integrity sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw== - -web3-utils@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-4.3.3.tgz#e380a1c03a050d3704f94bd08c1c9f50a1487205" - integrity sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw== - dependencies: - ethereum-cryptography "^2.0.0" - eventemitter3 "^5.0.1" - web3-errors "^1.3.1" - web3-types "^1.10.0" - web3-validator "^2.0.6" - -web3-validator@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/web3-validator/-/web3-validator-2.0.6.tgz#a0cdaa39e1d1708ece5fae155b034e29d6a19248" - integrity sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg== - dependencies: - ethereum-cryptography "^2.0.0" - util "^0.12.5" - web3-errors "^1.2.0" - web3-types "^1.6.0" - zod "^3.21.4" - -wherearewe@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8" - integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== - dependencies: - is-electron "^2.2.0" - -which-typed-array@^1.1.16, which-typed-array@^1.1.2: - version "1.1.19" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@2.8.0, yaml@^2.2.2: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" - integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yoctocolors-cjs@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" - integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== - -zod@^3.21.4: - version "3.25.20" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.20.tgz#c36739c52f6d01cf04c53bf56d99f2f5488739ee" - integrity sha512-z03fqpTMDF1G02VLKUMt6vyACE7rNWkh3gpXVHgPTw28NPtDFRGvcpTtPwn2kMKtQ0idtYJUTxchytmnqYswcw== diff --git a/yam_indexing_module/the_graphe_handler/deployment/yam_abi.json b/yam_indexing_module/the_graphe_handler/deployment/yam_abi.json deleted file mode 100644 index cf0e562..0000000 --- a/yam_indexing_module/the_graphe_handler/deployment/yam_abi.json +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"offerToken","type":"address"},{"indexed":false,"internalType":"address","name":"buyerToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OfferAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"offerToken","type":"address"},{"indexed":true,"internalType":"address","name":"buyerToken","type":"address"},{"indexed":false,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OfferCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"OfferDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"offerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldPrice","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"OfferUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"tokens","type":"address[]"},{"indexed":true,"internalType":"enum IRealTokenYamUpgradeableV3.TokenType[]","name":"types","type":"uint8[]"}],"name":"TokenWhitelistWithTypeToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MODERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_offerIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"buyOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","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":"buyWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"offerToken","type":"address"},{"internalType":"address","name":"buyerToken","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"createOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_offerTokens","type":"address[]"},{"internalType":"address[]","name":"_buyerTokens","type":"address[]"},{"internalType":"address[]","name":"_buyers","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"createOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"offerToken","type":"address"},{"internalType":"address","name":"buyerToken","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"newAllowance","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":"createOfferWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"deleteOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"offerIds","type":"uint256[]"}],"name":"deleteOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"offerIds","type":"uint256[]"}],"name":"deleteOfferByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"getInitialOffer","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOfferCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"token","type":"address"}],"name":"getTokenType","outputs":[{"internalType":"enum IRealTokenYamUpgradeableV3.TokenType","name":"","type":"uint8"}],"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":"admin_","type":"address"},{"internalType":"address","name":"moderator_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"pricePreview","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","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":"token","type":"address"}],"name":"saveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee_","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"}],"name":"showOffer","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens_","type":"address[]"},{"internalType":"enum IRealTokenYamUpgradeableV3.TokenType[]","name":"types_","type":"uint8[]"}],"name":"toggleWhitelistWithType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"tokenInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_offerIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"updateOfferBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"offerId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"newAllowance","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":"updateOfferWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}] \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/__init__.py b/yam_indexing_module/the_graphe_handler/internals/__init__.py deleted file mode 100644 index ae0cdff..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .fetch_offer_accepted_from_block_range import fetch_offer_accepted_from_block_range -from .fetch_offer_created_from_block_range import fetch_offer_created_from_block_range -from .fetch_offer_deleted_from_block_range import fetch_offer_deleted_from_block_range -from .fetch_offer_updated_from_block_range import fetch_offer_updated_from_block_range -from .fetch_all_offer_accepted import fetch_all_offer_accepted -from .fetch_all_offer_created import fetch_all_offer_created -from .fetch_all_offer_deleted import fetch_all_offer_deleted -from .fetch_all_offer_updated import fetch_all_offer_updated \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_accepted.py b/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_accepted.py deleted file mode 100644 index f50165c..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_accepted.py +++ /dev/null @@ -1,98 +0,0 @@ -import requests -import json -from typing import List, Dict, Any - -def fetch_all_offer_accepted(api_key: str, url: str) -> List[Dict[str, Any]]: - """ - Fetch all offerAccepted entities from The Graph subgraph with cursor-based pagination. - - Arg: - api_key (str): The Graph API key for authentication - url (str): The subgraph url to query - - Returns: - List[Dict[str, Any]]: Complete list of all offerAccepted entities - - Raises: - requests.RequestException: If API request fails - ValueError: If response format is unexpected - """ - - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - all_offers = [] - batch_size = 1000 - last_id = "" # For cursor-based pagination - - # GraphQL query using cursor-based pagination (where clause) - query_template = """ - query GetOfferAccepted($first: Int!, $lastId: String!) { - offerAccepteds( - first: $first, - where: { id_gt: $lastId }, - orderBy: id, - orderDirection: asc - ) { - id - offerId - offerToken - buyerToken - seller - buyer - price - amount - transactionHash - logIndex - blockNumber - timestamp - } - } - """ - - while True: - # Prepare the GraphQL request - payload = { - "query": query_template, - "variables": { - "first": batch_size, - "lastId": last_id - } - } - - # Make the request - response = requests.post(url, headers=headers, json=payload, timeout=30) - response.raise_for_status() - - # Parse the response - data = response.json() - - # Check for GraphQL errors - if "errors" in data: - raise ValueError(f"GraphQL errors: {data['errors']}") - - # Extract the offers from this batch - offers_batch = data.get("data", {}).get("offerAccepteds", []) - - if not offers_batch: - break - - # Add to our complete list - all_offers.extend(offers_batch) - - # Update progress counter (overwrite previous number) - print(f"\rFetched {len(all_offers)} events offerAccepted from TheGraph...", end="", flush=True) - - # Update the cursor (last ID) for next batch - last_id = offers_batch[-1]["id"] - - # If we got less than the batch size, we've reached the end - if len(offers_batch) < batch_size: - break - - for i, offer in enumerate(all_offers): - all_offers[i]['topic'] = 'OfferAccepted' - - return all_offers \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_created.py b/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_created.py deleted file mode 100644 index d638e66..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_created.py +++ /dev/null @@ -1,124 +0,0 @@ -import requests -import json -from typing import List, Dict, Any - -def fetch_all_offer_created(api_key: str, url: str) -> List[Dict[str, Any]]: - """ - Fetch all offerCreated entities from The Graph subgraph with cursor-based pagination. - - Arg: - api_key (str): The Graph API key for authentication - url (str): The subgraph url to query - - Returns: - List[Dict[str, Any]]: Complete list of all offerCreated entities - - Raises: - requests.RequestException: If API request fails - ValueError: If response format is unexpected - """ - - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - all_offers = [] - batch_size = 1000 - last_id = "" # For cursor-based pagination - - # GraphQL query using cursor-based pagination (where clause) - query_template = """ - query GetOfferCreated($first: Int!, $lastId: String!) { - offerCreateds( - first: $first, - where: { id_gt: $lastId }, - orderBy: id, - orderDirection: asc - ) { - id - offerId - offerToken - buyerToken - seller - buyer - price - amount - transactionHash - logIndex - blockNumber - timestamp - } - } - """ - - while True: - # Prepare the GraphQL request - payload = { - "query": query_template, - "variables": { - "first": batch_size, - "lastId": last_id - } - } - - # Make the request - response = requests.post(url, headers=headers, json=payload, timeout=30) - response.raise_for_status() - - # Parse the response - data = response.json() - - # Check for GraphQL errors - if "errors" in data: - raise ValueError(f"GraphQL errors: {data['errors']}") - - # Extract the offers from this batch - offers_batch = data.get("data", {}).get("offerCreateds", []) - - if not offers_batch: - break - - # Add to our complete list - all_offers.extend(offers_batch) - - # Update progress counter (overwrite previous number) - print(f"\rFetched {len(all_offers)} events offerCreated from TheGraph...", end="", flush=True) - - # Update the cursor (last ID) for next batch - last_id = offers_batch[-1]["id"] - - # If we got less than the batch size, we've reached the end - if len(offers_batch) < batch_size: - break - - for i, offer in enumerate(all_offers): - all_offers[i]['topic'] = 'OfferCreated' - - - return all_offers - - - -# Example usage -if __name__ == "__main__": - # Replace with your actual API key - API_KEY = "6a73e25ab5cf74012b68a2df437c4fef" - - try: - # Fetch all offerCreated entities - offers = fetch_all_offer_created(API_KEY) - - print(f"\nSuccessfully fetched {len(offers)} offerCreated entities") - - # Display first few entities as examples - if offers: - print("\nLast entity example:") - print(json.dumps(offers[-1], indent=2)) - - # Optionally save to file - # with open("offer_created_data.json", "w") as f: - # json.dump(offers, f, indent=2) - - except Exception as e: - print(f"Error: {e}") \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_deleted.py b/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_deleted.py deleted file mode 100644 index 27bc43b..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_deleted.py +++ /dev/null @@ -1,92 +0,0 @@ -import requests -import json -from typing import List, Dict, Any - -def fetch_all_offer_deleted(api_key: str, url: str) -> List[Dict[str, Any]]: - """ - Fetch all offerDeleted entities from The Graph subgraph with cursor-based pagination. - - Arg: - api_key (str): The Graph API key for authentication - url (str): The subgraph url to query - - Returns: - List[Dict[str, Any]]: Complete list of all offerDeleted entities - - Raises: - requests.RequestException: If API request fails - ValueError: If response format is unexpected - """ - - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - all_offers = [] - batch_size = 1000 - last_id = "" # For cursor-based pagination - - # GraphQL query using cursor-based pagination (where clause) - query_template = """ - query GetOfferDeleted($first: Int!, $lastId: String!) { - offerDeleteds( - first: $first, - where: { id_gt: $lastId }, - orderBy: id, - orderDirection: asc - ) { - id - offerId - transactionHash - logIndex - blockNumber - timestamp - } - } - """ - - while True: - # Prepare the GraphQL request - payload = { - "query": query_template, - "variables": { - "first": batch_size, - "lastId": last_id - } - } - - # Make the request - response = requests.post(url, headers=headers, json=payload, timeout=30) - response.raise_for_status() - - # Parse the response - data = response.json() - - # Check for GraphQL errors - if "errors" in data: - raise ValueError(f"GraphQL errors: {data['errors']}") - - # Extract the offers from this batch - offers_batch = data.get("data", {}).get("offerDeleteds", []) - - if not offers_batch: - break - - # Add to our complete list - all_offers.extend(offers_batch) - - # Update progress counter (overwrite previous number) - print(f"\rFetched {len(all_offers)} events offerDeleted from TheGraph...", end="", flush=True) - - # Update the cursor (last ID) for next batch - last_id = offers_batch[-1]["id"] - - # If we got less than the batch size, we've reached the end - if len(offers_batch) < batch_size: - break - - for i, offer in enumerate(all_offers): - all_offers[i]['topic'] = 'OfferDeleted' - - return all_offers \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_updated.py b/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_updated.py deleted file mode 100644 index bb04833..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_all_offer_updated.py +++ /dev/null @@ -1,96 +0,0 @@ -import requests -import json -from typing import List, Dict, Any - -def fetch_all_offer_updated(api_key: str, url: str) -> List[Dict[str, Any]]: - """ - Fetch all offerUpdated entities from The Graph subgraph with cursor-based pagination. - - Arg: - api_key (str): The Graph API key for authentication - url (str): The subgraph url to query - - Returns: - List[Dict[str, Any]]: Complete list of all offerUpdated entities - - Raises: - requests.RequestException: If API request fails - ValueError: If response format is unexpected - """ - - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - all_offers = [] - batch_size = 1000 - last_id = "" # For cursor-based pagination - - # GraphQL query using cursor-based pagination (where clause) - query_template = """ - query GetOfferUpdated($first: Int!, $lastId: String!) { - offerUpdateds( - first: $first, - where: { id_gt: $lastId }, - orderBy: id, - orderDirection: asc - ) { - id - offerId - oldPrice - oldAmount - newPrice - newAmount - transactionHash - logIndex - blockNumber - timestamp - } - } - """ - - while True: - # Prepare the GraphQL request - payload = { - "query": query_template, - "variables": { - "first": batch_size, - "lastId": last_id - } - } - - # Make the request - response = requests.post(url, headers=headers, json=payload, timeout=30) - response.raise_for_status() - - # Parse the response - data = response.json() - - # Check for GraphQL errors - if "errors" in data: - raise ValueError(f"GraphQL errors: {data['errors']}") - - # Extract the offers from this batch - offers_batch = data.get("data", {}).get("offerUpdateds", []) - - if not offers_batch: - break - - # Add to our complete list - all_offers.extend(offers_batch) - - # Update progress counter (overwrite previous number) - print(f"\rFetched {len(all_offers)} events offerUpdated from TheGraph...", end="", flush=True) - - # Update the cursor (last ID) for next batch - last_id = offers_batch[-1]["id"] - - # If we got less than the batch size, we've reached the end - if len(offers_batch) < batch_size: - break - - for i, offer in enumerate(all_offers): - all_offers[i]['topic'] = 'OfferUpdated' - - return all_offers \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_accepted_from_block_range.py b/yam_indexing_module/the_graphe_handler/internals/fetch_offer_accepted_from_block_range.py deleted file mode 100644 index 3437aa0..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_accepted_from_block_range.py +++ /dev/null @@ -1,135 +0,0 @@ -import requests -from typing import List, Dict, Any, Optional -import time -import logging - -# Get logger for this module -logger = logging.getLogger(__name__) - -def fetch_offer_accepted_from_block_range( - subgraph_url: str, - api_key: str, - from_block: int, - to_block: Optional[int] = None -) -> List[Dict[str, Any]]: - """ - Fetch all OfferAccepted entities from a range of blocks. - - Args: - subgraph_url (str): The Graph subgraph endpoint URL - api_key (str): The Graph API key for authentication - from_block (int): The starting block number (inclusive) - to_block (Optional[int]): The ending block number (inclusive). If None, fetches to latest block - - Returns: - List[Dict[str, Any]]: List of all OfferAccepted entities from the specified block range - """ - - all_entities = [] - last_id = "" - page_size = 1000 # Maximum allowed by The Graph - - while True: - # Build the GraphQL query using blockNumber_gte and blockNumber_lte for range - if to_block is not None: - block_filter = f'blockNumber_gte: {from_block}, blockNumber_lte: {to_block}' - else: - block_filter = f'blockNumber_gte: {from_block}' - - # Build the where clause with pagination - if last_id: - where_clause = f'where: {{{block_filter}, id_gt: "{last_id}"}}' - else: - where_clause = f'where: {{{block_filter}}}' - - query = f""" - {{ - offerAccepteds( - first: {page_size}, - {where_clause}, - orderBy: id, - orderDirection: asc - ) {{ - id - offerId - offerToken - buyerToken - seller - buyer - price - amount - transactionHash - logIndex - blockNumber - timestamp - }} - }} - """ - - # Prepare the request - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - payload = { - 'query': query - } - - try: - # Make the request - response = requests.post(subgraph_url, json=payload, headers=headers) - response.raise_for_status() - - data = response.json() - - # Check for GraphQL errors - if 'errors' in data: - error_msg = f"GraphQL errors: {data['errors']}" - logger.error(error_msg) - return [] - - # Extract the entities - entities = data.get('data', {}).get('offerAccepteds', []) - - if not entities: - # No more entities to fetch - break - - # Add entities to our collection - all_entities.extend(entities) - - # Update last_id for next iteration - last_id = entities[-1]['id'] - - # If we got fewer entities than page_size, we've reached the end - if len(entities) < page_size: - break - - # Small delay to be respectful to the API - time.sleep(0.1) - - except requests.exceptions.RequestException as e: - error_msg = f"HTTP request failed: {e}" - logger.error(error_msg) - return [] - except Exception as e: - error_msg = f"Failed to fetch entities: {e}" - logger.error(error_msg) - return [] - - # Add topic to all entities - for i, entity in enumerate(all_entities): - all_entities[i]['topic'] = 'OfferAccepted' - - return all_entities - -# Example usage -if __name__ == "__main__": - from pprint import pprint - offer_accepted = fetch_offer_accepted_from_block_range( - 'https://gateway.thegraph.com/api/subgraphs/id/7xsjkvdDtLJuVkwCigMaBqGqunBvhYjUSPFhpnGL1rvu', - '6a73e25ab5cf74012b68a2df437c4fef', - 40454034 - ) - pprint(offer_accepted) \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_created_from_block_range.py b/yam_indexing_module/the_graphe_handler/internals/fetch_offer_created_from_block_range.py deleted file mode 100644 index 583f331..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_created_from_block_range.py +++ /dev/null @@ -1,136 +0,0 @@ -import requests -from typing import List, Dict, Any, Optional -import time -import logging - -# Get logger for this module -logger = logging.getLogger(__name__) - -def fetch_offer_created_from_block_range( - subgraph_url: str, - api_key: str, - from_block: int, - to_block: Optional[int] = None -) -> List[Dict[str, Any]]: - """ - Fetch all OfferCreated entities from a range of blocks. - - Args: - subgraph_url (str): The Graph subgraph endpoint URL - api_key (str): The Graph API key for authentication - from_block (int): The starting block number (inclusive) - to_block (Optional[int]): The ending block number (inclusive). If None, fetches to latest block - - Returns: - List[Dict[str, Any]]: List of all OfferCreated entities from the specified block range - """ - - all_entities = [] - last_id = "" - page_size = 1000 # Maximum allowed by The Graph - - while True: - # Build the GraphQL query using blockNumber_gte and blockNumber_lte for range - if to_block is not None: - block_filter = f'blockNumber_gte: {from_block}, blockNumber_lte: {to_block}' - else: - block_filter = f'blockNumber_gte: {from_block}' - - # Build the where clause with pagination - if last_id: - where_clause = f'where: {{{block_filter}, id_gt: "{last_id}"}}' - else: - where_clause = f'where: {{{block_filter}}}' - - query = f""" - {{ - offerCreateds( - first: {page_size}, - {where_clause}, - orderBy: id, - orderDirection: asc - ) {{ - id - offerToken - buyerToken - seller - buyer - offerId - price - amount - transactionHash - logIndex - blockNumber - timestamp - }} - }} - """ - - # Prepare the request - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - payload = { - 'query': query - } - - try: - # Make the request - response = requests.post(subgraph_url, json=payload, headers=headers) - response.raise_for_status() - - data = response.json() - - # Check for GraphQL errors - if 'errors' in data: - error_msg = f"GraphQL errors: {data['errors']}" - logger.error(error_msg) - return [] - - # Extract the entities - entities = data.get('data', {}).get('offerCreateds', []) - - if not entities: - # No more entities to fetch - break - - # Add entities to our collection - all_entities.extend(entities) - - # Update last_id for next iteration - last_id = entities[-1]['id'] - - # If we got fewer entities than page_size, we've reached the end - if len(entities) < page_size: - break - - # Small delay to be respectful to the API - time.sleep(0.1) - - except requests.exceptions.RequestException as e: - error_msg = f"HTTP request failed: {e}" - logger.error(error_msg) - return [] - except Exception as e: - error_msg = f"Failed to fetch entities: {e}" - logger.error(error_msg) - return [] - - # Add topic to all entities - for i, entity in enumerate(all_entities): - all_entities[i]['topic'] = 'OfferCreated' - - return all_entities - - -# Example usage -if __name__ == "__main__": - from pprint import pprint - offer_created = fetch_offer_created_from_block_range( - 'https://gateway.thegraph.com/api/subgraphs/id/7xsjkvdDtLJuVkwCigMaBqGqunBvhYjUSPFhpnGL1rvu', - '6a73e25ab5cf74012b68a2df437c4fef', - 40448130 - ) - pprint(offer_created) \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_deleted_from_block_range.py b/yam_indexing_module/the_graphe_handler/internals/fetch_offer_deleted_from_block_range.py deleted file mode 100644 index 310088c..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_deleted_from_block_range.py +++ /dev/null @@ -1,119 +0,0 @@ -import requests -from typing import List, Dict, Any, Optional -import time -import logging - -# Get logger for this module -logger = logging.getLogger(__name__) - -def fetch_offer_deleted_from_block_range( - subgraph_url: str, - api_key: str, - from_block: int, - to_block: Optional[int] = None -) -> List[Dict[str, Any]]: - """ - Fetch all OfferDeleted entities from a range of blocks. - - Args: - subgraph_url (str): The Graph subgraph endpoint URL - api_key (str): The Graph API key for authentication - from_block (int): The starting block number (inclusive) - to_block (Optional[int]): The ending block number (inclusive). If None, fetches to latest block - - Returns: - List[Dict[str, Any]]: List of all OfferDeleted entities from the specified block range - """ - - all_entities = [] - last_id = "" - page_size = 1000 # Maximum allowed by The Graph - - while True: - # Build the GraphQL query using blockNumber_gte and blockNumber_lte for range - if to_block is not None: - block_filter = f'blockNumber_gte: {from_block}, blockNumber_lte: {to_block}' - else: - block_filter = f'blockNumber_gte: {from_block}' - - # Build the where clause with pagination - if last_id: - where_clause = f'where: {{{block_filter}, id_gt: "{last_id}"}}' - else: - where_clause = f'where: {{{block_filter}}}' - - query = f""" - {{ - offerDeleteds( - first: {page_size}, - {where_clause}, - orderBy: id, - orderDirection: asc - ) {{ - id - offerId - transactionHash - logIndex - blockNumber - timestamp - }} - }} - """ - - # Prepare the request - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - payload = { - 'query': query - } - - try: - # Make the request - response = requests.post(subgraph_url, json=payload, headers=headers) - response.raise_for_status() - - data = response.json() - - # Check for GraphQL errors - if 'errors' in data: - error_msg = f"GraphQL errors: {data['errors']}" - logger.error(error_msg) - return [] - - # Extract the entities - entities = data.get('data', {}).get('offerDeleteds', []) - - if not entities: - # No more entities to fetch - break - - # Add entities to our collection - all_entities.extend(entities) - - # Update last_id for next iteration - last_id = entities[-1]['id'] - - # If we got fewer entities than page_size, we've reached the end - if len(entities) < page_size: - break - - # Small delay to be respectful to the API - time.sleep(0.1) - - except requests.exceptions.RequestException as e: - error_msg = f"HTTP request failed: {e}" - logger.error(error_msg) - return [] - except Exception as e: - error_msg = f"Failed to fetch entities: {e}" - logger.error(error_msg) - return [] - - # Add topic to all entities - for i, entity in enumerate(all_entities): - all_entities[i]['topic'] = 'OfferDeleted' - - return all_entities \ No newline at end of file diff --git a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_updated_from_block_range.py b/yam_indexing_module/the_graphe_handler/internals/fetch_offer_updated_from_block_range.py deleted file mode 100644 index 80a8ef9..0000000 --- a/yam_indexing_module/the_graphe_handler/internals/fetch_offer_updated_from_block_range.py +++ /dev/null @@ -1,123 +0,0 @@ -import requests -from typing import List, Dict, Any, Optional -import time -import logging - -# Get logger for this module -logger = logging.getLogger(__name__) - -def fetch_offer_updated_from_block_range( - subgraph_url: str, - api_key: str, - from_block: int, - to_block: Optional[int] = None -) -> List[Dict[str, Any]]: - """ - Fetch all OfferUpdated entities from a range of blocks. - - Args: - subgraph_url (str): The Graph subgraph endpoint URL - api_key (str): The Graph API key for authentication - from_block (int): The starting block number (inclusive) - to_block (Optional[int]): The ending block number (inclusive). If None, fetches to latest block - - Returns: - List[Dict[str, Any]]: List of all OfferUpdated entities from the specified block range - """ - - all_entities = [] - last_id = "" - page_size = 1000 # Maximum allowed by The Graph - - while True: - # Build the GraphQL query using blockNumber_gte and blockNumber_lte for range - if to_block is not None: - block_filter = f'blockNumber_gte: {from_block}, blockNumber_lte: {to_block}' - else: - block_filter = f'blockNumber_gte: {from_block}' - - # Build the where clause with pagination - if last_id: - where_clause = f'where: {{{block_filter}, id_gt: "{last_id}"}}' - else: - where_clause = f'where: {{{block_filter}}}' - - query = f""" - {{ - offerUpdateds( - first: {page_size}, - {where_clause}, - orderBy: id, - orderDirection: asc - ) {{ - id - offerId - oldPrice - oldAmount - newPrice - newAmount - transactionHash - logIndex - blockNumber - timestamp - }} - }} - """ - - # Prepare the request - headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {api_key}" - } - - payload = { - 'query': query - } - - try: - # Make the request - response = requests.post(subgraph_url, json=payload, headers=headers) - response.raise_for_status() - - data = response.json() - - # Check for GraphQL errors - if 'errors' in data: - error_msg = f"GraphQL errors: {data['errors']}" - logger.error(error_msg) - return [] - - # Extract the entities - entities = data.get('data', {}).get('offerUpdateds', []) - - if not entities: - # No more entities to fetch - break - - # Add entities to our collection - all_entities.extend(entities) - - # Update last_id for next iteration - last_id = entities[-1]['id'] - - # If we got fewer entities than page_size, we've reached the end - if len(entities) < page_size: - break - - # Small delay to be respectful to the API - time.sleep(0.1) - - except requests.exceptions.RequestException as e: - error_msg = f"HTTP request failed: {e}" - logger.error(error_msg) - return [] - except Exception as e: - error_msg = f"Failed to fetch entities: {e}" - logger.error(error_msg) - return [] - - # Add topic to all entities - for i, entity in enumerate(all_entities): - all_entities[i]['topic'] = 'OfferUpdated' - - return all_entities \ No newline at end of file From 941ac694eecd3b45e06e73687cd14657cff773f2 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:14:09 +0100 Subject: [PATCH 3/8] restructure folder API name --- .../core}/__init__.py | 0 {pdf_generator_module/api => API/core}/app.py | 34 +++++++++++------ .../api => API/core}/dev_run_api.py | 18 +++------ .../api => API/core}/routes.py | 11 +++--- .../api => API/core/services}/__init__.py | 0 .../core}/services/realtokens_data.py | 3 ++ .../logging/logging_config.py | 4 +- .../logging/send_telegram_alert.py | 0 API/logging/shutdown_handler.py | 35 +++++++++++++++++ .../print_pdf/__init__.py | 0 .../print_pdf/build_pdf.py | 0 .../print_pdf/create_report_elements.py | 4 +- .../print_pdf/internals/_style.py | 0 .../print_pdf/internals/_utils.py | 0 .../query_db/__init__.py | 0 .../get_accepted_offers_by_buyer_datetime.py | 0 .../get_accepted_offers_by_seller_datetime.py | 0 logs/{api => }/.gitkeep | 0 logs/indexing/.gitkeep | 0 pdf_generator_module/api/services/__init__.py | 0 pdf_generator_module/start_api.py | 38 ------------------- 21 files changed, 76 insertions(+), 71 deletions(-) rename {pdf_generator_module => API/core}/__init__.py (100%) rename {pdf_generator_module/api => API/core}/app.py (50%) rename {pdf_generator_module/api => API/core}/dev_run_api.py (53%) rename {pdf_generator_module/api => API/core}/routes.py (92%) rename {pdf_generator_module/api => API/core/services}/__init__.py (100%) rename {pdf_generator_module/api => API/core}/services/realtokens_data.py (89%) rename {pdf_generator_module => API}/logging/logging_config.py (90%) rename {pdf_generator_module => API}/logging/send_telegram_alert.py (100%) create mode 100644 API/logging/shutdown_handler.py rename {pdf_generator_module => API}/print_pdf/__init__.py (100%) rename {pdf_generator_module => API}/print_pdf/build_pdf.py (100%) rename {pdf_generator_module => API}/print_pdf/create_report_elements.py (97%) rename {pdf_generator_module => API}/print_pdf/internals/_style.py (100%) rename {pdf_generator_module => API}/print_pdf/internals/_utils.py (100%) rename {pdf_generator_module => API}/query_db/__init__.py (100%) rename {pdf_generator_module => API}/query_db/get_accepted_offers_by_buyer_datetime.py (100%) rename {pdf_generator_module => API}/query_db/get_accepted_offers_by_seller_datetime.py (100%) rename logs/{api => }/.gitkeep (100%) delete mode 100644 logs/indexing/.gitkeep delete mode 100644 pdf_generator_module/api/services/__init__.py delete mode 100644 pdf_generator_module/start_api.py diff --git a/pdf_generator_module/__init__.py b/API/core/__init__.py similarity index 100% rename from pdf_generator_module/__init__.py rename to API/core/__init__.py diff --git a/pdf_generator_module/api/app.py b/API/core/app.py similarity index 50% rename from pdf_generator_module/api/app.py rename to API/core/app.py index 8ccefa4..d5bab12 100644 --- a/pdf_generator_module/api/app.py +++ b/API/core/app.py @@ -2,37 +2,48 @@ from flask_cors import CORS from .routes import api_bp from .services.realtokens_data import start_realtokens_updater -from pdf_generator_module.logging.logging_config import setup_logging +from API.logging.logging_config import setup_logging +from API.logging.send_telegram_alert import send_telegram_alert +from API.logging.shutdown_handler import install_signal_handlers import logging import json +import os +from dotenv import load_dotenv +load_dotenv() +RUNNING_IN_DOCKER = os.getenv("RUNNING_IN_DOCKER") == "1" + def create_app(): - # Set up logging at the start of your application + # Set up logging at the start of your application and handlers setup_logging() + install_signal_handlers() # Get a logger for this module logger = logging.getLogger(__name__) logger.info("Application started") + send_telegram_alert("yam transaction report generator: Application has started") app = Flask(__name__) - # Enable CORS for production - Allow all origins for public API + # Enable CORS for production - Allow all origins for public API CORS(app, origins="*", methods=['GET', 'POST', 'OPTIONS'], allow_headers=['Content-Type', 'Authorization'], supports_credentials=False ) + + # Required configuration + if RUNNING_IN_DOCKER: + db_path = "yam_indexing_db/yam_events.db" + else: + db_path = os.environ["YAM_INDEXING_DB_PATH"] + app.config['YAM_INDEXING_DB_PATH'] = db_path + app.config['REALTOKENS_API_URL'] = os.environ['REALTOKENS_API_URL'] - # Load configuration from config.json - with open('config.json', 'r') as config_file: - config = json.load(config_file) - - # Configuration - app.config['DB_PATH'] = config['db_path'] - app.config['API_PORT'] = config['api_port'] - app.config['REALTOKENS_API_URL'] = config['realtokens_api_url'] + # Optional configuration (with default) + app.config['API_PORT'] = int(os.getenv('API_PORT_INTERNAL', '5000')) try: with open('Ressources/blockchain_contracts.json', 'r') as contracts_file: @@ -40,6 +51,7 @@ def create_app(): logger.info("Blockchain contracts loaded successfully") except Exception as e: logger.error(f"Failed to load blockchain contracts: {e}") + send_telegram_alert(f"Failed to load blockchain contracts, please check blockchain_contracts.json: {e}") raise # Start RealTokens data service diff --git a/pdf_generator_module/api/dev_run_api.py b/API/core/dev_run_api.py similarity index 53% rename from pdf_generator_module/api/dev_run_api.py rename to API/core/dev_run_api.py index a6658a1..19a431e 100644 --- a/pdf_generator_module/api/dev_run_api.py +++ b/API/core/dev_run_api.py @@ -2,19 +2,17 @@ ## For DEV mode only! NOT TO BE USED IN PRODUCTION ### -import json import sys +from API.core.app import create_app + import os -from pdf_generator_module.api.app import create_app +from dotenv import load_dotenv +load_dotenv() if __name__ == '__main__': try: - # Load configuration to get the port - with open('config.json', 'r') as config_file: - config = json.load(config_file) - # Get port from config - port = config.get('api_port', 5000) # Default to 5000 if not found + port = int(os.getenv('API_PORT_INTERNAL', '5000')) # Create the Flask app app = create_app() @@ -23,12 +21,6 @@ print(f"Starting API server on port {port}...") app.run(host='0.0.0.0', port=port, debug=True) - except FileNotFoundError: - print("Error: config.json file not found!") - sys.exit(1) - except json.JSONDecodeError: - print("Error: Invalid JSON in config.json!") - sys.exit(1) except KeyError as e: print(f"Error: Missing configuration key: {e}") sys.exit(1) diff --git a/pdf_generator_module/api/routes.py b/API/core/routes.py similarity index 92% rename from pdf_generator_module/api/routes.py rename to API/core/routes.py index c497940..411d3be 100644 --- a/pdf_generator_module/api/routes.py +++ b/API/core/routes.py @@ -4,8 +4,9 @@ import io import logging import json -from pdf_generator_module.query_db import get_accepted_offers_by_buyer_datetime, get_accepted_offers_by_seller_datetime -from pdf_generator_module.print_pdf import create_report_elements, build_pdf +from API.query_db import get_accepted_offers_by_buyer_datetime, get_accepted_offers_by_seller_datetime +from API.print_pdf import create_report_elements, build_pdf +from API.logging.send_telegram_alert import send_telegram_alert # Get logger for this module logger = logging.getLogger(__name__) @@ -66,8 +67,8 @@ def generate_report(): blockchain_contracts = current_app.config['BLOCKCHAIN_CONTRACTS'] realtokens = current_app.config['REALTOKENS'] - events_seller = get_accepted_offers_by_seller_datetime(current_app.config['DB_PATH'], user_addresses, start_date, end_date) - events_buyer = get_accepted_offers_by_buyer_datetime(current_app.config['DB_PATH'], user_addresses, start_date, end_date) + events_seller = get_accepted_offers_by_seller_datetime(current_app.config['YAM_INDEXING_DB_PATH'], user_addresses, start_date, end_date) + events_buyer = get_accepted_offers_by_buyer_datetime(current_app.config['YAM_INDEXING_DB_PATH'], user_addresses, start_date, end_date) # Format dates for display from_datetime_formatted_string = datetime.fromisoformat(start_date.replace('Z', '+00:00')).strftime("%d %B %Y").lstrip('0') @@ -108,7 +109,7 @@ def generate_report(): except Exception as e: logger.error(f"Error generating report: {str(e)}") - current_app.logger.error(f"Error generating report: {str(e)}") + send_telegram_alert(f"Error generating report: {str(e)}") return jsonify({'error': f'Internal server error occurred while generating report: {e}'}), 400 @api_bp.route('/health', methods=['GET']) diff --git a/pdf_generator_module/api/__init__.py b/API/core/services/__init__.py similarity index 100% rename from pdf_generator_module/api/__init__.py rename to API/core/services/__init__.py diff --git a/pdf_generator_module/api/services/realtokens_data.py b/API/core/services/realtokens_data.py similarity index 89% rename from pdf_generator_module/api/services/realtokens_data.py rename to API/core/services/realtokens_data.py index 3de2485..fa57d5c 100644 --- a/pdf_generator_module/api/services/realtokens_data.py +++ b/API/core/services/realtokens_data.py @@ -3,6 +3,7 @@ import time import logging from eth_utils import to_checksum_address, is_address +from API.logging.send_telegram_alert import send_telegram_alert # Get logger for this module logger = logging.getLogger(__name__) @@ -43,6 +44,7 @@ def start_realtokens_updater(app): logger.info("RealTokens service initialized successfully") else: logger.error("Failed to initialize RealTokens service - cannot start application") + send_telegram_alert("Failed to initialize RealTokens service - cannot start application") raise Exception("Failed to load initial RealTokens data - cannot start application without this data") def update_realtokens_periodically(): @@ -56,6 +58,7 @@ def update_realtokens_periodically(): logger.info("RealTokens data updated successfully (24h periodic update)") else: logger.error("Failed to update RealTokens data (24h periodic update)") + send_telegram_alert("Failed to update RealTokens data (24h periodic update)") # Start background thread update_thread = threading.Thread(target=update_realtokens_periodically, daemon=True) diff --git a/pdf_generator_module/logging/logging_config.py b/API/logging/logging_config.py similarity index 90% rename from pdf_generator_module/logging/logging_config.py rename to API/logging/logging_config.py index 9b90953..ae6cfff 100644 --- a/pdf_generator_module/logging/logging_config.py +++ b/API/logging/logging_config.py @@ -6,14 +6,14 @@ def setup_logging(): - os.makedirs("logs/api", exist_ok=True) + os.makedirs("logs", exist_ok=True) logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ RotatingFileHandler( - 'logs/api/app.log', + 'logs/app_yam-report.log', maxBytes=10*1024*1024, # 10MB per file backupCount=5, # Keep 5 backup files encoding='utf-8' diff --git a/pdf_generator_module/logging/send_telegram_alert.py b/API/logging/send_telegram_alert.py similarity index 100% rename from pdf_generator_module/logging/send_telegram_alert.py rename to API/logging/send_telegram_alert.py diff --git a/API/logging/shutdown_handler.py b/API/logging/shutdown_handler.py new file mode 100644 index 0000000..80725b7 --- /dev/null +++ b/API/logging/shutdown_handler.py @@ -0,0 +1,35 @@ +import signal +import threading +import os +import logging +from API.logging.send_telegram_alert import send_telegram_alert + + +_shutdown_notified = False +_lock = threading.Lock() + +logger = logging.getLogger(__name__) + +def notify_shutdown(reason: str): + global _shutdown_notified + with _lock: + if _shutdown_notified: + return + _shutdown_notified = True + logger.info(f"API has been stopped: {reason}") + send_telegram_alert(f"The YAM report PDF generator API has been stopped: {reason}") + + # On Windows, if we don't re-raise the interruption, Waitress may keep running. + if os.name == "nt": + raise KeyboardInterrupt + + +def _handle_sigterm(signum, frame): + notify_shutdown("docker stop") + +def _handle_sigint(signum, frame): + notify_shutdown("ctrl+c") + +def install_signal_handlers(): + signal.signal(signal.SIGTERM, _handle_sigterm) + signal.signal(signal.SIGINT, _handle_sigint) diff --git a/pdf_generator_module/print_pdf/__init__.py b/API/print_pdf/__init__.py similarity index 100% rename from pdf_generator_module/print_pdf/__init__.py rename to API/print_pdf/__init__.py diff --git a/pdf_generator_module/print_pdf/build_pdf.py b/API/print_pdf/build_pdf.py similarity index 100% rename from pdf_generator_module/print_pdf/build_pdf.py rename to API/print_pdf/build_pdf.py diff --git a/pdf_generator_module/print_pdf/create_report_elements.py b/API/print_pdf/create_report_elements.py similarity index 97% rename from pdf_generator_module/print_pdf/create_report_elements.py rename to API/print_pdf/create_report_elements.py index 8769980..8d2c24c 100644 --- a/pdf_generator_module/print_pdf/create_report_elements.py +++ b/API/print_pdf/create_report_elements.py @@ -1,5 +1,5 @@ -from pdf_generator_module.print_pdf.internals._utils import _get_report_parameter_section, _format_number, _format_timestamp, _aggregate_total_row -from pdf_generator_module.print_pdf.internals._style import _get_title_style, _get_user_addresses_style, _get_event_type_subtitle_style, _get_link_style, _get_header_style, _get_common_style, _get_buy_sell_table_style, _get_columns_width_buy_sell_table, _get_columns_width_exchange_table, _get_exchange_table_style +from API.print_pdf.internals._utils import _get_report_parameter_section, _format_number, _format_timestamp, _aggregate_total_row +from API.print_pdf.internals._style import _get_title_style, _get_user_addresses_style, _get_event_type_subtitle_style, _get_link_style, _get_header_style, _get_common_style, _get_buy_sell_table_style, _get_columns_width_buy_sell_table, _get_columns_width_exchange_table, _get_exchange_table_style from reportlab.platypus import Paragraph, Spacer, Table, TableStyle, PageBreak from reportlab.lib.pagesizes import A4 from reportlab.lib.units import cm diff --git a/pdf_generator_module/print_pdf/internals/_style.py b/API/print_pdf/internals/_style.py similarity index 100% rename from pdf_generator_module/print_pdf/internals/_style.py rename to API/print_pdf/internals/_style.py diff --git a/pdf_generator_module/print_pdf/internals/_utils.py b/API/print_pdf/internals/_utils.py similarity index 100% rename from pdf_generator_module/print_pdf/internals/_utils.py rename to API/print_pdf/internals/_utils.py diff --git a/pdf_generator_module/query_db/__init__.py b/API/query_db/__init__.py similarity index 100% rename from pdf_generator_module/query_db/__init__.py rename to API/query_db/__init__.py diff --git a/pdf_generator_module/query_db/get_accepted_offers_by_buyer_datetime.py b/API/query_db/get_accepted_offers_by_buyer_datetime.py similarity index 100% rename from pdf_generator_module/query_db/get_accepted_offers_by_buyer_datetime.py rename to API/query_db/get_accepted_offers_by_buyer_datetime.py diff --git a/pdf_generator_module/query_db/get_accepted_offers_by_seller_datetime.py b/API/query_db/get_accepted_offers_by_seller_datetime.py similarity index 100% rename from pdf_generator_module/query_db/get_accepted_offers_by_seller_datetime.py rename to API/query_db/get_accepted_offers_by_seller_datetime.py diff --git a/logs/api/.gitkeep b/logs/.gitkeep similarity index 100% rename from logs/api/.gitkeep rename to logs/.gitkeep diff --git a/logs/indexing/.gitkeep b/logs/indexing/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/pdf_generator_module/api/services/__init__.py b/pdf_generator_module/api/services/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pdf_generator_module/start_api.py b/pdf_generator_module/start_api.py deleted file mode 100644 index f6db604..0000000 --- a/pdf_generator_module/start_api.py +++ /dev/null @@ -1,38 +0,0 @@ - -import json, subprocess, sys, os -import signal - -def signal_handler(sig, frame): - """Handle Ctrl+C gracefully""" - print("\nShutting down server...") - sys.exit(0) - -def main(): - # Set up signal handler for Ctrl+C - signal.signal(signal.SIGINT, signal_handler) - - try: - with open("config.json") as f: - config = json.load(f) - port = config.get("api_port", 5000) - workers = os.cpu_count() or 2 # Fallback to 2 - - print(f"Starting server on port {port} with {workers} workers...") - print("Press Ctrl+C to stop the server") - - subprocess.run([ - "gunicorn", - "-w", str(workers), - "-b", f"0.0.0.0:{port}", - "pdf_generator_module.api.app:create_app()" - ], check=True) - - except KeyboardInterrupt: - print("\nServer stopped by user") - sys.exit(0) - except Exception as e: - print(f"Startup error: {e}") - sys.exit(1) - -if __name__ == "__main__": - main() \ No newline at end of file From 63925dd9e13aeb50f30f4068ee1681151f24df73 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:14:57 +0100 Subject: [PATCH 4/8] using .env instead of config.json --- .env.example | 10 ++++++++++ config_example.json | 12 ------------ 2 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 .env.example delete mode 100644 config_example.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..cbbfc38 --- /dev/null +++ b/.env.example @@ -0,0 +1,10 @@ +# SQLite database path in the yam-indexing application +YAM_INDEXING_DB_PATH=../yam-indexing/yam_indexing_db/yam_events.db + +REALTOKENS_API_URL=https://api.realtoken.community/v1/token + +API_PORT_INTERNAL=5000 + +# Telegram alerts +TELEGRAM_ALERT_BOT_TOKEN= +TELEGRAM_ALERT_GROUP_ID= \ No newline at end of file diff --git a/config_example.json b/config_example.json deleted file mode 100644 index 57d74ec..0000000 --- a/config_example.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "w3_urls": [ - "https://gnosis-mainnet.blastapi.io/...", - "https://lb.nodies.app/v1/...", - "https://gnosis-mainnet.core.chainstack.com/..." - ], - "db_path": "YAM_events.db", - "api_port" : 5000, - "realtokens_api_url" : "https://api.realtoken.community/v1/token", - "the_graph_api_key" : "...", - "subgraph_url" : "https://gateway.thegraph.com/api/subgraphs/id/7xsjkvdDtLJuVkwCigMaBqGqunBvhYjUSPFhpnGL1rvu" -} \ No newline at end of file From cd861cce74f5aacf76788833c3843c8cbb03a662 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:15:53 +0100 Subject: [PATCH 5/8] update docker configuration after restructure --- .dockerignore | 18 ++++++++++++++++++ .github/workflows/branch.yml | 2 +- Dockerfile-api | 8 +------- docker-compose-branch.yml | 9 ++++++--- docker-compose.yml | 14 +++++++++----- docker-entrypoint.sh | 29 +++++++++++------------------ 6 files changed, 46 insertions(+), 34 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..47377d5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +# Python +__pycache__/ +*.pyc +*.pyo + +# Virtual environments +.venv/ + +# Environment / secrets +.env + +# Persistent data (DB) +yam_indexing_db/ +*.db + +# Git +.git/ +.gitignore \ No newline at end of file diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index ff15152..1b8694e 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.11' - name: Set up Node.js uses: actions/setup-node@v3 diff --git a/Dockerfile-api b/Dockerfile-api index 0da7b1e..ba80e2b 100644 --- a/Dockerfile-api +++ b/Dockerfile-api @@ -1,4 +1,4 @@ -FROM python:3.9-slim +FROM python:3.11-slim # Créer et définir le répertoire de travail WORKDIR /app @@ -12,15 +12,9 @@ RUN pip install --no-cache-dir -r requirements.txt # Copier le reste du code COPY . . -# Initialiser la base de données -# RUN python3 -m yam_indexing_module.initialize_indexing_module - # Exposer les ports nécessaires EXPOSE 5000 -# Créer un volume pour la base de données -# VOLUME ["/app/YAM_events.db"] - # Script d'entrée pour démarrer les services COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh diff --git a/docker-compose-branch.yml b/docker-compose-branch.yml index b7a22c0..926bee7 100644 --- a/docker-compose-branch.yml +++ b/docker-compose-branch.yml @@ -2,17 +2,20 @@ services: api: image: ${DOCKER_REGISTRY}/yam-report:api container_name: ${DOCKER_BRANCH}-yam_report_api + env_file: + - .env networks: - yam-report - traefik-realt volumes: - - ./config.json:/app/config.json - - ./YAM_events.db:/app/YAM_events.db + - ${YAM_INDEXING_DB_PATH}:/app/yam_indexing_db/yam_events.db:ro + - ./logs:/app/logs labels: - 'traefik.enable=true' - 'traefik.http.routers.yam-report-api-${DOCKER_BRANCH}.rule=Host(`${HOSTNAME}`) && PathPrefix(`/api`)' - 'traefik.http.services.yam-report-api-${DOCKER_BRANCH}.loadbalancer.server.port=5000' restart: unless-stopped + ui: image: ${DOCKER_REGISTRY}/yam-report:ui container_name: ${DOCKER_BRANCH}-yam_report_ui @@ -28,4 +31,4 @@ services: networks: yam-report: traefik-realt: - external: true \ No newline at end of file + external: true diff --git a/docker-compose.yml b/docker-compose.yml index 12fe1ce..81ff860 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,10 +6,15 @@ services: container_name: yam_report_api ports: - "3599:5000" + env_file: + - .env + environment: + RUNNING_IN_DOCKER: "1" volumes: - - ./config.json:/app/config.json - - ./YAM_events.db:/app/YAM_events.db - restart: always + - ${YAM_INDEXING_DB_PATH}:/app/yam_indexing_db/yam_events.db:ro + - ./logs:/app/logs + restart: unless-stopped + ui: build: context: . @@ -17,5 +22,4 @@ services: container_name: yam_report_ui ports: - "3598:80" - volumes: - restart: always \ No newline at end of file + restart: unless-stopped diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 9a3a034..e4145ad 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,21 +1,14 @@ -#!/bin/bash +#!/usr/bin/env bash +set -euo pipefail -# Vérifier si le fichier config.json existe -if [ ! -f "config.json" ]; then - echo "Erreur: config.json non trouvé. Veuillez monter le fichier config.json dans le conteneur." - exit 1 -fi +PORT="${API_PORT_INTERNAL:-5000}" +WORKERS=1 +THREADS=2 -# Initialiser le module d'indexation si la base de données n'existe pas -if [ ! -f "YAM_events.db" ]; then - echo "Initialisation du module d'indexation..." - python3 -m yam_indexing_module.initialize_indexing_module -fi +echo "Starting API on port ${PORT} with ${WORKERS} worker(s) and ${THREADS} thread(s)..." -# Démarrer le service d'indexation en arrière-plan -echo "Démarrage du service d'indexation..." -python3 -m yam_indexing_module.main_indexing & - -# Démarrer l'API -echo "Démarrage de l'API..." -python3 pdf_generator_module/start_api.py \ No newline at end of file +exec gunicorn \ + --workers "${WORKERS}" \ + --threads "${THREADS}" \ + --bind "0.0.0.0:${PORT}" \ + "API.core.app:create_app()" From 281b041ddf5594c3acaaf9d2aa8f7d2f70b84650 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:16:25 +0100 Subject: [PATCH 6/8] update requirements after restructure --- .gitignore | 24 ++++-------------------- requirements.txt | Bin 1988 -> 2158 bytes 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index d2035ae..55349a0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,21 +7,10 @@ playground*.py # Log files and directories logs/* !logs/.gitkeep -!logs/api/ -!logs/api/.gitkeep -!logs/indexing/ -!logs/indexing/.gitkeep # Ignore log files *.log -*.log.* -*.log.1 -*.log.2 -*.log.3 -*.log.4 -*.log.5 - -config.json +*.log*.* #venv venv/ @@ -37,17 +26,12 @@ UI/.env.local # Node modules node_modules/ -# Generated files -yam-events-tracker/generated/ -yam-events-tracker/build/ -dist/ -.cache/ -.graphclient/ - # Database files *.db *.sqlite *.sqlite3 # OS-specific -.DS_Store \ No newline at end of file +.DS_Store + +.env \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8c21cac44e25b9ebbf0cbe919d43fce74add9c0f..559c140eb84243ff661fefaccd97470d1742bb70 100644 GIT binary patch literal 2158 zcma)-OK;Oq5QS%r#D5571B+C#6Iu{r3jztT=%ULgb(7YRIKfG1(;p9`{Vn}N?Y5l&1|FRU~^wr`n}Y%wKsZlJGC>d%pTh#Sz^b|cG`h`>^9zc z&togU8><`%uT1ud)~NBRWLpbkrZu-~8|w2Q#Ca2SB;WI%Kk@38(TgLrE5!n-)-w}I zV)e4!f2C|nMf@WC+U@Xp)!GaHeq7vEirlX*xsT7Rpf#ypH4Sl~F0Ah=fn4U__cKCwc^~2_quC)jskK^^A{TkR4?HbsLn4s&myzXQ@ zar`@R;3U~*kgpLMebgx|L+H}%Us;gKjPE3syo72Zmcx`2yc{iXP z-P}#6u6sUsW}oGm_fXP_`KbSE)q5|cF7$mN9w`=ijy>8+_N5}i2EC)ERKA-@8%JW! zt-NB)#l#4t%yo-C+sKQFirPeDnuM;&PCgq&;-sPyUZ8N+LjmS`)CQWo8cS%gf z@C*ghSts6&)_ueAcWu+7vw+hg;fqEy5WQn;BLhKFOR_NSC%*}|A`NWKVCYwvyI6vHU`(`eu Txfyre!Oz9gx4Q^AOZo`U9d&OiUBCBrnmmOD#jEjvb=E zqD!|<{Q(|22i-f>%&ZcR2lIAkeqZyw^tO1vp?%l}Kgg|G4izrAK{buHk$5mNl|EcS z2Wqed1871U>TnJhRF~=GsXLsQhd3P3*8%jPFaM1E^@3Mh`N3yem#EjER(6)j3>1K8 zYH&((JvbrUe@w%;m{a+bnRK;a1dRzUE2N9pDxtY5;iD>R(Sc+2s~jB96gTD7JQD>@lq{dQYV#*dA%>{eZ0{b9eRJ!S!M8p-t41*KRRm} zC{k_kAevDH97gRqPLj4I9Z%5=r9t{JXQh>gU(pa7;CCm)Sye7p)j$ZpQ41o@#7m%@sG{hDPMOONZwKSMoCO2WwbqQUCw| From df9e63ebc0793ffa565318f37839e9e57047d646 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Wed, 24 Dec 2025 13:16:38 +0100 Subject: [PATCH 7/8] update readme after restructure --- readme.md | 229 ++++++++++++++++++++++++++---------------------------- 1 file changed, 112 insertions(+), 117 deletions(-) diff --git a/readme.md b/readme.md index 6f2a7a8..50a1f4c 100644 --- a/readme.md +++ b/readme.md @@ -4,80 +4,114 @@ - [Overview](#overview) - [System Requirements](#system-requirements) -- [Installation Guide](#installation-guide) - - [Step 1 – Configure config.json](#step-1--configure-configjson) - - [Step 2 – Install Python Dependencies](#step-2--install-python-dependencies) - - [Step 3 – Install Frontend Dependencies](#step-3--install-frontend-dependencies) - - [Step 4 – Initialize the Indexing Module](#step-4--initialize-the-indexing-module) -- [Running the Project](#running-the-project) - - [Start the Indexing Service](#start-the-indexing-service) - - [Start the API Server](#start-the-api-server) - - [Start the Web Interface](#start-the-web-interface) -- [Technical Analysis and Module Details](#technical-analysis-and-module-details) - - [Indexing Module (Python)](#indexing-module-python) - - [API & PDF Generation Module (Python)](#api--pdf-generation-module-python) - - [Endpoints](#endpoints) - - [`/health` – Health Check](#health--health-check) - - [`/generate-report` – Generate PDF Report](#generate-report--generate-pdf-report) - - [Frontend Interface (Vue 3 + Vuetify)](#frontend-interface-vue-3--vuetify) - - [Technologies Used](#technologies-used) - - [Features](#features) +- [Prerequisites and Configuration](#prerequisites-and-configuration) +- [Installation & Execution](#installation--execution) + - [Option A — Docker (Recommended)](#option-a--docker-recommended) + - [Option B — Manual Installation (Without Docker)](#option-b--manual-installation-without-docker) +- [API Details: PDF Generation](#api-details-pdf-generation) + - [Endpoints](#endpoints) +- [Frontend Interface (Vue 3 + Vuetify)](#frontend-interface-vue-3--vuetify) ## Overview This project enables users to generate comprehensive PDF reports of all their **YAM v1** transactions on the Gnosis blockchain. -This project consists of **3 core modules**: +This project consists of **2 modules**: -1. **Indexing Module** (Python) – Tracks and stores all YAM blockchain transactions in a local database. -2. **API & PDF Generation Module** (Python) – Provides an API endpoint to generate and download PDF reports. -3. **Frontend Interface** (Vue.js + Vuetify) – A minimal UI that allows the user to enter their parameters and download the PDF. +1. **PDF Generation API** (Python) – Provides an API endpoint to generate and download PDF reports. +2. **Frontend Interface** (Vue.js + Vuetify) – A minimal UI that allows the user to enter their parameters and download the PDF. --- ## System Requirements -- Python 3.9+ +- Python 3.11+ - Node.js 18+ +- Docker & Docker Compose (optional but recommended) --- -## Installation Guide +## Prerequisites and configuration -### Step 1 – Configure *config.json* +### Prerequisites -Upload to the root project directory the `config.json` file. See the `config_example.json` as a template to complete: +This project cannot function on its own. It depends on an external SQLite database generated and maintained by the **YAM Indexing** project. -```json -{ - "w3_urls": [ - "https://gnosis-mainnet.blastapi.io/...", - "https://lb.nodies.app/v1/...", - "https://gnosis-mainnet.core.chainstack.com/..." - ], - "db_path": "YAM_events.db", - "api_port" : 5000, - "realtokens_api_url" : "https://api.realtoken.community/v1/token", - "the_graph_api_key" : "...", - "subgraph_url" : "https://gateway.thegraph.com/api/subgraphs/id/7xsjkvdDtLJuVkwCigMaBqGqunBvhYjUSPFhpnGL1rvu" -} +The YAM Indexing application must be installed and running on its own. + +For more information, see the [yam-indexing](https://github.com/RealToken-Community/yam-indexing) project. + + +### Configure Environment Variables + +An example configuration file is provided: `.env.example`. +Copy it to `.env` and update the values with your own secrets. + +```env +# SQLite database path in the yam-indexing application +YAM_INDEXING_DB_PATH=../yam-indexing/yam_indexing_db/yam_events.db + +REALTOKENS_API_URL=https://api.realtoken.community/v1/token + +API_PORT_INTERNAL=5000 + +# Telegram alerts +TELEGRAM_ALERT_BOT_TOKEN= +TELEGRAM_ALERT_GROUP_ID= ``` -2. **Install Python Dependencies** +> **Note:** +> For alerts, you can configure a Telegram bot and a Telegram group: the bot (using `TELEGRAM_ALERT_BOT_TOKEN`) must be added to the telegram chat group (`TELEGRAM_ALERT_GROUP_ID`) to receive automatic notifications about critical events such as failures or application stops. + +## Installation & Execution + +### Option A — Docker (Recommended) + +The project includes a **ready-to-use Docker integration**. + +From the **project root directory** (where `docker-compose.yml` is located), build +(or rebuild) and start the service with: + +```bash +docker compose up --build -d +``` + +This single command: +- Rebuilds the image if the source code changed +- Recreates the existing container without duplication +- Starts the service from a clean state + + + +To stop the service: + +```bash +docker compose stop +``` + +> For detailed information about what is happening inside the Docker container, see the section below. + +### Option B — Manual Installation (Without Docker) + +#### 1. Create and Activate a Python Virtual Environment ```bash # Optional but recommended: create and activate a virtual environment python3 -m venv .venv source .venv/bin/activate +``` -# Install packages listed in requirements.txt +#### 2. Install python (API) Dependencies + +```bash pip install -r requirements.txt ``` -3. **Install Frontend Dependencies** + +#### 3. **Install Frontend Dependencies** ```bash -# Change directory to the 'UI' folder (where the frontend code is +# Change directory to the 'UI' folder (where the frontend code is) cd UI # Install all dependencies listed in package.json and build the UI @@ -85,42 +119,49 @@ npm install npm run build ``` -4. **Initialize the indexing module** -(database creation and historical data backfill - this step might take a while) -```bash -python3 -m yam_indexing_module.initialize_indexing_module -``` ---- +#### 4. Running the Project -## Running the Project +>When not using the recommended Docker setup, the different application instances must be managed independently. This includes running the Python-based API as a dedicated process, as well as building the frontend assets and serving them through a web server of choice. Each instance must be started, configured, and maintained separately. ->Since multiple components need to run simultaneously, consider using screen or tmux to keep each process running in its own terminal session. This is especially helpful on remote servers or when you want processes to keep running after you disconnect. +##### Running the API Server + +The API can be started in different ways depending on the operating system and execution context. Below are the supported commands. -#### Start the Indexing Service ```bash -python3 -m yam_indexing_module.main_indexing +# Linux (Production-like setup) +gunicorn -w 1 --threads 1 -b 0.0.0.0:5000 API.core.app:create_app() + +# Windows (Production) +waitress-serve --listen=0.0.0.0:5000 --threads=1 --call "API.core.app:create_app" + +# Windows (dev mode) +python -m API.core.dev_run_api ``` -#### Start the API Server -```bash -python3 pdf_generator_module/start_api.py +Once the API is running, its availability can be checked using the health endpoint: +```text +http://:/api/health ``` -You can verify that the API server is running by visiting the following health check endpoint in your browser: -```http://[your-domain]:[public-api-port]/api/health``` -> **Note**: -> - The **internal port** on which the API actually listens is defined in the `config.json` file under the key `api_port`. This is the port your API process binds to inside the container or on the server. + +>**Note on port Configuration and Environment Variables** +>The API and the frontend rely on different environment variables to determine which ports are used internally and which are exposed publicly. +> +>- **API internal port** +> The port on which the API process listens is defined in the `.env` file using the `API_PORT_INTERANL` variable. > -> - The **public API port**, i.e., the one exposed to the outside world and used by the frontend (UI), is defined in the environment file: -> - In development, it's set in `.env.development` as `VITE_API_PORT` -> - In production, it's set in `.env.production` as `VITE_API_PORT` +>- **Public API port (used by the frontend)** +> The port used by the frontend (UI) to reach the API is defined by `VITE_API_PORT`: +> - In production, this is set in `.env.production` +> - In development, this is set in `.env.development` > -> - In development, the `VITE_API_PORT` value typically **matches** the `api_port` in `config.json`, since no reverse proxy is used (e.g., both set to `5000`). +> For standard configurations, this value can be set to `80` or `443`, allowing API calls without explicitly specifying a port in the URL. > -> - In production, they may **differ**: the API might listen internally on a port like `5000` (from `config.json`), while a reverse proxy like Nginx forwards public traffic from port `443` (or another) to this internal port. -> The frontend uses `VITE_API_PORT` to know which port to call. +>- **Development vs Production behavior** +> In development, `VITE_API_PORT` usually matches `API_PORT_INTERANL` since no reverse proxy is involved (for example, both set to `5000`). +> In production, these values often differ: the API may listen internally on a port such as `5000`, while a reverse proxy (e.g. Nginx) exposes the API publicly on port `443` and forwards traffic to the internal port. -#### Start the Web Interface +##### Running the Web Interface The frontend is built as static files located in the ```UI/dist``` directory after running ```npm run build```. Deploy these static files using your existing web server infrastructure (Nginx, Apache, IIS, etc.) or cloud hosting service. The specific deployment method depends on your infrastructure setup and is outside the scope of this guide. @@ -128,52 +169,8 @@ Deploy these static files using your existing web server infrastructure (Nginx, --- -## Technical analysis and module details - -### Indexing Module (Python) - -This module is responsible for tracking all YAM v1 transactions on the Gnosis blockchain and storing them in a local SQLite database. - -#### How It Works -#### Initialization script - -1. **Database Initialization** - A one-time script initializes the local database by creating three core tables: - - - `offers`: stores all offers ever created on the YAM contract along with their status (In progress, sold out, deleted). - - `offer_events`: stores all events related to each offer (creation, modification, purchase, deletion). - - `indexing_status`: tracks the indexing progress by recording the last indexed block. - -2. **Historical Backfill with The Graph** - Within this initialization script, the module queries a YAM-specific subgraph hosted on The Graph. This allows for a full backfill of past transactions from the contract’s deployment up to the latest block, ensuring historical completeness. - -#### Main script to run the indexing service - -1. **Startup Synchronization** - When the indexing service starts, it checks for any gap between the last indexed block and the current head of the blockchain. If needed, it fills the gap using The Graph to ensure continuity. - -2. **Live Indexing Loop** - The core of the module runs in a continuous loop. It: - - - Fetches raw logs directly from the Gnosis blockchain using RPC endpoints. - - Automatically switches between multiple RPCs if one fails. - - Decodes the logs into structured event data. - - Stores the results in the appropriate database tables. - -3. **Periodic Backfill & Health Checks** - Every few cycles, the module performs a short backfill (e.g., the last few hours) via The Graph to ensure no transactions were missed. (This is also useful to confirm that the subgraph is still being actively used so that The Graph indexers won’t stop indexing) - -#### Other considerations - -**Data Format** - The database is designed to reflect raw on-chain data as closely as possible. For instance, numeric fields are stored in `uint256` format to avoid data loss or misinterpretation. - -**Scalable and Resilient to Third-Party Failures** - The app’s indexing logic is built to scale: it performs a fixed number of RPC and subgraph queries, regardless of how many users or transactions there are. This means the system won’t generate more load—or require a paid plan—as usage grows. All user queries rely on a local database that stays up to date via a background sync, not per-user reads from The Graph or the chain. - In addition, this setup has the advantage of being resilient to downtimes of third-party indexers like The Graph. Since the app queries its own database instead of relying on external services at runtime, it continues to function normally even if those indexers become unavailable. - -### API & PDF Generation Module (Python) +## API details: PDF generation This module provides a RESTful API (using flask python library) to generate PDF reports. The PDF is generated using the `reportlab` library and includes detailed transaction data over a given date range. @@ -217,19 +214,17 @@ This module provides a RESTful API (using flask python library) to generate PDF > Note: the module can be run in dev mode using the following command: ```python3 -m pdf_generator_module.api.dev_run_api``` -### Frontend Interface (Vue 3 + Vuetify) +## Frontend Interface (Vue 3 + Vuetify) This is the front-end module for the YAM transaction PDF generator. It provides a modern, mobile-friendly interface allowing users to select wallet addresses, date ranges, transaction types, and other display options. The UI then submits these parameters to the backend API and downloads a customized PDF report. - - -#### Technologies Used +### Technologies Used - **Vue 3** with Composition API - **Vuetify 3** for material design components - **Custom styling** for a gradient hero section and elegant glassmorphic UI -#### Features +### Features - Add one or more **Ethereum wallet addresses** - Pick a **start and end date** (with validation) From b85ad680a1c5f6c34b5575eac5c6fe7efc044946 Mon Sep 17 00:00:00 2001 From: Logan Sulpizio Date: Fri, 26 Dec 2025 09:15:27 +0100 Subject: [PATCH 8/8] document that Telegram alerts feature is optional --- .env.example | 2 +- readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index cbbfc38..1dc9cc6 100644 --- a/.env.example +++ b/.env.example @@ -5,6 +5,6 @@ REALTOKENS_API_URL=https://api.realtoken.community/v1/token API_PORT_INTERNAL=5000 -# Telegram alerts +# Telegram alerts [optional] TELEGRAM_ALERT_BOT_TOKEN= TELEGRAM_ALERT_GROUP_ID= \ No newline at end of file diff --git a/readme.md b/readme.md index 50a1f4c..54ee7fc 100644 --- a/readme.md +++ b/readme.md @@ -55,7 +55,7 @@ REALTOKENS_API_URL=https://api.realtoken.community/v1/token API_PORT_INTERNAL=5000 -# Telegram alerts +# Telegram alerts [optional] TELEGRAM_ALERT_BOT_TOKEN= TELEGRAM_ALERT_GROUP_ID= ```