# Generated by bun run generate:sdks. Do not edit.
from json import loads
from urllib.parse import urlencode, quote
from urllib.request import Request, urlopen

class UaemcpError(RuntimeError):
    pass

class UaemcpClient:
    def __init__(self, base_url="https://uaemcp.zad.tools", timeout=20):
        self.base_url, self.timeout = base_url.rstrip("/"), timeout

    def _get(self, path, params=None):
        query = urlencode({k: v for k, v in (params or {}).items() if v is not None}).replace("%2C", ",")
        request = Request(self.base_url + path + (("?" + query) if query else ""), headers={"Accept": "application/json", "User-Agent": "uaemcp-python/1.74.0"})
        with urlopen(request, timeout=self.timeout) as response:
            payload = loads(response.read())
        if isinstance(payload, dict) and payload.get("ok") is False:
            raise UaemcpError(payload.get("error", {}).get("message", "UAEMCP request failed"))
        return payload

    def list_products(self, **params):
        return self._get(f"/api/v1/products", params)

    def list_mcp_tools(self, **params):
        return self._get(f"/api/v1/tools", params)

    def get_policy_evidence_watch(self, **params):
        return self._get(f"/api/v1/policy-watch", params)

    def check_policy_evidence_watch(self, **params):
        return self._get(f"/api/v1/policy-watch/check", params)

    def get_policy_evidence_watch_operations(self, **params):
        return self._get(f"/api/v1/operations/policy-watch", params)

    def build_evidence_dossier(self, **params):
        return self._get(f"/api/v1/evidence-dossier", params)

    def get_national_evidence_brief(self, **params):
        return self._get(f"/api/v1/national-brief", params)

    def get_connectivity_pulse(self, **params):
        return self._get(f"/api/v1/connectivity", params)

    def get_tourism_pulse(self, **params):
        return self._get(f"/api/v1/tourism-pulse", params)

    def search_place_names(self, **params):
        return self._get(f"/api/v1/places", params)

    def build_founder_pathway(self, **params):
        return self._get(f"/api/v1/founder-pathway", params)

    def get_golden_residency_pathways(self, **params):
        return self._get(f"/api/v1/golden-residency", params)

    def assess_golden_residency_readiness(self, **params):
        return self._get(f"/api/v1/golden-residency/assess", params)

    def get_business_setup_catalogue(self, **params):
        return self._get(f"/api/v1/business-setup", params)

    def route_business_setup(self, **params):
        return self._get(f"/api/v1/business-setup/route", params)

    def get_startup_support_catalogue(self, **params):
        return self._get(f"/api/v1/startup-support", params)

    def match_startup_support(self, **params):
        return self._get(f"/api/v1/startup-support/match", params)

    def get_education_ledger(self, **params):
        return self._get(f"/api/v1/education", params)

    def get_health_indicators(self, **params):
        return self._get(f"/api/v1/health-indicators", params)

    def get_health_facilities_atlas(self, **params):
        return self._get(f"/api/v1/health-facilities", params)

    def get_health_facilities_map(self, **params):
        return self._get(f"/api/v1/health-facilities-map", params)

    def get_aeronautical_publications(self, **params):
        return self._get(f"/api/v1/aeronautical-publications", params)

    def get_coverage(self, **params):
        return self._get(f"/api/v1/coverage", params)

    def get_industry_atlas(self, **params):
        return self._get(f"/api/v1/industry-atlas", params)

    def get_industry_change(self, **params):
        return self._get(f"/api/v1/industry-atlas/change", params)

    def get_trade_flow_radar(self, **params):
        return self._get(f"/api/v1/trade-flow", params)

    def get_ajman_business_evidence(self, **params):
        return self._get(f"/api/v1/ajman-business", params)

    def get_ajman_urban_evidence(self, **params):
        return self._get(f"/api/v1/ajman-urban", params)

    def get_ajman_parks_footfall(self, **params):
        return self._get(f"/api/v1/ajman-parks", params)

    def get_tax_service_activity2025(self, **params):
        return self._get(f"/api/v1/tax-services", params)

    def get_tax_service_archive(self, **params):
        return self._get(f"/api/v1/tax-services/archive", params)

    def list_sources(self, **params):
        return self._get(f"/api/v1/sources", params)

    def search(self, **params):
        return self._get(f"/api/v1/search", params)

    def get_records(self, source_id, **params):
        return self._get(f"/api/v1/sources/{quote(str(source_id), safe='')}/records", params)

    def get_dataset_schema(self, source_id, **params):
        return self._get(f"/api/v1/sources/{quote(str(source_id), safe='')}/schema", params)

    def list_recipes(self, **params):
        return self._get(f"/api/v1/intelligence/recipes", params)

    def list_indicators(self, **params):
        return self._get(f"/api/v1/intelligence/indicators", params)

    def get_indicator(self, indicator_id, **params):
        return self._get(f"/api/v1/intelligence/indicators/{quote(str(indicator_id), safe='')}", params)

    def get_observatory_report(self, **params):
        return self._get(f"/api/v1/observatory", params)

    def list_observatory_incidents(self, **params):
        return self._get(f"/api/v1/observatory/incidents", params)

    def get_observatory_source(self, source_id, **params):
        return self._get(f"/api/v1/observatory/sources/{quote(str(source_id), safe='')}", params)

    def get_tile_json(self, source_id, **params):
        return self._get(f"/api/v1/sources/{quote(str(source_id), safe='')}/tilejson", params)

    def spatial_join(self, **params):
        return self._get(f"/api/v1/spatial/join", params)

    def resolve_entities(self, **params):
        return self._get(f"/api/v1/entities/resolve", params)
