# FW Gate — Python SDK # pip install requests # © 2026 Flying Whale — zaghmout.btc | ERC-8004 #54 import requests class FWGate: def __init__(self, payment_token=None, base_url="https://fwgate.to", timeout=15): self.base_url = base_url.rstrip("/") self.timeout = timeout self.headers = {"Content-Type": "application/json"} if payment_token: self.headers["X-PAYMENT"] = payment_token def evaluate(self, pair_from, pair_to, amount="1000000", tier="basic"): """tier: 'basic' (0.1 STX) | 'enterprise' (1 STX)""" if tier == "enterprise": resp = requests.post( f"{self.base_url}/enterprise/evaluate", headers=self.headers, json={"pair_from": pair_from, "pair_to": pair_to, "amount": amount}, timeout=self.timeout ) else: resp = requests.get( f"{self.base_url}/gate/evaluate", headers=self.headers, params={"token_in": pair_from, "token_out": pair_to, "amount": amount}, timeout=self.timeout ) if resp.status_code == 402: raise Exception("Payment required — 0.1 STX (basic) or 1 STX (enterprise)") resp.raise_for_status() return resp.json() def guard(self, pair_from, pair_to, execute_fn, **kwargs): """Evaluate and call execute_fn only if viable. Raises on halt.""" allow_degraded = kwargs.pop("allow_degraded", False) result = self.evaluate(pair_from, pair_to, **kwargs) if not self.is_viable(result, allow_degraded): raise Exception(f"FW Gate halted: {result.get('verdict')} — {result.get('execution_feasibility', 0)*100:.0f}%") return execute_fn(result) def is_viable(self, result, allow_degraded=False): v = result.get("verdict") or result.get("gate_verdict", "") if v in ("viable", "CLEAR"): return True if allow_degraded and v in ("degraded", "CAUTION", "REDUCE"): return True return False def get_stats(self): return requests.get(f"{self.base_url}/scan/stats", timeout=self.timeout).json() def get_revenue(self): return requests.get(f"{self.base_url}/gate/revenue", timeout=self.timeout).json() def get_proof(self, scan_id): return requests.get(f"{self.base_url}/proof/{scan_id}?format=json", timeout=self.timeout).json() # ── Example usage ────────────────────────────────────────────────────────────── if __name__ == "__main__": gate = FWGate(payment_token="your_x402_token_here") # One-line guard pattern try: result = gate.guard( "STX", "ALEX", lambda r: print("EXECUTE — feasibility:", r["execution_feasibility"]) ) except Exception as e: print("HALT:", e) # Manual check r = gate.evaluate("STX", "ALEX", tier="enterprise") if not gate.is_viable(r): print("HALT:", r["verdict"]) else: print("cert_hash:", r.get("cert_hash")) print("audit_id:", r.get("audit_id"))