{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://synor.io/schemas/economics.json", "title": "Synor Economics SDK", "description": "Pricing, billing, staking, and reward management", "$defs": { "EconomicsConfig": { "type": "object", "allOf": [{ "$ref": "common.json#/$defs/SynorConfig" }] }, "ServiceType": { "type": "string", "enum": ["compute", "storage", "hosting", "database", "rpc", "bridge", "mining"] }, "UsageMetrics": { "type": "object", "properties": { "service": { "$ref": "#/$defs/ServiceType" }, "computeSeconds": { "type": "number" }, "storageBytes": { "type": "integer" }, "bandwidthBytes": { "type": "integer" }, "requests": { "type": "integer" }, "gpuSeconds": { "type": "number" } }, "required": ["service"] }, "Price": { "type": "object", "properties": { "amount": { "$ref": "common.json#/$defs/Amount" }, "currency": { "type": "string", "default": "SYNOR" }, "unit": { "type": "string" }, "breakdown": { "type": "array", "items": { "$ref": "#/$defs/PriceComponent" } } }, "required": ["amount", "currency"] }, "PriceComponent": { "type": "object", "properties": { "name": { "type": "string" }, "amount": { "$ref": "common.json#/$defs/Amount" }, "quantity": { "type": "number" }, "unitPrice": { "$ref": "common.json#/$defs/Amount" } }, "required": ["name", "amount"] }, "UsagePlan": { "type": "object", "properties": { "services": { "type": "array", "items": { "$ref": "#/$defs/UsageMetrics" } }, "period": { "$ref": "#/$defs/BillingPeriod" } }, "required": ["services"] }, "CostEstimate": { "type": "object", "properties": { "total": { "$ref": "#/$defs/Price" }, "services": { "type": "array", "items": { "type": "object", "properties": { "service": { "$ref": "#/$defs/ServiceType" }, "cost": { "$ref": "#/$defs/Price" } } } }, "discounts": { "type": "array", "items": { "$ref": "#/$defs/AppliedDiscount" } } }, "required": ["total"] }, "BillingPeriod": { "type": "string", "enum": ["hourly", "daily", "weekly", "monthly", "yearly"] }, "Usage": { "type": "object", "properties": { "period": { "$ref": "#/$defs/BillingPeriod" }, "startDate": { "$ref": "common.json#/$defs/Timestamp" }, "endDate": { "$ref": "common.json#/$defs/Timestamp" }, "services": { "type": "array", "items": { "type": "object", "properties": { "service": { "$ref": "#/$defs/ServiceType" }, "metrics": { "$ref": "#/$defs/UsageMetrics" }, "cost": { "$ref": "#/$defs/Price" } } } }, "total": { "$ref": "#/$defs/Price" } }, "required": ["period", "startDate", "endDate", "total"] }, "Invoice": { "type": "object", "properties": { "id": { "type": "string" }, "period": { "$ref": "#/$defs/BillingPeriod" }, "startDate": { "$ref": "common.json#/$defs/Timestamp" }, "endDate": { "$ref": "common.json#/$defs/Timestamp" }, "amount": { "$ref": "#/$defs/Price" }, "status": { "type": "string", "enum": ["pending", "paid", "overdue", "cancelled"] }, "paidAt": { "$ref": "common.json#/$defs/Timestamp" }, "txHash": { "$ref": "common.json#/$defs/TxHash" } }, "required": ["id", "period", "amount", "status"] }, "AccountBalance": { "type": "object", "properties": { "available": { "$ref": "common.json#/$defs/Amount" }, "pending": { "$ref": "common.json#/$defs/Amount" }, "staked": { "$ref": "common.json#/$defs/Amount" }, "rewards": { "$ref": "common.json#/$defs/Amount" } }, "required": ["available"] }, "StakeRequest": { "type": "object", "properties": { "amount": { "$ref": "common.json#/$defs/Amount" }, "duration": { "$ref": "common.json#/$defs/Duration" }, "validator": { "$ref": "common.json#/$defs/Address" } }, "required": ["amount"] }, "StakeReceipt": { "type": "object", "properties": { "stakeId": { "type": "string" }, "txHash": { "$ref": "common.json#/$defs/TxHash" }, "amount": { "$ref": "common.json#/$defs/Amount" }, "startDate": { "$ref": "common.json#/$defs/Timestamp" }, "endDate": { "$ref": "common.json#/$defs/Timestamp" }, "estimatedApy": { "type": "number" } }, "required": ["stakeId", "txHash", "amount"] }, "UnstakeRequest": { "type": "object", "properties": { "stakeId": { "type": "string" } }, "required": ["stakeId"] }, "UnstakeReceipt": { "type": "object", "properties": { "txHash": { "$ref": "common.json#/$defs/TxHash" }, "amount": { "$ref": "common.json#/$defs/Amount" }, "rewards": { "$ref": "common.json#/$defs/Amount" }, "availableAt": { "$ref": "common.json#/$defs/Timestamp" } }, "required": ["txHash", "amount"] }, "Rewards": { "type": "object", "properties": { "total": { "$ref": "common.json#/$defs/Amount" }, "claimed": { "$ref": "common.json#/$defs/Amount" }, "pending": { "$ref": "common.json#/$defs/Amount" }, "apy": { "type": "number" }, "breakdown": { "type": "array", "items": { "type": "object", "properties": { "stakeId": { "type": "string" }, "amount": { "$ref": "common.json#/$defs/Amount" }, "period": { "type": "string" } } } } }, "required": ["total", "claimed", "pending"] }, "Discount": { "type": "object", "properties": { "code": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": ["percentage", "fixed", "volume", "loyalty", "referral"] }, "value": { "$ref": "common.json#/$defs/Amount" }, "minSpend": { "$ref": "common.json#/$defs/Amount" }, "maxDiscount": { "$ref": "common.json#/$defs/Amount" }, "validUntil": { "$ref": "common.json#/$defs/Timestamp" }, "usesRemaining": { "type": "integer" } }, "required": ["code", "name", "type", "value"] }, "AppliedDiscount": { "type": "object", "properties": { "discount": { "$ref": "#/$defs/Discount" }, "savedAmount": { "$ref": "common.json#/$defs/Amount" } }, "required": ["discount", "savedAmount"] }, "ApplyDiscountRequest": { "type": "object", "properties": { "code": { "type": "string" } }, "required": ["code"] } } }