{
  "$schema": "https://farmslot.io/schemas/recipe-v1.schema.json",
  "title": "Perps release market search",
  "description": "Searches the live Perps market list by product name through trusted keyboard input and proves the filtered result set without development-only bridges.",
  "paramsSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "query": {
        "type": "string",
        "default": "Bitcoin"
      },
      "expected_market": {
        "type": "string",
        "default": "BTC"
      },
      "maximum_results": {
        "type": "integer",
        "minimum": 1,
        "default": 3
      },
      "minimum_unfiltered_results": {
        "type": "integer",
        "minimum": 1,
        "default": 5
      }
    }
  },
  "workflow": {
    "entry": "open-perps",
    "nodes": {
      "open-perps": {
        "action": "ui.navigate",
        "page": "perps",
        "intent": "Reset transient market-list state on the Perps home surface",
        "next": "open-market-list"
      },
      "open-market-list": {
        "action": "ui.navigate",
        "page": "perps-market-list",
        "intent": "Show the complete live Perps market selection",
        "next": "assert-unfiltered"
      },
      "assert-unfiltered": {
        "action": "metamask.perps.read_visible_state",
        "surface": "market-list",
        "minimum_market_count": "{{params.minimum_unfiltered_results}}",
        "require_features": ["market-list"],
        "max_items": 100,
        "intent": "Prove the live market list is populated before filtering",
        "next": "search"
      },
      "search": {
        "action": "metamask.perps.search_markets",
        "query": "{{params.query}}",
        "intent": "Enter the market search through trusted keyboard input",
        "next": "assert-filtered"
      },
      "assert-filtered": {
        "action": "metamask.perps.read_visible_state",
        "surface": "market-list",
        "market": "{{params.expected_market}}",
        "minimum_market_count": 1,
        "maximum_market_count": "{{params.maximum_results}}",
        "require_features": ["market-list"],
        "max_items": 100,
        "intent": "Prove the search reduced the list and retained the requested market",
        "next": "capture"
      },
      "capture": {
        "action": "ui.screenshot",
        "path": "screenshots/perps-market-search.png",
        "label": "Perps release market search",
        "intent": "Preserve reviewer-visible proof of the filtered market list",
        "next": "done"
      },
      "done": {
        "action": "end",
        "status": "pass"
      }
    }
  }
}
