{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://khadhroony.local/schemas/resolved.app.config.schema.json", "title": "Khadhroony Solana resolved runtime application configuration", "type": "object", "additionalProperties": false, "required": [ "active_profile", "profiles" ], "properties": { "active_profile": { "$ref": "#/$defs/non_empty_string" }, "profiles": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/profile" } } }, "$defs": { "non_empty_string": { "type": "string", "minLength": 1 }, "profile": { "type": "object", "additionalProperties": false, "required": [ "name", "database", "solana", "wallet", "execution" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "database": { "$ref": "#/$defs/database" }, "solana": { "$ref": "#/$defs/solana" }, "wallet": { "$ref": "#/$defs/wallet" }, "execution": { "$ref": "#/$defs/execution" } } }, "database": { "type": "object", "additionalProperties": false, "required": [ "enabled", "backend", "postgres", "sqlite" ], "properties": { "enabled": { "type": "boolean" }, "backend": { "type": "string", "enum": [ "postgres", "sqlite" ] }, "postgres": { "$ref": "#/$defs/postgres" }, "sqlite": { "$ref": "#/$defs/sqlite" } } }, "postgres": { "type": "object", "additionalProperties": false, "required": [ "url", "max_connections", "connect_timeout_ms", "auto_initialize_schema" ], "properties": { "url": { "$ref": "#/$defs/non_empty_string" }, "max_connections": { "type": "integer", "minimum": 1 }, "connect_timeout_ms": { "type": "integer", "minimum": 1 }, "auto_initialize_schema": { "type": "boolean" } } }, "sqlite": { "type": "object", "additionalProperties": false, "required": [ "path", "create_if_missing", "busy_timeout_ms", "max_connections", "auto_initialize_schema", "use_wal" ], "properties": { "path": { "$ref": "#/$defs/non_empty_string" }, "create_if_missing": { "type": "boolean" }, "busy_timeout_ms": { "type": "integer", "minimum": 1 }, "max_connections": { "type": "integer", "minimum": 1 }, "auto_initialize_schema": { "type": "boolean" }, "use_wal": { "type": "boolean" } } }, "solana": { "type": "object", "additionalProperties": false, "required": [ "http_endpoints", "ws_endpoints", "listeners" ], "properties": { "http_endpoints": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/http_endpoint" } }, "ws_endpoints": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/ws_endpoint" } }, "listeners": { "$ref": "#/$defs/listeners" } } }, "http_endpoint": { "type": "object", "additionalProperties": false, "required": [ "name", "enabled", "provider", "cluster", "url", "connect_timeout_ms", "request_timeout_ms", "max_idle_connections_per_host", "roles" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "provider": { "$ref": "#/$defs/non_empty_string" }, "cluster": { "$ref": "#/$defs/non_empty_string" }, "url": { "type": "string", "pattern": "^https?://" }, "connect_timeout_ms": { "type": "integer", "minimum": 1 }, "request_timeout_ms": { "type": "integer", "minimum": 1 }, "max_idle_connections_per_host": { "type": "integer", "minimum": 1 }, "roles": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/endpoint_role" } } } }, "ws_endpoint": { "type": "object", "additionalProperties": false, "required": [ "name", "enabled", "provider", "cluster", "url", "connect_timeout_ms", "request_timeout_ms", "unsubscribe_timeout_ms", "write_channel_capacity", "event_channel_capacity", "auto_reconnect", "roles" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "provider": { "$ref": "#/$defs/non_empty_string" }, "cluster": { "$ref": "#/$defs/non_empty_string" }, "url": { "type": "string", "pattern": "^wss?://" }, "connect_timeout_ms": { "type": "integer", "minimum": 1 }, "request_timeout_ms": { "type": "integer", "minimum": 1 }, "unsubscribe_timeout_ms": { "type": "integer", "minimum": 1 }, "write_channel_capacity": { "type": "integer", "minimum": 1 }, "event_channel_capacity": { "type": "integer", "minimum": 1 }, "auto_reconnect": { "type": "boolean" }, "roles": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/endpoint_role" } } } }, "endpoint_role": { "type": "object", "additionalProperties": false, "required": [ "role", "enabled", "request_kinds", "priority", "requests_per_second", "burst_capacity", "max_concurrent_requests", "max_subscriptions", "pause_after_rate_limit_ms" ], "properties": { "role": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "request_kinds": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/non_empty_string" } }, "priority": { "type": "integer" }, "requests_per_second": { "type": "integer", "minimum": 1 }, "burst_capacity": { "type": "integer", "minimum": 1 }, "max_concurrent_requests": { "type": "integer", "minimum": 1 }, "max_subscriptions": { "type": "integer" }, "pause_after_rate_limit_ms": { "type": "integer", "minimum": 1 } } }, "listeners": { "type": "object", "additionalProperties": false, "required": [ "enabled", "default_commitment", "log_listeners", "program_listeners", "account_listeners" ], "properties": { "enabled": { "type": "boolean" }, "default_commitment": { "$ref": "#/$defs/non_empty_string" }, "log_listeners": { "type": "array", "items": { "$ref": "#/$defs/log_listener" } }, "program_listeners": { "type": "array", "items": { "$ref": "#/$defs/program_listener" } }, "account_listeners": { "type": "array", "items": { "$ref": "#/$defs/account_listener" } } } }, "log_listener": { "type": "object", "additionalProperties": false, "required": [ "name", "enabled", "endpoint_role", "program_id", "purpose" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "endpoint_role": { "$ref": "#/$defs/non_empty_string" }, "program_id": { "$ref": "#/$defs/non_empty_string" }, "purpose": { "$ref": "#/$defs/non_empty_string" } } }, "program_listener": { "type": "object", "additionalProperties": false, "required": [ "name", "enabled", "endpoint_role", "program_id", "purpose" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "endpoint_role": { "$ref": "#/$defs/non_empty_string" }, "program_id": { "$ref": "#/$defs/non_empty_string" }, "purpose": { "$ref": "#/$defs/non_empty_string" } } }, "account_listener": { "type": "object", "additionalProperties": false, "required": [ "name", "enabled", "endpoint_role", "account_pubkey", "purpose" ], "properties": { "name": { "$ref": "#/$defs/non_empty_string" }, "enabled": { "type": "boolean" }, "endpoint_role": { "$ref": "#/$defs/non_empty_string" }, "account_pubkey": { "$ref": "#/$defs/non_empty_string" }, "purpose": { "$ref": "#/$defs/non_empty_string" } } }, "wallet": { "type": "object", "additionalProperties": false, "required": [ "wallet_dir", "cluster", "temporary_wallet_enabled", "temporary_wallet_alias", "temporary_wallet_persist" ], "properties": { "wallet_dir": { "$ref": "#/$defs/non_empty_string" }, "cluster": { "$ref": "#/$defs/non_empty_string" }, "wallet_alias": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$" }, "temporary_wallet_enabled": { "type": "boolean" }, "temporary_wallet_alias": { "type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$" }, "temporary_wallet_persist": { "type": "boolean" } } }, "execution": { "type": "object", "additionalProperties": false, "required": [ "localnet_send_enabled", "devnet_send_enabled", "testnet_send_enabled", "mainnet_send_enabled", "dry_run_default", "require_simulation", "require_operator_confirmation", "localnet_max_spend_lamports", "devnet_max_spend_lamports", "testnet_max_spend_lamports", "mainnet_max_spend_lamports", "max_fee_lamports", "max_compute_unit_price_micro_lamports", "recent_blockhash_max_age_slots", "send_max_retries", "confirmation_poll_interval_ms", "confirmation_max_attempts", "devnet_airdrop_max_lamports" ], "properties": { "dry_run_default": { "type": "boolean" }, "require_simulation": { "type": "boolean" }, "require_operator_confirmation": { "type": "boolean" }, "localnet_max_spend_lamports": { "type": "integer", "minimum": 0 }, "devnet_max_spend_lamports": { "type": "integer", "minimum": 0 }, "testnet_max_spend_lamports": { "type": "integer", "minimum": 0 }, "mainnet_max_spend_lamports": { "type": "integer", "minimum": 0 }, "max_fee_lamports": { "type": "integer", "minimum": 1 }, "max_compute_unit_price_micro_lamports": { "type": "integer", "minimum": 0 }, "recent_blockhash_max_age_slots": { "type": "integer", "minimum": 1 }, "send_max_retries": { "type": "integer", "minimum": 0, "maximum": 4294967295 }, "confirmation_poll_interval_ms": { "type": "integer", "minimum": 1, "maximum": 60000 }, "confirmation_max_attempts": { "type": "integer", "minimum": 1, "maximum": 10000 }, "devnet_airdrop_max_lamports": { "type": "integer", "minimum": 0 }, "mainnet_send_enabled": { "type": "boolean" }, "testnet_send_enabled": { "type": "boolean" }, "devnet_send_enabled": { "type": "boolean" }, "localnet_send_enabled": { "type": "boolean" } } } } }