#!/bin/bash # Event Utilities for Superball Protocol Tests # Create a test event (kind 1 text note) create_test_event() { local privkey=$1 local content=$2 local timestamp=${3:-$(date +%s)} echo "{\"content\":\"$content\",\"created_at\":$timestamp}" | \ nak event --sec "$privkey" -k 1 --tag "" } # Create routing payload (Type 1) create_routing_payload() { local event_json=$1 local relays=$2 # Comma-separated relay URLs local delay=$3 local next_hop_pubkey=${4:-null} local audit_tag=$5 local add_padding_bytes=${6:-0} # Convert relays to JSON array local relay_array="[" IFS=',' read -ra RELAY_ARRAY <<< "$relays" for i in "${!RELAY_ARRAY[@]}"; do if [ $i -gt 0 ]; then relay_array+="," fi relay_array+="\"${RELAY_ARRAY[$i]}\"" done relay_array+="]" # Build routing payload local routing_payload=$(cat </dev/null return $? } # Publish event to relay publish_event() { local event_json=$1 local relay=$2 echo "$event_json" | nak event "$relay" 2>&1 } # Query event from relay query_event() { local event_id=$1 local relay=$2 local timeout=${3:-5} nak req --relay "$relay" -i "$event_id" --timeout "$timeout" 2>/dev/null } # Monitor relay for specific event kind monitor_relay_for_kind() { local relay=$1 local kind=$2 local timeout=${3:-30} timeout "$timeout" nak req --stream --relay "$relay" -k "$kind" 2>/dev/null } # Get pubkey from private key get_pubkey_from_privkey() { local privkey=$1 nak key public "$privkey" }