@oddmaki-protocol/sdk 1.11.1 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/subgraph/client.ts","../src/modules/base.ts","../src/contracts/abis/VenueFacet.json","../src/contracts/abis/MarketsFacet.json","../src/contracts/abis/LimitOrdersFacet.json","../src/contracts/abis/MatchingFacet.json","../src/contracts/abis/OrderBookFacet.json","../src/contracts/abis/MarketGroupFacet.json","../src/contracts/abis/MarketOrdersFacet.json","../src/contracts/abis/ResolutionFacet.json","../src/contracts/abis/VaultFacet.json","../src/contracts/abis/NegRiskFacet.json","../src/contracts/abis/ProtocolFacet.json","../src/contracts/abis/AccessControlFacet.json","../src/contracts/abis/TagsFacet.json","../src/contracts/abis/MetadataFacet.json","../src/contracts/abis/PriceMarketFacet.json","../src/contracts/abis/PythResolutionFacet.json","../src/contracts/abis/BatchOrdersFacet.json","../src/contracts/abis/WhitelistAccessControl.json","../src/contracts/abis/ConditionalTokens.json","../src/contracts/abis/ERC20.json","../src/contracts/abis/UmaOracle.json","../src/modules/venue.ts","../src/utils/conversions.ts","../src/utils/decimals.ts","../src/modules/market.ts","../src/modules/trade.ts","../src/subgraph/queries.ts","../src/modules/public.ts","../src/modules/token.ts","../src/modules/uma.ts","../src/modules/accessControl.ts","../src/modules/priceMarket.ts","../src/client.ts","../src/constants.ts","../src/utils/metadata.ts","../src/index.ts"],"names":["gql","erc20Abi","FeedProvider","stringToHex","base","gateway"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0KhC,IAAM,iCAAA,GAAoC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiK1C,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuJ7B,IAAM,8BAAA,GAAiC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkJvC,IAAM,uBAAA,GAA0B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDhC,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuC1B,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgC3B,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB3B,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8C7B,IAAM,2BAAA,GAA8B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CpC,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CzB,IAAM,eAAA,GAAkB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BxB,IAAM,sBAAA,GAAyB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACv6CtC,IAAM,mBAAA,GAAsC,CAAC,OAAA,EAAS,QAAA,EAAU,YAAY,SAAS,CAAA;AAgC9E,IAAM,YAAA,GAAN,cAA2B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA,EAI3C,MAAM,UAAU,MAAA,EAKb;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,UAAA,EAAY;AAAA,MACvC,KAAA,EAAO,QAAQ,KAAA,IAAS,GAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ,CAAA;AAAA,MACtB,OAAA,EAAS,QAAQ,OAAA,IAAW,WAAA;AAAA,MAC5B,cAAA,EAAgB,QAAQ,cAAA,IAAkB;AAAA,KAC3C,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,MAAA,EAMd;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa;AAAA,MACxC,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,MAAA,EAAQ,OAAO,MAAA,IAAU,EAAA;AAAA,MACzB,QAAA,EAAU,OAAO,QAAA,IAAY,mBAAA;AAAA,MAC7B,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,sBAAsB,MAAA,EAMzB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,wBAAA,EAA0B;AAAA,MACrD,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,MAAA,EAAQ,OAAO,MAAA,IAAU,EAAA;AAAA,MACzB,QAAA,EAAU,OAAO,QAAA,IAAY,mBAAA;AAAA,MAC7B,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,QAAA,EAAkB;AAChC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,UAAA,EAAY;AAAA,MAC5D,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,IAAK,IAAA;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,UAAA,EAAY;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,MAAA,EAKlB;AACD,IAAA,MAAM,SAAA,GAAiC;AAAA,MACrC,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACvB;AAIA,IAAA,IAAI,MAAA,CAAO,iBAAiB,MAAA,EAAW;AACrC,MAAA,SAAA,CAAU,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,QAAA,EAAS;AACtD,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,gBAAA,EAAkB,SAAS,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,oBAAA,EAAsB,SAAS,CAAA;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,MAAA,EAA6D;AAC3E,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,UAAA,EAAY;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,OAAA,EAAiB;AAC7B,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,QAAA,EAAU;AAAA,MAC1C,OAAA,EAAS,QAAQ,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,QAAA,EAAkB;AACnC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,eAAA,EAAiB;AAAA,MACjD,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,GAAmB;AACvB,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAkB,CAAA;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,iBAAA,EAAmB;AAAA,MAC9C,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,OAAA,EAAiB;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,gBAAA,EAAkB;AAAA,MAClE,OAAA,EAAS,QAAQ,QAAA;AAAS,KAC3B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,YAAA,CAAa,CAAC,CAAA,IAAK,IAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iBAAA,EAAmB;AAAA,MACnD,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAS;AAAA,MACjC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAAA,EAAkB;AACzC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,qBAAA,EAAuB;AAAA,MACvE,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,gBAAA,CAAiB,CAAC,CAAA,IAAK,IAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,qBAAqB,MAAA,EAKxB;AACD,IAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,SAAA;AAEjC,IAAA,IAAI,WAAW,QAAA,EAAU;AACvB,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iCAAA,EAAmC;AAAA,QACnE,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAS;AAAA,QACnC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,QACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,OACvB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,uBAAA,EAAyB;AAAA,MACzD,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAA,CACE,QAAA,EACA,MAAA,GAA+B,SAAA,EAC/B,KAAA,EACY;AACZ,IAAA,MAAM,cAAc,QAAA,CAAS,iBAAA,IAAqB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MACrE,GAAG,CAAA;AAAA,MACH,IAAA,EAAM,YAAA;AAAA,MACN,SAAA,EACE,MAAA,KAAW,QAAA,GACP,MAAA,CAAO,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA,GAC3B,MAAA,CAAO,CAAA,CAAE,SAAA,IAAa,GAAG;AAAA,KACjC,CAAE,CAAA;AAEF,IAAA,MAAM,UAAU,QAAA,CAAS,YAAA,IAAgB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAW;AAE3D,MAAA,MAAM,WAAA,GACJ,EAAE,OAAA,EAAS,MAAA;AAAA,QACT,CAAC,GAAA,EAAa,CAAA,KAAW,MAAM,MAAA,CAAO,CAAA,CAAE,eAAe,GAAG,CAAA;AAAA,QAC1D;AAAA,OACF,IAAK,EAAA;AAEP,MAAA,OAAO;AAAA,QACL,GAAG,CAAA;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,WAAA,EAAa,YAAY,QAAA,EAAS;AAAA,QAClC,WACE,MAAA,KAAW,QAAA,GAAW,cAAc,MAAA,CAAO,CAAA,CAAE,aAAa,GAAG;AAAA,OACjE;AAAA,IACF,CAAC,CAAA;AAID,IAAA,MAAM,UAAU,QAAA,CAAS,iBAAA,IAAqB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MACjE,GAAG,CAAA;AAAA,MACH,IAAA,EAAM,QAAA;AAAA,MACN,SAAA,EACE,MAAA,KAAW,QAAA,GACP,MAAA,CAAO,EAAE,aAAA,EAAe,WAAA,IAAe,GAAG,CAAA,GAC1C,MAAA,CAAO,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,aAAa,GAAG;AAAA,KAChD,CAAE,CAAA;AAGF,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,UAAA,EAAY,GAAG,MAAA,EAAQ,GAAG,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AAElE,MAAA,OAAO,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAA,GAAY,EAAA,GAAK,CAAA;AAAA,IAC1C,CAAC,CAAA;AAGD,IAAA,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,GAAI,MAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,qBAAqB,MAAA,EAGH;AACtB,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,uBAAA,EAAyB;AAAA,MACzE,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAS;AAAA,MACjC,WAAW,MAAA,CAAO;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,iBAAA,GAAoB,CAAC,CAAA,IAAK,IAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,IAAA,EAAkD;AACjE,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,IAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,IAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,CAAA,KAAM,gBAAgB,iBAAA,GAAoB,IAAA;AAAA,WAAA,IACrC,CAAA,CAAE,WAAW,SAAS,CAAA,cAAe,CAAA,CAAE,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA,IACxE;AACA,IAAA,OAAO,oBAAoB,SAAA,GAAY,IAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,2BAA2B,MAAA,EAA4B;AACrD,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,IAAA;AAE7B,IAAA,MAAM,MAAA,GAAS,uBAAuB,MAAM,CAAA;AAC5C,IAAA,IAAI,WAAW,EAAA,IAAM,CAAC,OAAO,eAAA,IAAmB,CAAC,OAAO,eAAA,EAAiB;AACvE,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OAAA,CAAQ,MAAA,GAAS,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,4BAA4B,KAAA,EAAY;AACtC,IAAA,MAAM,QAAA,GAAA,CAAY,KAAA,CAAM,OAAA,IAAW,IAChC,MAAA,CAAO,CAAC,CAAA,KAAW,CAAC,EAAE,eAAA,EAAiB,aAAa,CAAA,CACpD,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MAChB,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,IAAA,EAAM,CAAA,CAAE,eAAA,EAAiB,UAAA,IAAc,SAAA;AAAA,MACvC,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,WAAA,EAAa,IAAA,CAAK,0BAAA,CAA2B,CAAC,CAAA;AAAA,MAC9C,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,aAAa,CAAA,CAAE;AAAA,KACjB,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,GAAQ,CAAA,KAAW;AAExB,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA;AAC7C,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA;AAC7C,MAAA,OAAO,KAAA,GAAQ,KAAA;AAAA,IACjB,CAAC,CAAA;AAEH,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,OAAA;AAAA,MACN,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,gBAAgB,KAAA,CAAM,cAAA;AAAA,MACtB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,MACzB,kBAAkB,KAAA,CAAM,gBAAA;AAAA,MACxB,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,QAAA;AAAA,MACA,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,SAAS,KAAA,CAAM;AAAA,KACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,kBAAkB,MAAA,EAIrB;AACD,IAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,SAAA;AACjC,IAAA,MAAM,KAAA,GACJ,MAAA,KAAW,QAAA,GACP,8BAAA,GACA,oBAAA;AAEN,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,KAAA,EAAO;AAAA,MACvC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,KAAA,GAAQ,EAAA,EAAI;AAC7B,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,UAAA,EAAY;AAAA,MACvC,KAAA;AAAA,MACA,IAAA,EAAM,CAAA;AAAA,MACN,OAAA,EAAS,aAAA;AAAA,MACT,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAA4C;AAChE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iBAAA,EAAmB;AAAA,MACnD,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,MAAA,EAA4C;AACjE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAA,EAAoB;AAAA,MACpD,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,iBAAiB,OAAA,EAAiB;AACtC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAA,EAAoB;AAAA,MACpD,OAAA,EAAS,QAAQ,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAItB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,oBAAA,EAAsB;AAAA,MACtD,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,yBAAyB,MAAA,EAI5B;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,2BAAA,EAA6B;AAAA,MAC7D,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,gBAAA,EAAkB;AAAA,MAClD,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,EAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,MAAA,EAKlB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,eAAA,EAAiB;AAAA,MACjD,OAAA,EAAS,QAAQ,OAAA,IAAW,aAAA;AAAA,MAC5B,cAAA,EAAgB,QAAQ,cAAA,IAAkB,MAAA;AAAA,MAC1C,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAGvB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,sBAAA,EAAwB;AAAA,MACxD,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,KAAA,EAAO,OAAO,KAAA,IAAS;AAAA,KACxB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,GAAA,CACJ,KAAA,EACA,SAAA,EACY;AACZ,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAW,KAAA,EAAO,SAAS,CAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,kCAAkC,MAAA,EAIC;AACvC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,QAAA,CAAS,QAE9B,wCAAA,EAA0C;AAAA,MAC3C,MAAA,EAAQ,MAAA,CAAO,UAAA,CAAW,WAAA,EAAY;AAAA,MACtC,SAAA,EAAW,MAAA,CAAO,SAAA,CAAU,QAAA,EAAS;AAAA,MACrC,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,WAAA;AAAY,KACrC,CAAA;AACD,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,CAAa,CAAC,CAAA;AAC/B,IAAA,OAAO,GAAA,GAAM,EAAE,QAAA,EAAU,MAAA,CAAO,IAAI,MAAA,CAAO,QAAQ,GAAE,GAAI,IAAA;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,4BAA4B,MAAA,EAMhC;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,QAAA,CAAS,QAO9B,+BAAA,EAAiC;AAAA,MAClC,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAY;AAAA,MACpC,GAAA,EAAK,MAAA,CAAO,GAAA,CAAI,QAAA,EAAS;AAAA,MACzB,KAAA,EAAO,OAAO,KAAA,IAAS;AAAA,KACxB,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACnC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,CAAA;AAAA,MAClC,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,SAAA,EAAW,MAAA,CAAO,CAAA,CAAE,SAAS;AAAA,KAC/B,CAAE,CAAA;AAAA,EACJ;AACF;AAEA,IAAM,wCAAA,GAA2CA,GAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAuBjD,IAAM,+BAAA,GAAkCA,GAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACpqBjC,IAAM,WAAA,GAAN,cAA0B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA,EAI1C,MAAM,OAAA,CAAQ,KAAA,EAAgB,OAAA,EAAkB,MAAA,EAAgB;AAC9D,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,SAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,KAAA,EAAgB,KAAA,EAAgB,OAAA,EAAkB;AACnE,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAA,EAAO,OAAO;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CAAW,KAAA,EAAgB,KAAA,EAAgB;AAC/C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAK;AAAA,KACb,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,KAAA,EAAgB;AAChC,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,KAAA,EAAgB;AAC9B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,KAAA,EAAgB;AAC5B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AACF;AC3DO,IAAM,SAAA,GAAN,cAAwB,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxC,MAAM,oBAAoB,MAAA,EAIvB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AACnD,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,IAAA;AAI1C,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,aAAa,YAAA,CAAa,UAAA;AAGhC,IAAA,MAAM,EAAE,eAAe,QAAA,EAAS,GAAI,MAAM,IAAA,CAAK,gBAAA,CAAiB,OAAO,QAAQ,CAAA;AAC/E,IAAA,MAAM,UAAA,GAAa,aAAA;AAGnB,IAAA,MAAM,gBAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKC,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,KAClD,CAAA;AAGD,IAAA,IAAI,gBAAA,GAAmB,cAAc,WAAA,EAAa;AAChD,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,aAAA,CAAc;AAAA,QAC7C,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,CAAC,IAAA,CAAK,MAAA,CAAO,gBAAgB,UAAU,CAAA;AAAA,QAC7C,OAAA;AAAA,QACA,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,IAAA,CAAK,aAAa,yBAAA,CAA0B;AAAA,QAChD,IAAA,EAAM,WAAA;AAAA,QACN,aAAA,EAAe;AAAA,OAChB,CAAA;AAED,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AAExD,MAAA,MAAM,YAAA,GAAgB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACzD,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,OAClD,CAAA;AAED,MAAA,IAAI,eAAe,UAAA,EAAY;AAC7B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,6CAA6C,YAAA,CAAa,QAAA,EAAU,CAAA,YAAA,EAAe,UAAA,CAAW,UAAU,CAAA;AAAA,SAC1G;AAAA,MACF;AAAA,IACF,CAAA,MAAA,IAAW,mBAAmB,UAAA,EAAY;AACxC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,6CAAA,EAAgD,UAAA,CAAW,QAAA,EAAU,CAAA,WAAA,EAAc,gBAAA,CAAiB,QAAA,EAAU,CAAA,8BAAA,EAC5G,IAAA,CAAK,MAAA,CAAO,cACd,CAAA,uBAAA;AAAA,OACF;AAAA,IACF;AAGA,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAED,IAAA,IAAI,UAAU,UAAA,EAAY;AACxB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,8CAA8C,UAAA,CAAW,QAAA,EAAU,CAAA,QAAA,EAAW,OAAA,CAAQ,UAAU,CAAA;AAAA,OAClG;AAAA,IACF;AAGA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,UAAA,EAAY,MAAA,CAAO,OAAO,CAAA;AAAA,MACjC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,QAAA,EAKpB;AAED,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,UAAA,CAAW,YAAY,CAAA;AACnD,IAAA,MAAM,WAAW,UAAA,CAAW,QAAA;AAE5B,IAAA,MAAM,SAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAED,IAAA,MAAM,WAAA,GAAe,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACxD,OAAA,EAAS,SAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,YAAA,GAAe,WAAA,GAAc,YAAA,GAAe,WAAA;AAElE,IAAA,OAAO,EAAE,YAAA,EAAc,WAAA,EAAa,aAAA,EAAe,QAAA,EAAS;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,WAAA,EAA4B;AAChD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,MAClB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAA,GAAwC;AAC5C,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,iBAAiB,MAAA,EAGpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AACnD,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,IAAA;AAE1C,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,mBAAA,EAAoB;AAIrD,IAAA,MAAM,SAAA,GAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC1D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,WAAW;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,WAAW,SAAA,CAAU,QAAA;AAC3B,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AAExC,IAAA,IAAI,SAAA,CAAU,aAAa,4CAAA,EAA8C;AACvE,MAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,IACvD;AAEA,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD;AAEA,IAAA,MAAM,cAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAChD,IAAA,IAAI,WAAA,IAAe,MAAA,CAAO,SAAA,CAAU,cAAc,CAAA,EAAG;AACnD,MAAA,MAAM,IAAI,MAAM,wEAAmE,CAAA;AAAA,IACrF;AAGA,IAAA,MAAM,gBAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAA,EAAgB,aAAa;AAAA,KACrC,CAAA;AAED,IAAA,IAAI,gBAAA,GAAmB,cAAc,WAAA,EAAa;AAChD,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,aAAA,CAAc;AAAA,QAC7C,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,CAAC,aAAA,EAAe,UAAU,CAAA;AAAA,QAChC,OAAA;AAAA,QACA,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,IAAA,CAAK,aAAa,yBAAA,CAA0B;AAAA,QAChD,IAAA,EAAM,WAAA;AAAA,QACN,aAAA,EAAe;AAAA,OAChB,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,mBAAmB,UAAA,EAAY;AACxC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,8DAA8D,UAAA,CAAW,QAAA,EAAU,CAAA,WAAA,EAAc,gBAAA,CAAiB,UAAU,CAAA,CAAA;AAAA,OAC9H;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAED,IAAA,IAAI,UAAU,UAAA,EAAY;AACxB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,iDAAiD,UAAA,CAAW,QAAA,EAAU,CAAA,QAAA,EAAW,OAAA,CAAQ,UAAU,CAAA;AAAA,OACrG;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,WAAA,EAAa,cAAc,CAAA;AAAA,MACzC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,MAAA,EAA+C;AACpE,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,OAAO,CAAA;AAAA,MACtC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,QAAA,EAAkB;AAE1C,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,cAAc,UAAA,CAAW,WAAA;AAE/B,IAAA,MAAM,iBAAA,GAAqB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC9D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,IAAI,sBAAsB,EAAA,EAAI;AAC5B,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,KAAA;AAAA,QACV,cAAA,EAAgB,IAAA;AAAA,QAChB,SAAS;AAAC,OACZ;AAAA,IACF;AAEA,IAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,UAAA,CAAW,gBAAA,IAAoB,CAAC,CAAA;AAChE,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,gBAAA,EAAkB,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACnD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,MAAA,CAAO,CAAC,CAAC;AAAA,OAC9B,CAAA;AACD,MAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI,cAAA,GAAgC,IAAA;AACpC,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,MAAA,IAAI,QAAQ,CAAC,CAAA,GAAI,MAAM,OAAA,CAAQ,CAAC,MAAM,EAAA,EAAI;AACxC,QAAA,cAAA,GAAiB,KAAA;AAAA,MACnB,CAAA,MAAA,IAAW,QAAQ,CAAC,CAAA,GAAI,MAAM,OAAA,CAAQ,CAAC,MAAM,EAAA,EAAI;AAC/C,QAAA,cAAA,GAAiB,IAAA;AAAA,MACnB,WAAW,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpC,QAAA,cAAA,GAAiB,SAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,IAAA;AAAA,MACV,cAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,QAAA,EAAkB;AACrC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAG5C,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAGD,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,cAAc,UAAA,CAAW,WAAA;AAC/B,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AAEpC,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAEvB,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,eAAA;AAAA,QACA,oEAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAAA,EAAoC;AAE3D,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO,WAAA,CAAY,eAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAA,EAAkB;AAEtC,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,YAAY,UAAA,CAAW,UAAA;AAAA,MACvB,aAAa,UAAA,CAAW,WAAA;AAAA,MACxB,gBAAA,EAAkB,MAAA,CAAO,UAAA,CAAW,gBAAgB,CAAA;AAAA,MACpD,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,MAAA,EAAQ,MAAA,CAAO,UAAA,CAAW,MAAM,CAAA;AAAA,MAChC,YAAA,EAAc,MAAA,CAAO,UAAA,CAAW,YAAY,CAAA;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,QAAQ,CAAA;AAAA,MACpC,aAAa,UAAA,CAAW,WAAA;AAAA,MACxB,mBAAmB,UAAA,CAAW,iBAAA;AAAA,MAC9B,eAAe,UAAA,CAAW;AAAA,KAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,WAAA,EAA4B;AAEjD,IAAA,MAAM,IAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACrD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,WAAA,EAA4B;AAEpD,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACzD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAID,IAAA,MAAM,SAAA,GAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC1D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK;AAAA,QACH;AAAA,UACE,IAAA,EAAM,cAAA;AAAA,UACN,IAAA,EAAM,UAAA;AAAA,UACN,eAAA,EAAiB,MAAA;AAAA,UACjB,QAAQ,CAAC,EAAE,MAAM,aAAA,EAAe,IAAA,EAAM,WAAW,CAAA;AAAA,UACjD,OAAA,EAAS;AAAA,YACP;AAAA,cACE,IAAA,EAAM,WAAA;AAAA,cACN,IAAA,EAAM,OAAA;AAAA,cACN,UAAA,EAAY;AAAA,gBACV;AAAA,kBACE,IAAA,EAAM,2BAAA;AAAA,kBACN,IAAA,EAAM,OAAA;AAAA,kBACN,UAAA,EAAY;AAAA,oBACV,EAAE,IAAA,EAAM,+BAAA,EAAiC,IAAA,EAAM,MAAA,EAAO;AAAA,oBACtD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,MAAA,EAAO;AAAA,oBACtC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,MAAA,EAAO;AAAA,oBAC1C,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,SAAA,EAAU;AAAA,oBAC3C,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,SAAA;AAAU;AAC/C,iBACF;AAAA,gBACA,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAS;AAAA,gBACxC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,MAAA,EAAO;AAAA,gBAChC,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,QAAA,EAAS;AAAA,gBACzC,EAAE,IAAA,EAAM,sBAAA,EAAwB,IAAA,EAAM,MAAA,EAAO;AAAA,gBAC7C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,gBACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,gBAChC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,SAAA,EAAU;AAAA,gBAC7C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA;AAAU;AACtC;AACF;AACF;AACF,OACF;AAAA,MACA,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,SAAA,CAAU,cAAc,CAAA;AACtD,IAAA,MAAM,cAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAEhD,IAAA,OAAO;AAAA,MACL,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,aAAA,EAAe,MAAA,CAAO,SAAA,CAAU,aAAa,CAAA;AAAA,MAC7C,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,cAAA;AAAA,MACA,WAAW,WAAA,IAAe,cAAA;AAAA,MAC1B,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,UAAA,EAAY,UAAU,QAAA,KAAa,4CAAA;AAAA,MACnC,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,IAAA,EAAM,MAAA,CAAO,SAAA,CAAU,IAAI;AAAA,KAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAA,EAAkB;AAGtC,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,aAAa,YAAA,CAAa,UAAA;AAChC,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA;AAG/C,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AACxD,IAAA,MAAM,cAAc,YAAA,CAAa,WAAA;AAGjC,IAAA,MAAM,YAAA,GACJ,aAAa,iBAAA,KACb,oEAAA;AAEF,IAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,aAAA,GAAgB,MAAM,IAAA,CAAK,gBAAA;AAAA,QACzB,YAAA,CAAa;AAAA,OACf;AACA,MAAA,SAAA,GAAY,aAAA,CAAc,OAAA;AAAA,IAC5B;AAGA,IAAA,MAAM,iBAAA,GAAqB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC9D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,MAAM,kBAAkB,iBAAA,GAAoB,EAAA;AAE5C,IAAA,IAAI,cAAA,GAAgC,IAAA;AACpC,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACpD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,EAAE;AAAA,OACvB,CAAA;AAED,MAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACpD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,EAAE;AAAA,OACvB,CAAA;AAED,MAAA,IAAI,OAAA,GAAU,EAAA,IAAM,OAAA,KAAY,EAAA,EAAI;AAClC,QAAA,cAAA,GAAiB,KAAA;AAAA,MACnB,CAAA,MAAA,IAAW,OAAA,GAAU,EAAA,IAAM,OAAA,KAAY,EAAA,EAAI;AACzC,QAAA,cAAA,GAAiB,IAAA;AAAA,MACnB,CAAA,MAAA,IAAW,YAAY,OAAA,EAAS;AAC9B,QAAA,cAAA,GAAiB,SAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,UAAA;AAAA,MACA,cACE,YAAA,KAAiB,CAAA,GACb,OAAA,GACA,YAAA,KAAiB,IACjB,QAAA,GACA,UAAA;AAAA,MACN,SAAA,EAAW;AAAA,QACT,YAAA;AAAA,QACA,WAAA,EAAa,YAAA,GAAe,YAAA,CAAa,iBAAA,GAAoB,IAAA;AAAA,QAC7D,OAAA,EAAS,eAAe,OAAA,IAAW,IAAA;AAAA,QACnC,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAA,EAAU;AAAA,QACR,cAAc,YAAA,CAAa,YAAA;AAAA,QAC3B,UAAU,YAAA,CAAa,QAAA;AAAA,QACvB,QAAQ,YAAA,CAAa,MAAA;AAAA,QACrB,UAAU,YAAA,CAAa;AAAA,OACzB;AAAA,MACA,UAAA,EAAY;AAAA,QACV,aAAA,EAAe,eAAA;AAAA,QACf;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,YAAA,IAAgB,YAAA,KAAiB,CAAA;AAAA,MAC7C,SAAA,EAAW,gBAAgB,CAAC,SAAA;AAAA,MAC5B,mBAAA,EAAqB,YAAA,IAAgB,SAAA,IAAa,CAAC,eAAA;AAAA,MACnD,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,QAAA,EAA0C;AAE5D,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO,YAAA,CAAa,UAAA;AAAA,EACtB;AACF;;;AC1pBO,IAAM,mBAAA,GAAN,cAAkC,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOlD,MAAM,eAAA,GAAkB;AACtB,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,MAAM,EAAC;AAAA,MACP;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,MAAA,EAIlB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,aAAa,MAAA,CAAO,SAAA,EAAW,OAAO,OAAO,CAAA;AAAA,MAC3D;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAA,EAGpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,oBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAA,EAAO,OAAO,UAAU,CAAA;AAAA,MACtC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EAGtB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,+BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,UAAU,CAAA;AAAA,MACzC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,MAAA,EAA8B;AACxD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kCAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAA,EAGF;AACnB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,IAAA,EAAM,OAAO,QAAQ;AAAA,KACpC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAEE;AACzB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,+BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,MAAA,EAGlB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAGvB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,MAAA,EAGC;AACnB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,IAAI;AAAA,KACnB,CAAA;AAAA,EACH;AACF;ACjMA,IAAM,gBAAA,GAAmB,6BAAA;AAEzB,IAAM,uBAAA,GAA0B;AAAA,EAC9B;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,IAAA,EAAM,UAAA;AAAA,IACN,eAAA,EAAiB,MAAA;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EAAc,IAAA,EAAM,WAAW,CAAA;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,WAAW;AAAA;AAEpD,CAAA;AAEO,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AACL,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,eAAY,CAAA,CAAA,GAAZ,WAAA;AAFU,EAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA;AAiEZ,IAAM,6BAAA,GAAgC,GAAA;AACtC,IAAM,0BAAA,GAA6B,CAAA;AAE5B,IAAM,iBAAA,GAAN,cAAgC,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiChD,MAAM,WAAW,MAAA,EAad;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,CAAC,MAAM,MAAM,CAAA;AAEjD,IAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAc,GACjC,MAAM,IAAA,CAAK,sBAAA,CAAuB,MAAA,EAAQ,MAAM,IAAA,CAAK,gBAAA,EAAkB,CAAA;AAEzE,IAAA,IAAI,CAAC,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,OAAA;AAAA,QACP,MAAA,CAAO,UAAA;AAAA,QACP,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,CAAC,CAAA;AAAA,QAC9B,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,CAAC,CAAA;AAAA,QAC3B,MAAA,CAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,aAAA;AAAA,QACA,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,CAAC,CAAA;AAAA,QAC3B,WAAA;AAAA,QACA,MAAA,CAAO,gBAAA,IAAoB,MAAA,CAAO,CAAC;AAAA,OACrC;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,YAAY,QAAA,EAAkB;AAClC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAElC,IAAA,IAAI,GAAG,QAAA,EAAU;AACf,MAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,IACjD;AAEA,IAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,IAAA,IAAI,GAAA,GAAM,GAAG,SAAA,EAAW;AACtB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,iCAAA,EAAoC,IAAI,QAAA,EAAU,gBAAgB,EAAA,CAAG,SAAA,CAAU,UAAU,CAAA;AAAA,OAC3F;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,WAAA,KAAgB,MAAA,CAAO,CAAC,CAAA;AAC9C,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,EAAA,CAAG,gBAAgB,CAAA;AAEhD,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,uBAAA;AAAA,MAC1B,EAAA,CAAG,MAAA;AAAA,MACH,MAAA,CAAO,GAAG,SAAS,CAAA;AAAA,MACnB;AAAA,KACF;AAEA,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,uBAAA;AAAA,QACzB,EAAA,CAAG,MAAA;AAAA,QACH,MAAA,CAAO,GAAG,QAAQ,CAAA;AAAA,QAClB;AAAA,OACF;AACA,MAAA,cAAA,GAAiB,CAAC,GAAG,OAAA,EAAS,GAAG,QAAQ,CAAA;AAAA,IAC3C,CAAA,MAAO;AACL,MAAA,cAAA,GAAiB,QAAA;AAAA,IACnB;AAEA,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,eAAA,EAAgB;AAC/C,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,WAAA;AAAA,MACT,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAID,IAAA,MAAM,YAAY,OAAA,GAAU,MAAA,CAAO,CAAC,CAAA,GAAI,OAAA,GAAU,OAAO,GAAa,CAAA;AAEtE,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,wBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAA,EAAU,cAAc,CAAA;AAAA,MAC/B,OAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,QAAA,EAAoC;AACtD,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,QAAA,EAAoC;AACnD,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,QAAA,EAA4C;AAEpD,IAAA,MAAM,MAAA,GAAc,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACvD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,MAChB,YAAA,EAAc,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC9B,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC1B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC3B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC3B,UAAA,EAAY,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC5B,gBAAA,EAAkB,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAClC,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,MAClB,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC7B,aAAA,EAAe,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC;AAAA,KACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,YAAY,QAAA,EAAkB;AAClC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,wBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,MACf;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,YAAA,EAAuB;AAC3C,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAY,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,sBAAA,CACZ,MAAA,EAMA,OAAA,EACA;AAEA,IAAA,MAAM,KAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,OAAO;AAAA,KACtB,CAAA;AAED,IAAA,MAAM,cAAc,KAAA,CAAM,iBAAA;AAC1B,IAAA,IAAI,WAAA,GAAc,MAAA,CAAO,CAAC,CAAA,EAAG;AAC3B,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACrD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAKD,QAAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,OAAA,EAAS,IAAA,CAAK,OAAO,cAAc;AAAA,OAC3C,CAAA;AAED,MAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,6DAA6D,SAAA,CAAU,QAAA,EAAU,CAAA,YAAA,EAAe,WAAA,CAAY,UAAU,CAAA,CAAA;AAAA,SACxH;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,QAAQ,CAAA;AAE9D,IAAA,MAAM,WAAA,GAAA,CAAe,MAAA,CAAO,IAAA,IAAQ,EAAC,EAAG,GAAA;AAAA,MAAI,CAAC,CAAA,KAC3CE,WAAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAEA,IAAA,OAAO,EAAE,aAAa,aAAA,EAAc;AAAA,EACtC;AAAA,EAEQ,oBAAoB,QAAA,EAAyC;AACnE,IAAA,IAAI,IAAA,GAAO,CAAA,QAAA,EAAW,QAAA,CAAS,KAAK,CAAA,CAAA;AACpC,IAAA,IAAA,IAAQ,CAAA,aAAA,EAAgB,SAAS,WAAW,CAAA,CAAA;AAC5C,IAAA,OAAOA,YAAY,IAAI,CAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,sBAAsB,MAAA,EAA4C;AACtE,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,gBAAgB,CAAA,+BAAA,EAAkC,MAAM,CAAA,CAAA;AACvE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAEhC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,uBAAA,EAA0B,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,SAAS,UAAU,CAAA;AAAA,OAClE;AAAA,IACF;AAGA,IAAA,MAAM,IAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,IAAA,MAAM,UAAA,GAAmC,KAAK,MAAA,EAAQ,IAAA;AAEtD,IAAA,IAAI,CAAC,UAAA,IAAc,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAC1C,MAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,IAClE;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAC9B,IAAA,MAAM,cAAA,GAAiB,QAAQ,KAAA,EAAO,YAAA;AACtC,IAAA,IAAI,OAAO,mBAAmB,QAAA,EAAU;AACtC,MAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,IAC1E;AAEA,IAAA,OAAO;AAAA,MACL,YAAY,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAmB,CAAA;AAAA,MAC3D,WAAA,EAAa,OAAO,cAAc,CAAA;AAAA,MAClC,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC;AAAA,KACjD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,oBAAA,CACJ,MAAA,EACA,OAAA,GAII,EAAC,EACgB;AACrB,IAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,6BAAA;AAC/C,IAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,0BAAA;AAE3C,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B;AAC1C,MAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,MAAA,OAAO,GAAA,GAAM,CAAA,CAAE,WAAA,IAAe,MAAA,CAAO,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC7C,MAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,IACjB;AAEA,IAAA,IAAI,MAAA;AACJ,IAAA,KAAA,IAAS,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,WAAA,EAAa,OAAA,EAAA,EAAW;AACtD,MAAA,MAAA,GAAS,MAAM,IAAA,CAAK,qBAAA,CAAsB,MAAM,CAAA;AAChD,MAAA,IAAI,OAAA,CAAQ,MAAM,CAAA,EAAG,OAAO,MAAA;AAAA,IAC9B;AAEA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAM,wBACJ,QAAA,EACoC;AACpC,IAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAElC,IAAA,IAAI,EAAA,CAAG,UAAU,OAAO,IAAA;AACxB,IAAA,IAAI,EAAA,CAAG,WAAA,KAAgB,MAAA,CAAO,CAAC,GAAG,OAAO,IAAA;AAEzC,IAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,IAAA,IAAI,GAAA,GAAM,EAAA,CAAG,QAAA,EAAU,OAAO,IAAA;AAE9B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,yBAAA;AAAA,MACxB,EAAA,CAAG,MAAA;AAAA,MACH,MAAA,CAAO,GAAG,QAAQ,CAAA;AAAA,MAClB,MAAA,CAAO,GAAG,gBAAgB;AAAA,KAC5B;AACA,IAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,MAChC,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAA,MAC7C,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAAA,MAC9B,SAAA,EAAW,GAAA,IAAO,EAAA,CAAG,QAAA,GAAW,EAAA,CAAG,gBAAA;AAAA,MACnC,UAAU,EAAA,CAAG;AAAA,KACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAc,uBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EAC0B;AAC1B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,sBAAA;AAAA,MACxB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,oCAAoC,WAAW,CAAA,EAAA,EAAK,WAAA,GAAc,aAAa,cAAc,MAAM,CAAA;AAAA,OACrG;AAAA,IACF;AACA,IAAA,OAAO,MAAA,CAAO,UAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAc,yBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EACkF;AAClF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,sBAAA;AAAA,MACxB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,QAAQ,MAAA,IAAU,IAAA;AAAA,EAC3B;AAAA,EAEA,MAAc,sBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EAIQ;AAUR,IAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,aAAa,CAAC,CAAA;AACpD,IAAA,MAAM,OAAA,GAAU,MAAA,KAAW,CAAA,GACvB,CAAC,CAAC,IACF,KAAA,CAAM,IAAA,iBAAK,IAAI,GAAA,CAAI,CAAC,CAAA,EAAG,KAAK,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAEzE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AAIvC,MAAA,IAAI,IAAI,CAAA,EAAG;AACT,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,MAAM,UAAA,CAAW,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MAC7C;AAEA,MAAA,MAAM,CAAA,GAAI,WAAA,GAAc,OAAA,CAAQ,CAAC,CAAA;AACjC,MAAA,MAAM,MAAM,CAAA,EAAG,gBAAgB,CAAA,kBAAA,EAAqB,CAAC,UAAU,MAAM,CAAA,CAAA;AAErE,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,sBAAA,CAAuB,GAAG,CAAA;AACtD,MAAA,IAAI,aAAa,IAAA,EAAM;AAGvB,MAAA,MAAM,IAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,MAAA,MAAM,aAAA,GAAsC,KAAK,MAAA,EAAQ,IAAA;AACzD,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAE9B,MAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,CAAc,MAAA,KAAW,CAAA,EAAG;AAElD,MAAA,OAAO;AAAA,QACL,YAAY,aAAA,CAAc,GAAA;AAAA,UACxB,CAAC,CAAA,KAAM,CAAA,EAAA,EAAK,CAAC,CAAA;AAAA,SACf;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAc,sBAAA,CACZ,GAAA,EACA,OAAA,GAA6D,EAAC,EACpC;AAC1B,IAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,CAAA;AAC3C,IAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,GAAA;AAEjD,IAAA,KAAA,IAAS,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,WAAA,EAAa,OAAA,EAAA,EAAW;AACtD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAChC,MAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,QAAA,IAAI,OAAA,KAAY,cAAc,CAAA,EAAG;AAC/B,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,+DAA+D,WAAW,CAAA,UAAA;AAAA,WAC5E;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,GAAG,OAAO,CAAA;AAClD,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,MAAM,UAAA,CAAW,CAAA,EAAG,KAAK,CAAC,CAAA;AAC7C,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,EAAK,OAAO,IAAA;AACpC,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,uBAAA,EAA0B,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,SAAS,UAAU,CAAA;AAAA,SAClE;AAAA,MACF;AACA,MAAA,OAAO,QAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;AC1pBO,IAAM,gBAAN,MAAoB;AAAA,EAWzB,YAAY,MAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,GAAA,GAAM,IAAI,SAAA,CAAU,MAAM,CAAA;AAC/B,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,mBAAA,CAAoB,MAAM,CAAA;AACnD,IAAA,IAAA,CAAK,WAAA,GAAc,IAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,EACjD;AACF;AAEO,SAAS,oBAAoB,MAAA,EAOlB;AAChB,EAAA,IAAI,QAAQ,MAAA,CAAO,KAAA;AACnB,EAAA,IAAI,YAAY,MAAA,CAAO,SAAA;AACvB,EAAA,IAAI,UAAU,MAAA,CAAO,OAAA;AAErB,EAAA,IAAI,eAAe,MAAA,CAAO,YAAA;AAG1B,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,KAAA,GAAQ,SAAS,YAAA,CAAa,KAAA;AAG9B,IAAA,SAAA,GAAY,SAAA,IAAa,MAAA,CAAO,YAAA,CAAa,SAAS,CAAA;AACtD,IAAA,OAAA,GAAU,WAAW,YAAA,CAAa,OAAA;AAAA,EACpC;AAGA,EAAA,KAAA,GAAQ,KAAA,IAAS,aAAA;AACjB,EAAA,SAAA,GAAY,aAAa,IAAA,EAAK;AAE9B,EAAA,MAAM,SAAA,GACJ,kBAAA,CAAmB,KAAA,CAAM,EAAqC,CAAA;AAEhE,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAA,CAAM,EAAE,CAAA,CAAE,CAAA;AAAA,EACrD;AAEA,EAAA,MAAM,eAAe,kBAAA,CAAmB;AAAA,IACtC,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC5B,IAAA,YAAA,GAAe,kBAAA,CAAmB;AAAA,MAChC,OAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,MAAA,GAA8B;AAAA,IAClC,KAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAgB,SAAA,CAAU,OAAA;AAAA,IAC1B,0BAA0B,SAAA,CAAU,iBAAA;AAAA,IACpC,gBAAA,EAAkB,MAAA,CAAO,gBAAA,IAAoB,SAAA,CAAU,QAAA;AAAA,IACvD,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,IAAI,cAAc,MAAM,CAAA;AACjC;;;ACtFO,IAAM,aAAA,GAAgB;AAAA;AAAA,EAE3B,gBAAA,EAAkB,GAAA;AAAA;AAAA,EAElB,gBAAA,EAAkB;AACpB;AAMO,IAAM,YAAA,GAAe;AAAA;AAAA,EAE1B,WAAA,EAAa,QAAA;AAAA;AAAA,EAEb,aAAA,EAAe,UAAA;AAAA;AAAA,EAEf,QAAA,EAAU;AACZ;;;AC5BA,IAAM,oBAAA,GAAuB,oCAAA;AAOtB,SAAS,cAAA,CACd,KACA,OAAA,EACQ;AACR,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,MAAM,KAAK,OAAA,IAAW,oBAAA;AACtB,EAAA,IAAI,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AAC7B,IAAA,MAAMC,QAAO,EAAA,CAAG,QAAA,CAAS,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,EAAE,CAAA,CAAA,CAAA;AAC1C,IAAA,MAAMC,WAAUD,KAAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,GAAIA,KAAAA,GAAO,GAAGA,KAAI,CAAA,KAAA,CAAA;AACxD,IAAA,OAAO,GAAGC,QAAO,CAAA,EAAG,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,GAAA;AACT;AA4BO,SAAS,cACd,IAAA,EACU;AACV,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,MAAM,OAAO,IAAA;AAC1D,IAAA,IAAI,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,EAAU,OAAO,IAAA;AAC/C,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;ACpCO,IAAM,OAAA,GAAU","file":"index.mjs","sourcesContent":["import type { Address } from 'viem';\nimport { baseSepolia, base } from 'viem/chains';\n\nexport const CONTRACT_ADDRESSES = {\n [baseSepolia.id]: {\n diamond: '0x31a4126aec35b36d46dd371eb0f0d5b71e1c2292' as Address,\n conditionalTokens: '0x7364747372Ac4a175B5326f5B2C9CB1C271d32e8' as Address,\n usdc: '0x036cbd53842c5426634e7929541ec2318f3dcf7e' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base-sepolia/version/latest',\n },\n [base.id]: {\n diamond: '0x025d086a62d93e24f3cb3f161612ca8e9530127d' as Address,\n conditionalTokens: '0x3e2ae408ca03f27849edff32d107c7b8ea5c87b4' as Address,\n usdc: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base/version/latest',\n },\n} as const;\n\nexport const SUBGRAPH_IDS = {\n [base.id]: 'CxoYVjELrNCMLopAmVshnfVAie7yH6QZyCSKD3r41XSQ',\n [baseSepolia.id]: 'DCnd3ozSyvYxRg7kmZYiDWGBiJCe6QHwu8M93jMN1Q3b',\n} as const;\n\nexport function buildSubgraphGatewayUrl(\n chainId: number,\n apiKey: string,\n): string | undefined {\n const id = SUBGRAPH_IDS[chainId as keyof typeof SUBGRAPH_IDS];\n return id\n ? `https://gateway.thegraph.com/api/${apiKey}/subgraphs/id/${id}`\n : undefined;\n}\n\nexport const DEFAULT_CHAIN = base;\n","import { GraphQLClient, type RequestDocument } from 'graphql-request';\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport class SubgraphClient {\n private client: GraphQLClient;\n\n constructor(endpoint: string) {\n this.client = new GraphQLClient(endpoint);\n }\n\n async request<T>(\n query: RequestDocument | TypedDocumentNode<T, Record<string, unknown>>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.client.request<T>(query as RequestDocument, variables);\n }\n}\n","import type { Account, Address } from 'viem';\nimport type { OddMakiClientConfig } from '../types';\nimport { SubgraphClient } from '../subgraph/client';\n\nexport abstract class BaseModule {\n protected config: OddMakiClientConfig;\n protected subgraph: SubgraphClient;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.subgraph = new SubgraphClient(config.subgraphEndpoint);\n }\n\n protected get publicClient() {\n return this.config.publicClient;\n }\n\n protected get walletClient() {\n if (!this.config.walletClient) {\n throw new Error(\n 'WalletClient not initialized. Write operations require a wallet.'\n );\n }\n return this.config.walletClient;\n }\n\n // Returns the hoisted LocalAccount when the wallet was created with a private\n // key, so viem signs locally (eth_sendRawTransaction). Falls back to the\n // address string for injected/JSON-RPC providers (wagmi, RainbowKit, etc).\n protected async getSignerAccount(): Promise<Account | Address> {\n const wallet = this.walletClient;\n if (wallet.account) return wallet.account;\n const [address] = await wallet.getAddresses();\n return address;\n }\n\n protected async getSignerAddress(): Promise<Address> {\n const signer = await this.getSignerAccount();\n return typeof signer === 'string' ? signer : signer.address;\n }\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"canCreateMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"canTrade\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createVenue\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextVenueId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct VenueData\",\n \"components\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueMarketCreationFee\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueOracleParams\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueAccessControlUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueCreated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueFeesUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueMarketCreationFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueOracleParamsUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenuePaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnpaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUmaMinBond\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueName\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activatePlaceholder\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addMarket\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addPlaceholderMarkets\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarket\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketOracleData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketOracleData\",\n \"components\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requiredBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"initialized\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"activeAssertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketRegistryData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketRegistryData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketTradingData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"positionIds\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"totalVolume\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"lastTradeTick\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextMarketId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketAddedToGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderMarketsAdded\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"indexed\": false,\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotPlaceholder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"cancelOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrdersOnResolvedMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"expireOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"expiredCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardEarned\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Order\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"originalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nextOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"prevOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"matchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxSteps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fillCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MergeFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MintFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderAutoCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"refundedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderFilled\",\n \"inputs\": [\n {\n \"name\": \"buyOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sellOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canMatchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MatchPreview\",\n \"components\": [\n {\n \"name\": \"normalYesCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"normalNoCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mintFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mergeFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"anyMatchable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFill\",\n \"inputs\": [\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Fill\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"path\",\n \"type\": \"uint8\",\n \"internalType\": \"enum SettlementPath\"\n },\n {\n \"name\": \"order1Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"order2Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarkPrice\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"isDefined\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextFillId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTickLevel\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TickLevel\",\n \"components\": [\n {\n \"name\": \"headOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tailOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"depth\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTopOfBook\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activateMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getGroupMarketIds\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupData\",\n \"components\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"totalMarkets\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"createdAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolvedMarketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroupItem\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupItem\",\n \"components\": [\n {\n \"name\": \"isPlaceholder\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextGroupId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupCreated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuestion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"placeMarketOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketBuyResult\",\n \"components\": [\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeMarketSell\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketSellResult\",\n \"components\": [\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketOrderExecuted\",\n \"inputs\": [\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketSellExecuted\",\n \"inputs\": [\n {\n \"name\": \"seller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientLiquidityForFOK\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaxPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoLiquidityAvailable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroCollateralAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroTokenAmount\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertMarketOutcome\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionDisputedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionResolvedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"assertedTruthfully\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionData\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AssertionData\",\n \"components\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportResolution\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionCreated\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionDisputed\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardPaid\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionActiveOrResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotSettled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyUmaOracle\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OutcomeMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaIdentifierNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaOracleNotSet\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getCtfAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCtf\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CtfUpdated\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionSplit\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionsMerged\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"convertPositions\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConversionPositionIds\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"noPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"yesPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DuplicateConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidIndexSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnregisteredConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolTreasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaOracle\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueSuspended\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeBps\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolTreasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaIdentifier\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaOracle\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"suspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unsuspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawERC20\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawETH\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralWhitelistUpdated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ERC20Withdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EthWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeBpsUpdated\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolTreasuryUpdated\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaIdentifierUpdated\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaOracleUpdated\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueSuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnsuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canTradeOnMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployNFTGatedAC\",\n \"inputs\": [\n {\n \"name\": \"nftContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isERC1155\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployTokenGatedAC\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"minBalance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployWhitelistAC\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AccessControlDeployed\",\n \"inputs\": [\n {\n \"name\": \"deployer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acType\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlRemoved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlSet\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupTags\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketTags\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupMetadata\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketMetadata\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canResolvePriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"feedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"feedProvider\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"createPriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPythContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"markPriceMarketInvalid\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resolvePriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythUpdateData\",\n \"type\": \"bytes[]\",\n \"internalType\": \"bytes[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPythContract\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketCreatedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"indexed\": false,\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketInvalidated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketResolvedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PythContractUpdated\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionInProgress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotAfterOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ETHRefundFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FeedProviderMismatch\",\n \"inputs\": [\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"GracePeriodNotElapsed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientPythFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoClosePriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoOpenPriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPriceMarket\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PriceMarketAlreadyResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PythContractNotConfigured\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ResolutionWindowTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroStrikePrice\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"batchCancelOrders\",\n \"inputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batchPlaceOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelAndReplace\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cancelOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"newOrders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EmptyBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAllowed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AddedToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RemovedFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCollectionId\",\n \"inputs\": [\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConditionId\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOutcomeSlotCount\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPositionId\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"positionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutDenominator\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutNumerators\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareCondition\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeemPositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSets\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportPayouts\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"payouts\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_decimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertTruth\",\n \"inputs\": [\n {\n \"name\": \"claim\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"disputeAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.Assertion\",\n \"components\": [\n {\n \"name\": \"escalationManagerSettings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.EscalationManagerSettings\",\n \"components\": [\n {\n \"name\": \"arbitrateViaEscalationManager\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"discardOracle\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"validateDisputers\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"assertingCaller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"assertionTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"expirationTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settlementResolution\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionResult\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMinimumBond\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","import { BaseModule } from './base';\nimport { VenueFacetABI, ProtocolFacetABI } from '../contracts';\n\nexport class VenueModule extends BaseModule {\n /**\n * Create a new venue.\n *\n * IMPORTANT: Fee and bond amounts must match your intended collateral token decimals.\n * Most venues use USDC (6 decimals), so amounts should use `parseUnits(\"amount\", 6)`.\n *\n * Example for a USDC-based venue:\n * - marketCreationFee: 0n // free creation, or parseUnits(\"10\", 6) for 10 USDC\n * - umaRewardAmount: parseUnits(\"5\", 6) // 5 USDC\n * - umaMinBond: parseUnits(\"1\", 6) // 1 USDC\n * - defaultTickSize: parseEther(\"0.01\") // 0.01 per tick (always 18 decimals)\n *\n * @param params.marketCreationFee - Upfront fee in collateral units charged on `createMarket`.\n * Can be zero. When non-zero, split 50/50 between protocol and venue.\n * When zero, gate market creation via `creationAccessControl` to deter spam.\n * Mutable post-creation via `updateMarketCreationFee`.\n * @param params.umaRewardAmount - Default reward for UMA asserters (in collateral token units).\n * @param params.umaMinBond - Minimum bond for UMA assertions (in collateral token units).\n * @param params.defaultTickSize - Price increment per tick (always 1e18 scale, e.g. 0.01e18).\n */\n async createVenue(params: {\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n venueFeeBps: number;\n creatorFeeBps: number;\n defaultTickSize: bigint;\n marketCreationFee: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'createVenue',\n args: [\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n params.venueFeeBps,\n params.creatorFeeBps,\n params.defaultTickSize,\n params.marketCreationFee,\n params.umaRewardAmount,\n params.umaMinBond,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue fees\n */\n async updateFees(params: {\n venueId: bigint;\n venueFeeBps: number;\n creatorFeeBps: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueFees',\n args: [params.venueId, params.venueFeeBps, params.creatorFeeBps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Pause venue\n */\n async setPaused(venueId: bigint, paused: boolean) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const functionName = paused ? 'pauseVenue' : 'unpauseVenue';\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName,\n args: [venueId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get venue data from on-chain storage\n */\n async getVenue(venueId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [venueId],\n });\n }\n\n /**\n * Update venue settings (name, metadata, access control, fee recipient)\n */\n async updateVenue(params: {\n venueId: bigint;\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenue',\n args: [\n params.venueId,\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update the upfront market creation fee for a venue. Operator-only.\n *\n * Affects only markets created after this call — existing markets keep their snapshot.\n * Pass `0n` for free creation; if you do, gate `createMarket` via `creationAccessControl`\n * to deter spam.\n *\n * @param params.newFee - New fee in collateral token units (e.g. `parseUnits(\"10\", 6)` for 10 USDC).\n */\n async updateMarketCreationFee(params: { venueId: bigint; newFee: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueMarketCreationFee',\n args: [params.venueId, params.newFee],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue oracle parameters (UMA reward and min bond)\n */\n async updateOracleParams(params: {\n venueId: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueOracleParams',\n args: [params.venueId, params.umaRewardAmount, params.umaMinBond],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user can trade on a venue (venue-level AC only, no market override).\n */\n async canTrade(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canTrade',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n /**\n * Check if a user can create markets on a venue.\n */\n async canCreateMarket(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canCreateMarket',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n // ---- Protocol Fee (owner-only) ----\n\n /**\n * Get the current protocol fee in basis points. Snapshotted per market at creation.\n */\n async getProtocolFeeBps(): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getProtocolFeeBps',\n }) as Promise<bigint>;\n }\n\n /**\n * Set the protocol fee in basis points. Owner-only. Max 200 bps (2%).\n * Only affects markets created after this call (existing markets retain their snapshot).\n */\n async setProtocolFeeBps(bps: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'setProtocolFeeBps',\n args: [bps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { parseEther, formatEther } from 'viem';\n\n/**\n * Utility functions for common conversions in OddMaki Protocol\n * These helpers make it easier for frontends to work with the protocol\n * without needing to understand ticks, BigInts, and wei conversions\n */\n\n/** Standard tick size: 1% price increment, 100 price levels (Polymarket/Kalshi standard) */\nexport const TICK_SIZE_STANDARD = 10000000000000000n; // 1e16\n\n/** Fine tick size: 0.1% price increment, 1000 price levels (institutional-grade) */\nexport const TICK_SIZE_FINE = 1000000000000000n; // 1e15\n\n/** All protocol-approved tick sizes */\nexport const VALID_TICK_SIZES = [TICK_SIZE_STANDARD, TICK_SIZE_FINE] as const;\n\n/**\n * Check whether a tick size is in the protocol-approved whitelist.\n * @param tickSize - Tick size in wei (1e15 or 1e16)\n * @returns true if the tick size is valid\n */\nexport function isValidTickSize(tickSize: bigint): boolean {\n return tickSize === TICK_SIZE_STANDARD || tickSize === TICK_SIZE_FINE;\n}\n\n/**\n * Convert a tick value to a human-readable price\n * @param tick - Tick value (e.g., 80 for 0.80)\n * @param tickSize - Optional tick size in 1e18 (defaults to 0.01e18)\n * @returns Price as decimal string (e.g., \"0.80\")\n */\nexport function tickToPrice(tick: bigint, tickSize: bigint = 10000000000000000n): string {\n const price = tick * tickSize;\n return (Number(price) / 1e18).toFixed(2);\n}\n\n/**\n * Convert a human-readable price to a tick value\n * @param price - Price as decimal (e.g., 0.80 or \"0.80\")\n * @returns Tick value as bigint (e.g., 80n)\n */\nexport function priceToTick(price: number | string): bigint {\n const priceNum = typeof price === 'string' ? parseFloat(price) : price;\n return BigInt(Math.round(priceNum * 100));\n}\n\n/**\n * Convert a decimal amount string to the smallest unit based on decimals\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns BigInt in smallest unit\n *\n * @example\n * parseAmount(\"10.5\") // 10500000000000000000n (18 decimals)\n * parseAmount(\"10.5\", 6) // 10500000n (6 decimals for USDC)\n */\nexport function parseAmount(amount: string, decimals: number = 18): bigint {\n if (decimals === 18) {\n return parseEther(amount);\n }\n\n // Parse amount with custom decimals\n const parts = amount.split('.');\n const wholePart = parts[0] || '0';\n const decimalPart = (parts[1] || '').padEnd(decimals, '0').slice(0, decimals);\n\n return BigInt(wholePart + decimalPart);\n}\n\n/**\n * Convert smallest unit amount to decimal string based on decimals\n * @param amount - Amount in smallest unit (bigint)\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns Decimal string (e.g., \"10.5\")\n *\n * @example\n * formatAmount(10500000000000000000n) // \"10.5\" (18 decimals)\n * formatAmount(10500000n, 6) // \"10.5\" (6 decimals for USDC)\n */\nexport function formatAmount(amount: bigint, decimals: number = 18): string {\n if (decimals === 18) {\n return formatEther(amount);\n }\n\n // Format amount with custom decimals\n const amountStr = amount.toString().padStart(decimals + 1, '0');\n const wholePart = amountStr.slice(0, -decimals) || '0';\n const decimalPart = amountStr.slice(-decimals);\n\n // Remove trailing zeros from decimal part\n const trimmedDecimal = decimalPart.replace(/0+$/, '');\n\n return trimmedDecimal ? `${wholePart}.${trimmedDecimal}` : wholePart;\n}\n\n/**\n * Create an expiry timestamp from duration\n * @param duration - Duration string like \"1h\", \"24h\", \"7d\" or number of seconds\n * @returns Unix timestamp as bigint\n */\nexport function createExpiry(duration: string | number): bigint {\n let seconds: number;\n\n if (typeof duration === 'number') {\n seconds = duration;\n } else {\n // Parse duration strings like \"1h\", \"24h\", \"7d\"\n const match = duration.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error('Invalid duration format. Use formats like \"1h\", \"24h\", \"7d\"');\n }\n\n const value = parseInt(match[1]);\n const unit = match[2];\n\n const multipliers: Record<string, number> = {\n s: 1,\n m: 60,\n h: 3600,\n d: 86400,\n };\n\n seconds = value * multipliers[unit];\n }\n\n return BigInt(Math.floor(Date.now() / 1000) + seconds);\n}\n\n/**\n * Format a timestamp for display\n * @param timestamp - Unix timestamp (bigint or number)\n * @returns Human-readable date string\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n return new Date(ts * 1000).toLocaleString();\n}\n\n/**\n * Market question structure\n */\nexport interface MarketQuestion {\n title: string;\n description: string;\n}\n\n/**\n * Parse UMA ancillary data into structured question format\n * @param ancillaryData - Raw ancillary data string from contract/subgraph\n * @returns Parsed question with title and description\n *\n * @example\n * ```typescript\n * const question = parseAncillaryData(\"q:title:Will ETH hit $5k?,description:Market resolves YES if...\");\n * console.log(question.title); // \"Will ETH hit $5k?\"\n * console.log(question.description); // \"Market resolves YES if...\"\n * ```\n */\nexport function parseAncillaryData(ancillaryData: string): MarketQuestion {\n try {\n // Format: \"q:title:TITLE,description:DESC,market_id:N,venue_id:N,initializer:0x...,res_data:...,ooRequester:0x...,chain_id:N\"\n // Title and description can contain commas, so we can't split on all commas.\n // Instead, use the known contract-appended keys as boundaries.\n const CONTRACT_KEY_RE = /,(?:market_id|venue_id|initializer|res_data|ooRequester|chain_id):/;\n\n let title = '';\n let description = '';\n\n // Find where title starts (supports both \"q:title:\" and \"title:\" prefixes)\n const titlePrefix = ancillaryData.match(/^(?:q:)?title:/);\n if (titlePrefix) {\n const afterTitle = ancillaryData.slice(titlePrefix[0].length);\n\n // Title ends at \",description:\" or first contract-appended key\n const descIdx = afterTitle.indexOf(',description:');\n\n if (descIdx >= 0) {\n title = afterTitle.slice(0, descIdx).trim();\n const descRest = afterTitle.slice(descIdx + ',description:'.length);\n const keyMatch = descRest.match(CONTRACT_KEY_RE);\n description = keyMatch\n ? descRest.slice(0, keyMatch.index).trim()\n : descRest.trim();\n } else {\n const keyMatch = afterTitle.match(CONTRACT_KEY_RE);\n title = keyMatch\n ? afterTitle.slice(0, keyMatch.index).trim()\n : afterTitle.trim();\n }\n }\n\n return {\n title: title || ancillaryData, // Fallback to raw data if parsing fails\n description: description || '',\n };\n } catch (e) {\n // If parsing fails, return the raw data as title\n return { title: ancillaryData, description: '' };\n }\n}\n\n/**\n * Format a market question into UMA ancillary data string\n * @param question - Question with title and description\n * @returns Formatted ancillary data string (without market/venue metadata)\n *\n * @example\n * ```typescript\n * const ancillaryData = formatAncillaryData({\n * title: \"Will ETH hit $5k?\",\n * description: \"Market resolves YES if ETH/USD >= $5000 on Coinbase Pro by Dec 31, 2025.\"\n * });\n * // Returns: \"q:title:Will ETH hit $5k?,description:Market resolves YES if...\"\n * ```\n *\n * @note The Controller/UmaAdapter will append additional fields (market_id, venue_id, etc.)\n */\nexport function formatAncillaryData(question: MarketQuestion): string {\n let data = `q:title:${question.title}`;\n if (question.description) {\n data += `,description:${question.description}`;\n }\n return data;\n}\n\n/**\n * Convert a tick value and tick size to a percentage (0-100).\n * Accepts string or number inputs for convenience with subgraph data.\n *\n * @param tick - Tick value (e.g., 55 or \"55\")\n * @param tickSize - Tick size in wei (e.g., 1e16 or \"10000000000000000\")\n * @returns Price as percentage (e.g., 55 for 55%)\n */\nexport function tickToPercentage(tick: string | number, tickSize: string | number): number {\n const tickNum = typeof tick === 'string' ? parseFloat(tick) : tick;\n const tickSizeNum = typeof tickSize === 'string' ? parseFloat(tickSize) : tickSize;\n if (tickNum === 0 || tickSizeNum === 0) return 0;\n const price = (tickNum * tickSizeNum) / 1e18;\n return parseFloat((price * 100).toFixed(2));\n}\n\n/**\n * Subgraph Market entity shape expected by getOutcomePrice.\n */\nexport interface SubgraphMarketPriceData {\n tickSize: string;\n status: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n}\n\n/**\n * Get the current price percentage (0-100) for an outcome in a binary market.\n *\n * Handles three cases:\n * 1. Resolved markets → winning outcome = 100, losing = 0\n * 2. Active markets with YES price → NO = 100 - YES (complement)\n * 3. Active markets with only NO price → YES = 100 - NO\n *\n * @param market - Subgraph Market entity with price/status fields\n * @param outcomeIndex - 0 for YES, 1 for NO\n * @returns Price as percentage (0-100)\n */\nexport function getOutcomePrice(market: SubgraphMarketPriceData, outcomeIndex: number): number {\n const tickSize = market.tickSize || '0';\n\n // Resolved: winning = 100, losing = 0\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === outcomeIndex ? 100 : 0;\n }\n\n // Use YES price as canonical, derive NO via complement\n const yesTick = market.lastPriceTick_0;\n if (!yesTick) {\n const noTick = market.lastPriceTick_1;\n if (!noTick) return 0;\n const noPercent = tickToPercentage(noTick, tickSize);\n return outcomeIndex === 1 ? noPercent : (100 - noPercent);\n }\n\n const yesPercent = tickToPercentage(yesTick, tickSize);\n return outcomeIndex === 0 ? yesPercent : (100 - yesPercent);\n}\n\n// ============================================\n// Mark Price Calculation (Polymarket-style)\n// ============================================\n\n/**\n * Top-of-book entry from subgraph TopOfBook entity.\n */\nexport interface TopOfBookEntry {\n outcome: string; // \"0\" or \"1\"\n side: string; // \"BUY\" or \"SELL\"\n topTick: string; // tick value, \"0\" if empty\n}\n\n/**\n * Input for calculateChancePercent — accepts subgraph market data.\n */\nexport interface ChancePercentInput {\n tickSize: string;\n status?: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n lastTradeTimestamp_0?: string | null;\n lastTradeTimestamp_1?: string | null;\n topOfBook?: TopOfBookEntry[];\n}\n\n/** Spread threshold in dollars — matches Polymarket's $0.10 threshold. */\nconst MARK_PRICE_SPREAD_THRESHOLD = 0.10;\n\n/**\n * Calculate the \"chance %\" for a binary market using a Polymarket-style waterfall:\n *\n * 1. **Implied mark price** (midpoint of implied Yes bid/ask) — if spread ≤ $0.10\n * 2. **Last trade** (most recent trade from either side) — if book empty or spread > $0.10\n * 3. **50%** — no data\n *\n * Implied prices account for cross-outcome liquidity via mint/merge paths:\n * - No BUY at tick N → implied Yes ASK at (maxTicks - N) via Mint path\n * - No SELL at tick N → implied Yes BID at (maxTicks - N) via Merge path\n *\n * @param market - Subgraph market data with top-of-book and last trade info\n * @returns Chance percentage (0-100)\n */\nexport function calculateChancePercent(market: ChancePercentInput): number {\n const tickSizeNum = parseFloat(market.tickSize || '0');\n if (tickSizeNum === 0) return 50;\n\n // Resolved markets: winning = 100%, losing = 0%\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === 0 ? 100 : 0;\n }\n\n const maxTicks = 1e18 / tickSizeNum;\n\n // Step 1: Try mark price from top-of-book (implied midpoint)\n if (market.topOfBook && market.topOfBook.length > 0) {\n const tob = parseTopOfBook(market.topOfBook);\n const result = computeImpliedMidpoint(tob, maxTicks, tickSizeNum);\n if (result !== null) return result;\n }\n\n // Step 2: Fall back to most recent trade (either side)\n return lastTradeFallback(market, tickSizeNum);\n}\n\n/**\n * Parsed top-of-book values (all in raw tick units).\n */\ninterface ParsedTopOfBook {\n yesBid: number;\n yesAsk: number;\n noBid: number;\n noAsk: number;\n}\n\n/**\n * Parse the TopOfBook array into the 4 values we need.\n */\nfunction parseTopOfBook(entries: TopOfBookEntry[]): ParsedTopOfBook {\n const result: ParsedTopOfBook = { yesBid: 0, yesAsk: 0, noBid: 0, noAsk: 0 };\n\n for (const entry of entries) {\n const tick = parseFloat(entry.topTick || '0');\n const outcome = entry.outcome?.toString();\n const side = entry.side;\n\n if (outcome === '0' && side === 'BUY') result.yesBid = tick;\n else if (outcome === '0' && side === 'SELL') result.yesAsk = tick;\n else if (outcome === '1' && side === 'BUY') result.noBid = tick;\n else if (outcome === '1' && side === 'SELL') result.noAsk = tick;\n }\n\n return result;\n}\n\n/**\n * Compute the implied Yes midpoint from top-of-book data.\n * Returns the chance percentage, or null if we can't compute a valid midpoint.\n */\nfunction computeImpliedMidpoint(\n tob: ParsedTopOfBook,\n maxTicks: number,\n tickSize: number,\n): number | null {\n // Compute implied Yes bid: max(direct Yes bid, complement of No ask via merge)\n const bidCandidates: number[] = [];\n if (tob.yesBid > 0) bidCandidates.push(tob.yesBid);\n if (tob.noAsk > 0) bidCandidates.push(maxTicks - tob.noAsk);\n\n // Compute implied Yes ask: min(direct Yes ask, complement of No bid via mint)\n const askCandidates: number[] = [];\n if (tob.yesAsk > 0) askCandidates.push(tob.yesAsk);\n if (tob.noBid > 0) askCandidates.push(maxTicks - tob.noBid);\n\n // Need both a bid and an ask to compute midpoint\n if (bidCandidates.length === 0 || askCandidates.length === 0) return null;\n\n const impliedBid = Math.max(...bidCandidates);\n const impliedAsk = Math.min(...askCandidates);\n\n // Check spread threshold (in dollar terms)\n const spreadDollars = ((impliedAsk - impliedBid) * tickSize) / 1e18;\n if (spreadDollars > MARK_PRICE_SPREAD_THRESHOLD) return null;\n\n // Midpoint → percentage\n const midTick = (impliedBid + impliedAsk) / 2;\n const percent = (midTick * tickSize / 1e18) * 100;\n return parseFloat(Math.max(0, Math.min(100, percent)).toFixed(2));\n}\n\n/**\n * Fall back to the most recent trade from either side.\n * If per-outcome timestamps are available, use the more recent one.\n * Otherwise, use whichever lastPriceTick is available (with complement derivation for No).\n */\nfunction lastTradeFallback(market: ChancePercentInput, tickSize: number): number {\n const tick0 = parseFloat(market.lastPriceTick_0 || '0');\n const tick1 = parseFloat(market.lastPriceTick_1 || '0');\n const ts0 = parseFloat(market.lastTradeTimestamp_0 || '0');\n const ts1 = parseFloat(market.lastTradeTimestamp_1 || '0');\n\n // Both outcomes have trades: use the more recent one\n if (tick0 > 0 && tick1 > 0) {\n if (ts0 > 0 || ts1 > 0) {\n // Per-outcome timestamps available — use most recent\n if (ts0 >= ts1) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n // No side is more recent — derive Yes via complement\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n // No per-outcome timestamps (pre-migration data) — prefer Yes price\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only Yes traded\n if (tick0 > 0) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only No traded — derive Yes via complement\n if (tick1 > 0) {\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n\n // No data at all\n return 50;\n}\n","import type { PublicClient, Address } from 'viem';\nimport { parseAmount } from './conversions';\n\n/**\n * Decimal handling utilities for ERC20 tokens\n *\n * IMPORTANT: The OddMaki Protocol uses 1e18 for all internal price calculations,\n * but collateral tokens (like USDC) may use different decimals (e.g., 6).\n *\n * This module provides utilities to correctly handle token decimals when\n * converting between user-facing amounts and contract values.\n */\n\n/**\n * Get the number of decimals for an ERC20 token\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals (e.g., 6 for USDC, 18 for most ERC20s)\n *\n * @example\n * const decimals = await getTokenDecimals(publicClient, usdcAddress);\n * console.log(decimals); // 6\n */\nexport async function getTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const decimals = await publicClient.readContract({\n address: token,\n abi: [\n {\n name: 'decimals',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n ],\n functionName: 'decimals',\n });\n\n return Number(decimals);\n}\n\n/**\n * Parse a token amount string with validation\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for most tokens)\n * @returns BigInt in smallest unit\n * @throws Error if decimals are invalid\n *\n * @example\n * parseTokenAmount(\"10.5\", 6) // 10500000n (USDC)\n * parseTokenAmount(\"10.5\", 18) // 10500000000000000000n (ETH-like)\n */\nexport function parseTokenAmount(\n amount: string,\n decimals: number\n): bigint {\n if (decimals < 0 || decimals > 18) {\n throw new Error(`Invalid decimals: ${decimals}. Must be between 0 and 18.`);\n }\n\n if (!amount || amount.trim() === '') {\n throw new Error('Amount cannot be empty');\n }\n\n return parseAmount(amount, decimals);\n}\n\n/**\n * Cache for token decimals to avoid redundant RPC calls\n * Key format: `${chainId}-${tokenAddress.toLowerCase()}`\n */\nconst decimalsCache = new Map<string, number>();\n\n/**\n * Get token decimals with caching to reduce RPC calls\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals\n *\n * @example\n * // First call hits RPC\n * const decimals1 = await getCachedTokenDecimals(publicClient, usdcAddress);\n *\n * // Second call uses cache\n * const decimals2 = await getCachedTokenDecimals(publicClient, usdcAddress);\n */\nexport async function getCachedTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const chainId = await publicClient.getChainId();\n const cacheKey = `${chainId}-${token.toLowerCase()}`;\n\n const cached = decimalsCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const decimals = await getTokenDecimals(publicClient, token);\n decimalsCache.set(cacheKey, decimals);\n\n return decimals;\n}\n\n/**\n * Clear the decimals cache (useful for testing or switching networks)\n */\nexport function clearDecimalsCache(): void {\n decimalsCache.clear();\n}\n","import { BaseModule } from './base';\nimport {\n VenueFacetABI,\n MarketsFacetABI,\n MarketGroupFacetABI,\n OrderBookFacetABI,\n NegRiskFacetABI,\n ConditionalTokensABI,\n TagsFacetABI,\n MetadataFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { formatAmount, isValidTickSize, type MarketQuestion } from '../utils/conversions';\nimport { getTokenDecimals } from '../utils/decimals';\n\n// Inline fragment for ERC-1155 isApprovedForAll. Not in the bundled CTF ABI\n// because it was generated from a subset of methods; this avoids having to\n// regenerate the full ABI for a single standard read.\nconst CTF_IS_APPROVED_FOR_ALL_ABI = [\n {\n name: 'isApprovedForAll',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'account', type: 'address' },\n { name: 'operator', type: 'address' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n },\n] as const;\n\nexport class MarketModule extends BaseModule {\n /**\n * Format market question into UMA-compliant ancillary data\n * @param question Structured market question with title and description\n * @returns Hex-encoded ancillary data bytes\n * @private\n */\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n // Build comma-delimited key:value format (start with \"q:\" prefix)\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n\n // Convert to hex bytes\n return stringToHex(data);\n }\n\n /**\n * Create a new market\n *\n * IMPORTANT: All bigint amounts must use the collateral token's decimals!\n * - For USDC (6 decimals): Use parseAmount(\"10\", 6) or parseUnits(\"10\", 6)\n * - For 18-decimal tokens: Use parseAmount(\"10\") or parseEther(\"10\")\n *\n * @param params.tickSize - Price increment (typically parseEther(\"0.01\") = 0.01 per tick)\n * @param params.additionalReward - Extra UMA reward in collateral token units (with token decimals!)\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n */\n async createMarket(params: {\n venueId: bigint;\n question: MarketQuestion;\n outcomes: string[];\n tickSize: bigint;\n collateralToken: Address;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee is determined by venue configuration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Format ancillary data\n const ancillaryData = this.formatAncillaryData(params.question);\n\n // Encode tags as bytes32[]\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'createMarket',\n args: [\n params.venueId,\n ancillaryData,\n params.outcomes,\n params.tickSize,\n params.collateralToken,\n params.additionalReward,\n params.liveness ?? 0n,\n encodedTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market registry data (lifecycle, venue, creator, status)\n */\n async getMarketRegistryData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n }\n\n /**\n * Get market trading data (positionIds, volume, lastTradeTick, tickSize, collateral)\n */\n async getMarketTradingData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n }\n\n /**\n * Get market oracle data (questionId, conditionId, UMA economics)\n */\n async getMarketOracleData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n }\n\n /**\n * Calculate Position ID for a market outcome (for CTF balance queries)\n */\n async getPositionId(marketId: bigint, outcomeIndex: bigint): Promise<bigint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n\n const ids = tradingData.positionIds;\n if (!ids || ids.length <= Number(outcomeIndex)) {\n throw new Error('Position ID not found in trading data');\n }\n\n return BigInt(ids[Number(outcomeIndex)]);\n }\n\n /**\n * Get best prices (Top of Book) for all outcomes\n * Returns the raw tick values.\n */\n async getBestPrices(marketId: bigint) {\n const getTick = async (outcome: number, side: number) => {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [marketId, BigInt(outcome), side],\n })) as bigint;\n };\n\n // Fetch relevant ticks: YES Ask, YES Bid, NO Ask, NO Bid\n const [yesAsk, yesBid, noAsk, noBid] = await Promise.all([\n getTick(0, 1), // YES Ask\n getTick(0, 0), // YES Bid\n getTick(1, 1), // NO Ask\n getTick(1, 0), // NO Bid\n ]);\n\n return {\n yesAsk,\n yesBid,\n noAsk,\n noBid,\n };\n }\n\n /**\n * Get user's outcome token balances for a market\n * @param params.formatted - If true, returns decimal strings instead of BigInt (recommended for frontends)\n *\n * @dev Outcome tokens use the same decimals as the collateral token.\n * CTF inherits decimals from the underlying collateral.\n */\n async getUserBalances(\n marketId: bigint,\n user: Address,\n params?: { formatted?: boolean },\n ) {\n const formatted = params?.formatted ?? false;\n\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const collateralToken = tradingData.collateralToken as Address;\n\n // Get collateral decimals\n const decimals = await getTokenDecimals(this.publicClient, collateralToken);\n\n const yesPositionId = await this.getPositionId(marketId, 0n);\n const noPositionId = await this.getPositionId(marketId, 1n);\n\n const [yesBalance, noBalance] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, yesPositionId],\n }),\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, noPositionId],\n }),\n ]);\n\n if (formatted) {\n return {\n YES: formatAmount(yesBalance as bigint, decimals),\n NO: formatAmount(noBalance as bigint, decimals),\n };\n }\n\n return {\n YES: yesBalance as bigint,\n NO: noBalance as bigint,\n };\n }\n\n /**\n * Get market prices directly from on-chain data (RPC)\n * This bypasses the subgraph for guaranteed fresh pricing\n *\n * Uses mark price from the orderbook (mid-point of best bid/ask)\n * Falls back to last trade tick if no orderbook liquidity\n *\n * Returns prices in decimal format (e.g., \"0.80\" for 80%)\n */\n async getMarketPricesRPC(marketId: bigint) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const tickSize = BigInt(tradingData.tickSize);\n\n // Try mark price first (orderbook mid-point)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [markPrice0, markPrice1]: any[] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 0n],\n }),\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 1n],\n }),\n ]);\n\n // getMarkPrice returns (priceTick, isDefined)\n const tick0 = BigInt(markPrice0[0]);\n const isDefined0 = markPrice0[1] as boolean;\n const tick1 = BigInt(markPrice1[0]);\n const isDefined1 = markPrice1[1] as boolean;\n\n if (isDefined0 || isDefined1) {\n const price0Raw = tick0 * tickSize;\n const price1Raw = tick1 * tickSize;\n const yesPrice = isDefined0 ? (Number(price0Raw) / 1e18).toFixed(2) : '0.50';\n const noPrice = isDefined1 ? (Number(price1Raw) / 1e18).toFixed(2) : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Fallback: use last trade ticks\n const lastTick0 = BigInt(tradingData.lastTradeTick[0]);\n const lastTick1 = BigInt(tradingData.lastTradeTick[1]);\n\n if (lastTick0 > 0n || lastTick1 > 0n) {\n const yesPrice = lastTick0 > 0n\n ? (Number(lastTick0 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n const noPrice = lastTick1 > 0n\n ? (Number(lastTick1 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Default\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n } catch (error) {\n console.error('[SDK] RPC price fetch error:', error);\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n }\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Create a new market group (parent metadata only, no markets yet)\n *\n * @param params.question - Market question (e.g., \"Where will Giannis be traded?\")\n * @param params.description - Resolution criteria (shared by all markets)\n * @param params.collateralToken - Collateral token for all markets in group\n * @param params.tickSize - Price increment (same for all markets)\n * @param params.additionalReward - Additional UMA reward in collateral token units\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n * @returns Transaction hash\n */\n async createMarketGroup(params: {\n venueId: bigint;\n question: string;\n description: string;\n collateralToken: Address;\n tickSize: bigint;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee (same as regular market)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Encode tags as bytes32[]\n const groupTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market group (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'createMarketGroup',\n args: [\n params.venueId,\n params.question,\n params.description,\n params.collateralToken,\n params.tickSize,\n params.additionalReward,\n params.liveness ?? 0n,\n groupTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add a market to a Draft market group\n */\n async addMarketToGroup(params: {\n marketGroupId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addMarket',\n args: [params.marketGroupId, params.marketName, params.marketQuestion],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add placeholder markets to a Draft market group\n */\n async addPlaceholderMarkets(params: {\n marketGroupId: bigint;\n count: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n if (params.count < 1n || params.count > 50n) {\n throw new Error('Count must be between 1 and 50');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addPlaceholderMarkets',\n args: [params.marketGroupId, params.count],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a placeholder market with real question\n */\n async activatePlaceholder(params: {\n marketGroupId: bigint;\n marketId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'activatePlaceholder',\n args: [\n params.marketGroupId,\n params.marketId,\n params.marketName,\n params.marketQuestion,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a market group (locks totalMarkets, enables trading)\n */\n async activateMarketGroup(params: { marketGroupId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'activateMarketGroup',\n args: [params.marketGroupId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Convert NO positions to complementary YES positions + collateral\n *\n * Formula: N NO positions → (M-N) YES positions + (N-1) collateral\n */\n async convertPositions(params: {\n marketGroupId: bigint;\n indexSet: bigint;\n amount: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Check CTF approval for Diamond\n const isApproved = await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: CTF_IS_APPROVED_FOR_ALL_ABI,\n functionName: 'isApprovedForAll',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (!isApproved) {\n throw new Error(\n `CTF tokens not approved for Diamond. Please call: ctf.setApprovalForAll(\"${this.config.diamondAddress}\", true)`,\n );\n }\n\n // Get group data to extract conditionIds and collateralToken\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [params.marketGroupId],\n });\n\n // Get conditionIds for all markets in the group\n const marketIds: bigint[] = groupData.marketIds;\n const conditionIds: `0x${string}`[] = [];\n for (const mid of marketIds) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.getMarketOracleData(mid);\n conditionIds.push(oracleData.conditionId);\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: NegRiskFacetABI,\n functionName: 'convertPositions',\n args: [conditionIds, groupData.collateralToken, params.indexSet, params.amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market group data\n */\n async getMarketGroup(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get all market IDs in a group\n */\n async getGroupMarketIds(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getGroupMarketIds',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroupItem',\n args: [marketId],\n });\n }\n\n /**\n * Get market prices using subgraph data with orderbook fallback\n *\n * Price hierarchy:\n * 1. Last trade price (from Normal fills or Market orders)\n * 2. Orderbook-derived price (best execution cost)\n * 3. Default 50/50 (no information)\n */\n async getMarketPrices(marketId: bigint) {\n // Fetch market data from subgraph\n const query = `\n query GetMarketPrices($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n }\n }\n `;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.subgraph.request(query, {\n marketId: marketId.toString(),\n });\n const market = result.markets?.[0];\n\n if (!market) {\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // Priority 1: Use last trade prices\n const hasLastPrices = market?.lastPriceTick_0 || market?.lastPriceTick_1;\n const tickSize = BigInt(market.tickSize || '10000000000000000');\n\n if (hasLastPrices) {\n let yesPrice = 0.5;\n let noPrice = 0.5;\n\n if (market.lastPriceTick_0 && market.lastPriceTick_0 !== '0') {\n const yesPriceBigInt = BigInt(market.lastPriceTick_0) * tickSize;\n yesPrice = Number(yesPriceBigInt) / 1e18;\n noPrice = 1 - yesPrice;\n } else if (market.lastPriceTick_1 && market.lastPriceTick_1 !== '0') {\n const noPriceBigInt = BigInt(market.lastPriceTick_1) * tickSize;\n noPrice = Number(noPriceBigInt) / 1e18;\n yesPrice = 1 - noPrice;\n }\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'trade' as const,\n timestamp: market.lastTradeTimestamp,\n };\n }\n\n // Priority 2: Derive from orderbook (best execution cost for buyers)\n const { yesAsk, yesBid, noAsk, noBid } = await this.getBestPrices(marketId);\n\n const hasOrderbook = yesAsk > 0n || yesBid > 0n || noAsk > 0n || noBid > 0n;\n\n if (hasOrderbook) {\n const calcBuyPrice = (\n bestAsk: bigint,\n complementBestBid: bigint,\n ): number => {\n if (bestAsk > 0n) {\n return Number(bestAsk * tickSize) / 1e18;\n }\n if (complementBestBid > 0n) {\n const bidPrice = Number(complementBestBid * tickSize) / 1e18;\n return 1 - bidPrice;\n }\n return 0.5;\n };\n\n const yesPrice = calcBuyPrice(yesAsk, noBid);\n const noPrice = calcBuyPrice(noAsk, yesBid);\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'orderbook' as const,\n timestamp: null,\n };\n }\n\n // Priority 3: Default (no information available)\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // ============================================\n // Market Moderation\n // ============================================\n\n /**\n * Pause a market. Blocks trading but allows order cancellations.\n * Only the venue operator can call this.\n */\n async pauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'pauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Unpause a market. Resumes trading.\n * Only the venue operator can call this.\n */\n async unpauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'unpauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Tags\n // ============================================\n\n /**\n * Update tags for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketTags(params: {\n marketId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketTags',\n args: [params.marketId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update tags for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupTags(params: {\n marketGroupId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketGroupTags',\n args: [params.marketGroupId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Metadata\n // ============================================\n\n /**\n * Update metadata URI for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketMetadata(params: {\n marketId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketMetadata',\n args: [params.marketId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update metadata URI for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupMetadata(params: {\n marketGroupId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketGroupMetadata',\n args: [params.marketGroupId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { BaseModule } from './base';\nimport {\n LimitOrdersFacetABI,\n MatchingFacetABI,\n OrderBookFacetABI,\n MarketOrdersFacetABI,\n MarketsFacetABI,\n VaultFacetABI,\n BatchOrdersFacetABI,\n} from '../contracts';\nimport {\n tickToPrice,\n formatAmount,\n priceToTick,\n parseAmount,\n createExpiry,\n} from '../utils/conversions';\nimport { getCachedTokenDecimals, parseTokenAmount } from '../utils/decimals';\nimport type { Address } from 'viem';\n\nexport class TradeModule extends BaseModule {\n /**\n * Place a limit order\n * Use placeOrderSimple() for string-based inputs (recommended for frontends)\n */\n async placeOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place a limit order with simple string inputs (recommended for frontends)\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Expiry as duration string (e.g., \"1h\", \"24h\") or bigint timestamp\n *\n * NOTE: Outcome token amounts use the same decimals as the collateral token\n * (e.g., 6 for USDC) because splitPosition creates tokens 1:1 with collateral.\n */\n async placeOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }) {\n // Read market trading data to get collateral token decimals\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const tick = priceToTick(params.price);\n const qty = parseTokenAmount(params.quantity, decimals);\n\n const expiry =\n typeof params.expiry === 'string'\n ? (params.expiry === 'gtc' ? BigInt(0) : createExpiry(params.expiry))\n : params.expiry;\n\n return this.placeOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n side: params.side,\n tick,\n qty,\n expiry,\n });\n }\n\n /**\n * Cancel an order\n */\n async cancelOrder(orderId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrder',\n args: [orderId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel all remaining orders on a resolved market in a single transaction.\n * Regular cancelOrder / batchCancelOrders revert once the market is no longer\n * active, so this is the only way to clear stale orders post-resolution.\n * @param marketId - The resolved market\n * @param orderIds - Order IDs to cancel (must belong to caller)\n */\n async cancelOrdersOnResolvedMarket(marketId: bigint, orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrdersOnResolvedMarket',\n args: [marketId, orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order (FOK or FAK)\n *\n * @param params.marketId - The market to buy on\n * @param params.outcomeId - Which outcome to buy (0=YES, 1=NO)\n * @param params.collateralAmount - Amount of collateral to spend\n * @param params.maxPriceTick - Maximum price tick willing to pay (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order with simple string input (recommended for frontends)\n * @param params.amount - Collateral amount as decimal string (e.g., \"10.5\")\n * @param params.maxPrice - Maximum price as decimal string (e.g., \"0.85\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n maxPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const collateralAmount = parseTokenAmount(params.amount, decimals);\n const maxPriceTick = priceToTick(params.maxPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n collateralAmount,\n maxPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market order (simulate transaction)\n */\n async previewMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Preview placing an order (simulate transaction to check for reverts)\n */\n async previewPlaceOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Execute a market sell order (FOK or FAK)\n *\n * @param params.marketId - The market to sell on\n * @param params.outcomeId - Which outcome to sell (0=YES, 1=NO)\n * @param params.tokenAmount - Amount of outcome tokens to sell\n * @param params.minPriceTick - Minimum price tick willing to accept (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market sell order with simple string inputs (recommended for frontends)\n * @param params.amount - Token amount as decimal string (e.g., \"100.5\")\n * @param params.minPrice - Minimum price as decimal string (e.g., \"0.70\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketSellSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n minPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token decimals\n // (outcome tokens use same decimals as collateral)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const tokenAmount = parseTokenAmount(params.amount, decimals);\n const minPriceTick = priceToTick(params.minPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketSell({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n tokenAmount,\n minPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market sell order (simulate transaction)\n */\n async previewMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Watch for MarketOrderExecuted events\n */\n watchMarketOrder(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketOrderExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Watch for MarketSellExecuted events\n */\n watchMarketSell(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketSellExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Check whether any orders are matchable in the given market.\n * Returns a preview of which fill paths have crossing conditions,\n * plus top-of-book snapshot and head-order expiry flags.\n * Free off-chain (view function) — call before submitting matchOrders txs.\n */\n async canMatchOrders(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'canMatchOrders',\n args: [marketId],\n });\n }\n\n /**\n * Manually trigger order matching for a market\n */\n async matchOrders(params: { marketId: bigint; maxSteps?: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const maxSteps = params.maxSteps || 10n;\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MatchingFacetABI,\n functionName: 'matchOrders',\n args: [params.marketId, maxSteps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get order details by ID\n */\n async getOrder(orderId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'getOrder',\n args: [orderId],\n });\n }\n\n /**\n * Get tick level details (orders at a specific price)\n */\n async getTickLevel(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n }) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, params.outcomeId, params.side, params.tick],\n });\n }\n\n /**\n * Get top-of-book summary for a market\n * Returns the best bid/ask tick and depth at that level for each outcome\n * @param params.formatted - If true, returns human-readable prices and quantities\n */\n async getOrderBook(params: {\n marketId: bigint;\n formatted?: boolean;\n }) {\n const formatted = params.formatted ?? false;\n\n const getSide = async (outcomeId: number, side: number) => {\n const topTick = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [params.marketId, BigInt(outcomeId), side],\n })) as bigint;\n\n if (topTick === 0n) {\n return formatted\n ? { price: '0', quantity: '0', orders: 0, tick: 0n }\n : { tick: 0n, totalQty: 0n, depth: 0n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const level: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, BigInt(outcomeId), side, topTick],\n });\n\n if (formatted) {\n return {\n price: tickToPrice(topTick),\n quantity: formatAmount(level.totalQty),\n orders: Number(level.depth),\n tick: topTick,\n };\n }\n\n return {\n tick: topTick,\n headOrderId: level.headOrderId,\n totalQty: level.totalQty,\n depth: level.depth,\n };\n };\n\n const [yesBestBid, yesBestAsk, noBestBid, noBestAsk] = await Promise.all([\n getSide(0, 0), // YES Best Bid\n getSide(0, 1), // YES Best Ask\n getSide(1, 0), // NO Best Bid\n getSide(1, 1), // NO Best Ask\n ]);\n\n return {\n YES: {\n bestBid: yesBestBid,\n bestAsk: yesBestAsk,\n },\n NO: {\n bestBid: noBestBid,\n bestAsk: noBestAsk,\n },\n };\n }\n\n /**\n * Split collateral into YES + NO outcome tokens\n * Requires USDC approval for the Diamond proxy.\n * @param marketId - The market to split for\n * @param amount - Collateral amount in smallest unit (e.g. USDC with 6 decimals)\n */\n async splitPosition(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'splitPosition',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Merge YES + NO outcome tokens back into collateral\n * Requires CTF setApprovalForAll for the Diamond proxy.\n * @param marketId - The market to merge for\n * @param amount - Amount of each outcome token to merge (in smallest unit)\n */\n async mergePositions(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'mergePositions',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---------------------------------------------------------------------------\n // Batch order management\n // ---------------------------------------------------------------------------\n\n /**\n * Place multiple limit orders on the same market in a single transaction.\n * Gas-optimized: aggregates token transfers (max 3 instead of N).\n * @param params.marketId - The market for all orders\n * @param params.orders - Array of order params (max 20)\n */\n async batchPlaceOrders(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number; // 0=BUY, 1=SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchPlaceOrders',\n args: [params.marketId, params.orders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place multiple limit orders with simple string inputs (recommended for frontends).\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Duration string (e.g., \"1h\", \"gtc\") or bigint timestamp\n */\n async batchPlaceOrdersSimple(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const orders = params.orders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.batchPlaceOrders({ marketId: params.marketId, orders });\n }\n\n /**\n * Cancel multiple orders atomically in a single transaction.\n * Orders can span different markets.\n * @param orderIds - Array of order IDs to cancel (max 100). Must be owned by caller.\n */\n async batchCancelOrders(orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchCancelOrders',\n args: [orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Atomically cancel stale orders and place new ones on the same market.\n * Cancel phase runs first; if any step fails the entire tx reverts.\n * @param params.marketId - Market for new orders\n * @param params.cancelOrderIds - Orders to cancel (max 100)\n * @param params.newOrders - New orders to place (max 20)\n */\n async cancelAndReplace(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'cancelAndReplace',\n args: [params.marketId, params.cancelOrderIds, params.newOrders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel-and-replace with simple string inputs (recommended for frontends).\n */\n async cancelAndReplaceSimple(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const newOrders = params.newOrders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.cancelAndReplace({\n marketId: params.marketId,\n cancelOrderIds: params.cancelOrderIds,\n newOrders,\n });\n }\n}\n","import { gql } from 'graphql-request';\n\nexport const GET_VENUES = gql`\n query GetVenues(\n $first: Int = 100\n $skip: Int = 0\n $orderBy: Venue_orderBy = createdAt\n $orderDirection: OrderDirection = desc\n ) {\n venues(\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n venueId\n name\n operator\n metadata\n # Fee configuration\n venueFeeBps\n creatorFeeBps\n # Oracle configuration\n umaRewardAmount\n umaMinBond\n # Access control\n tradingAccessControl\n creationAccessControl\n # State\n paused\n # Statistics\n totalMarkets\n totalMarketGroups\n activeMarkets\n totalVolume\n totalFees\n # Timestamps\n createdAt\n }\n }\n`;\n\nexport const GET_MARKETS = gql`\n query GetMarkets(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKETS_WITH_PRICING = gql`\n query GetMarketsWithPricing(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n # Last trade prices\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n # Top of book for mark price calculation\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKET = gql`\n query GetMarket($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n totalFees\n uniqueTraders\n tags\n metadataURI\n createdAt\n creator {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_TRADES = gql`\n query GetTrades($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n avgPrice\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\nexport const GET_CHART_TRADES = gql`\n query GetChartTrades(\n $marketId: BigInt!\n $timestampGte: BigInt\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId }, timestamp_gte: $timestampGte }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_CHART_TRADES_ALL = gql`\n query GetChartTradesAll(\n $marketId: BigInt!\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_ORDERS = gql`\n query GetOrders($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n orders(\n where: { market_: { marketId: $marketId }, deleted: false }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n orderId\n market {\n marketId\n }\n trader {\n address\n }\n outcome\n side\n tick\n amount\n filled\n status\n createdAt\n createdAtBlock\n cancelledAt\n expiredAt\n }\n }\n`;\n\nexport const GET_USER = gql`\n query GetUser($address: Bytes!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalMarkets\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TOP_OF_BOOK = gql`\n query GetTopOfBook($marketId: BigInt!) {\n topOfBooks(where: { market_: { marketId: $marketId } }) {\n id\n market {\n marketId\n }\n outcome\n side\n topTick\n updatedAt\n updatedAtBlock\n }\n }\n`;\n\nexport const GET_PROTOCOL_STATS = gql`\n query GetProtocolStats {\n protocol(id: \"1\") {\n id\n totalVenues\n totalMarkets\n totalMarketGroups\n totalVolume\n totalFees\n totalUsers\n updatedAt\n }\n }\n`;\n\nexport const GET_QUESTION = gql`\n query GetQuestion($questionId: ID!) {\n question(id: $questionId) {\n id\n questionId\n conditionId\n ancillaryData\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n activeAssertion {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n }\n assertions {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n settledAt\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_QUESTIONS = gql`\n query GetQuestions($first: Int = 100, $skip: Int = 0) {\n questions(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n questionId\n conditionId\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n market {\n marketId\n question\n status\n }\n activeAssertion {\n assertionId\n proposedOutcome\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\n// ============================================\n// Market Groups\n// ============================================\n\nexport const GET_MARKET_GROUPS = gql`\n query GetMarketGroups($venueId: BigInt, $first: Int = 100, $skip: Int = 0) {\n marketGroups(\n where: { venue_: { venueId: $venueId } }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n reward\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP = gql`\n query GetMarketGroup($groupId: BigInt!) {\n marketGroups(where: { groupId: $groupId }) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n createdAtBlock\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_GROUP_MARKETS = gql`\n query GetGroupMarkets($groupId: BigInt!, $first: Int = 100, $skip: Int = 0) {\n markets(\n where: { groupId: $groupId }\n first: $first\n skip: $skip\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n groupId\n marketGroupItem {\n marketName\n isPlaceholder\n createdAt\n activatedAt\n }\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n createdAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP_ITEM = gql`\n query GetMarketGroupItem($marketId: BigInt!) {\n marketGroupItems(where: { market_: { marketId: $marketId } }) {\n id\n marketName\n isPlaceholder\n market {\n id\n marketId\n question\n status\n }\n marketGroup {\n id\n groupId\n marketQuestion\n }\n createdAt\n activatedAt\n }\n }\n`;\n\n// ============================================\n// Unified Market Feed (Polymarket-style)\n// ============================================\n\n/**\n * Get unified feed of standalone markets + market groups\n * This query fetches both types in a single request for efficient homepage display\n * Frontend should merge and sort the results\n */\nexport const GET_UNIFIED_MARKET_FEED = gql`\n query GetUnifiedMarketFeed(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n # Pricing data\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n # Include child markets with their prices (no status filter — use isPlaceholder to filter)\n markets(\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n # Pricing data for probability calculation\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n # Market group item metadata\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — one row per (venue, seriesKey)\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get unified feed sorted by volume (most popular)\n */\nexport const GET_UNIFIED_MARKET_FEED_BY_VOLUME = gql`\n query GetUnifiedMarketFeedByVolume(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets sorted by volume (excluding price series members)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n }\n\n # Market groups\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — venue-scoped, only those with an active current market\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n// ============================================\n// Cross-Venue Queries (Protocol App)\n// ============================================\n\n/**\n * Get all markets across all venues (no venue filter)\n * Used by the protocol app's global market explorer\n */\nexport const GET_ALL_MARKETS_FEED = gql`\n query GetAllMarketsFeed($first: Int = 50, $skip: Int = 0) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets(\n where: { status_not: \"Draft\" }\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get all markets across all venues sorted by volume\n */\nexport const GET_ALL_MARKETS_FEED_BY_VOLUME = gql`\n query GetAllMarketsFeedByVolume($first: Int = 50, $skip: Int = 0) {\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues, sorted by volume of current market\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get a single PriceMarketSeries with all its member markets, ordered by closeTime.\n * Used by the market detail page to render the time-button navigation strip.\n */\nexport const GET_PRICE_MARKET_SERIES = gql`\n query GetPriceMarketSeries($venueId: BigInt!, $seriesKey: String!) {\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, seriesKey: $seriesKey }\n first: 1\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n }\n venue {\n id\n venueId\n name\n }\n markets(first: 1000, orderBy: marketId, orderDirection: asc) {\n id\n marketId\n question\n status\n resolvedOutcome\n outcomes\n priceMarket {\n openTime\n closeTime\n resolved\n outcome\n finalPrice\n strikePrice\n }\n }\n }\n }\n`;\n\n/**\n * Get recent trades across all venues (for activity feed / ticker)\n */\nexport const GET_RECENT_TRADES = gql`\n query GetRecentTrades($first: Int = 20, $skip: Int = 0) {\n trades(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n question\n outcomes\n venue {\n venueId\n name\n }\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\n/**\n * Get recently created markets across all venues\n */\nexport const GET_RECENT_MARKETS = gql`\n query GetRecentMarkets($first: Int = 20, $skip: Int = 0) {\n markets(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n where: { status_not: \"Draft\" }\n ) {\n id\n marketId\n question\n outcomes\n status\n totalVolume\n uniqueTraders\n createdAt\n venue {\n venueId\n name\n }\n creator {\n address\n }\n }\n }\n`;\n\n// ============================================\n// Trader Analytics Queries\n// ============================================\n\nexport const GET_TRADER_PROFILE = gql`\n query GetTraderProfile($address: ID!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n totalMarkets\n totalMarketGroups\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TRADER_POSITIONS = gql`\n query GetTraderPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_CLOSED_POSITIONS = gql`\n query GetTraderClosedPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_FILLS = gql`\n query GetTraderFills(\n $trader: String!\n $first: Int = 50\n $skip: Int = 0\n ) {\n fills(\n where: { trader: $trader }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n outcome\n side\n tick\n amount\n cost\n fees\n tradeType\n avgPrice\n timestamp\n blockNumber\n transactionHash\n market {\n id\n marketId\n question\n outcomes\n tickSize\n status\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_LEADERBOARD = gql`\n query GetLeaderboard(\n $orderBy: User_orderBy = totalVolume\n $orderDirection: OrderDirection = desc\n $first: Int = 50\n $skip: Int = 0\n ) {\n users(\n where: { totalTradeCount_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n address\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_MARKET_TOP_HOLDERS = gql`\n query GetMarketTopHolders(\n $marketId: String!\n $first: Int = 20\n ) {\n traderPositions(\n where: { market: $marketId, quantity_gt: \"0\" }\n first: $first\n orderBy: quantity\n orderDirection: desc\n ) {\n id\n trader {\n id\n address\n }\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n }\n }\n`;\n","import type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { gql } from 'graphql-request';\nimport { BaseModule } from './base';\nimport { calculateChancePercent } from '../utils/conversions';\n\n/**\n * Market lifecycle statuses indexed by the subgraph. Mirrors the on-chain\n * market state machine.\n */\nexport type MarketStatus = 'Draft' | 'Active' | 'Resolved' | 'Invalid';\n\nconst ALL_MARKET_STATUSES: MarketStatus[] = ['Draft', 'Active', 'Resolved', 'Invalid'];\nimport {\n GET_VENUES,\n GET_MARKETS,\n GET_MARKETS_WITH_PRICING,\n GET_MARKET,\n GET_TRADES,\n GET_ORDERS,\n GET_USER,\n GET_TOP_OF_BOOK,\n GET_PROTOCOL_STATS,\n GET_MARKET_GROUPS,\n GET_MARKET_GROUP,\n GET_GROUP_MARKETS,\n GET_MARKET_GROUP_ITEM,\n GET_UNIFIED_MARKET_FEED,\n GET_UNIFIED_MARKET_FEED_BY_VOLUME,\n GET_PRICE_MARKET_SERIES,\n GET_ALL_MARKETS_FEED,\n GET_ALL_MARKETS_FEED_BY_VOLUME,\n GET_RECENT_TRADES,\n GET_RECENT_MARKETS,\n GET_CHART_TRADES,\n GET_CHART_TRADES_ALL,\n GET_TRADER_PROFILE,\n GET_TRADER_POSITIONS,\n GET_TRADER_CLOSED_POSITIONS,\n GET_TRADER_FILLS,\n GET_LEADERBOARD,\n GET_MARKET_TOP_HOLDERS,\n} from '../subgraph/queries';\n\nexport class PublicModule extends BaseModule {\n /**\n * Get all venues\n */\n async getVenues(params?: {\n first?: number;\n skip?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n }) {\n return this.subgraph.request(GET_VENUES, {\n first: params?.first || 100,\n skip: params?.skip || 0,\n orderBy: params?.orderBy || 'createdAt',\n orderDirection: params?.orderDirection || 'desc',\n });\n }\n\n /**\n * Get markets for a venue\n */\n async getMarkets(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get markets with pricing data (last trade prices + statistics)\n *\n * @param params.search Optional case-insensitive substring match against the\n * market `question` field. Empty string matches all markets.\n * @param params.statuses Optional list of market statuses to include. Omit\n * to include all statuses (Draft, Active, Resolved, Invalid).\n */\n async getMarketsWithPricing(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS_WITH_PRICING, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market by ID\n */\n async getMarket(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET, {\n marketId: marketId.toString(),\n });\n return response.markets[0] || null;\n }\n\n /**\n * Get trade history for a market\n */\n async getTradeHistory(params: {\n marketId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADES, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trade data optimized for price charting.\n * Supports time-window filtering and higher limits.\n */\n async getChartTrades(params: {\n marketId: bigint;\n timestampGte?: bigint;\n first?: number;\n skip?: number;\n }) {\n const variables: Record<string, any> = {\n marketId: params.marketId.toString(),\n first: params.first || 1000,\n skip: params.skip || 0,\n };\n\n // Use a separate query without timestamp_gte filter for ALL timeframe\n // The subgraph treats timestamp_gte: null as a filter that matches nothing\n if (params.timestampGte !== undefined) {\n variables.timestampGte = params.timestampGte.toString();\n return this.subgraph.request<any>(GET_CHART_TRADES, variables);\n }\n\n return this.subgraph.request<any>(GET_CHART_TRADES_ALL, variables);\n }\n\n /**\n * Get orders for a market\n */\n async getOrders(params: { marketId: bigint; first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_ORDERS, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get user data by address\n */\n async getUser(address: string) {\n return this.subgraph.request<any>(GET_USER, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get top of book for a market\n */\n async getTopOfBook(marketId: bigint) {\n return this.subgraph.request<any>(GET_TOP_OF_BOOK, {\n marketId: marketId.toString(),\n });\n }\n\n /**\n * Get protocol-wide statistics\n */\n async getProtocolStats() {\n return this.subgraph.request<any>(GET_PROTOCOL_STATS);\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Get market groups for a venue\n */\n async getMarketGroups(params: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKET_GROUPS, {\n venueId: params.venueId?.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group by ID\n */\n async getMarketGroup(groupId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP, {\n groupId: groupId.toString(),\n });\n return response.marketGroups[0] || null;\n }\n\n /**\n * Get all markets in a group\n */\n async getGroupMarkets(params: {\n groupId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_GROUP_MARKETS, {\n groupId: params.groupId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP_ITEM, {\n marketId: marketId.toString(),\n });\n return response.marketGroupItems[0] || null;\n }\n\n // ============================================\n // Unified Market Feed (Polymarket-style)\n // ============================================\n\n /**\n * Get unified feed of standalone markets + market groups\n * Returns both types in a single query, similar to Polymarket's homepage\n *\n * @param params.venueId - Optional venue filter\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - Sort order: 'created' (newest first) or 'volume' (most popular)\n *\n * @returns Object with standaloneMarkets and marketGroups arrays\n */\n async getUnifiedMarketFeed(params?: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n\n if (sortBy === 'volume') {\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED_BY_VOLUME, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Merge and sort unified feed results\n * Combines standaloneMarkets, marketGroups, and priceMarketSeries into a single sorted array.\n * Each row in the merged feed carries a `type` discriminator: 'standalone' | 'group' | 'series'.\n */\n mergeAndSortFeed(\n feedData: any,\n sortBy: 'created' | 'volume' = 'created',\n limit?: number,\n ): Array<any> {\n const standalone = (feedData.standaloneMarkets || []).map((m: any) => ({\n ...m,\n type: 'standalone' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(m.totalVolume || '0')\n : BigInt(m.createdAt || '0'),\n }));\n\n const groups = (feedData.marketGroups || []).map((g: any) => {\n // Calculate total volume for group (sum of all child markets)\n const totalVolume =\n g.markets?.reduce(\n (sum: bigint, m: any) => sum + BigInt(m.totalVolume || '0'),\n 0n,\n ) || 0n;\n\n return {\n ...g,\n type: 'group' as const,\n totalVolume: totalVolume.toString(),\n sortValue:\n sortBy === 'volume' ? totalVolume : BigInt(g.createdAt || '0'),\n };\n });\n\n // Price market series rows. Sort key is the current market's volume when sorting\n // by volume, otherwise the series' updatedAt (which is bumped on each new window).\n const series = (feedData.priceMarketSeries || []).map((s: any) => ({\n ...s,\n type: 'series' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(s.currentMarket?.totalVolume || '0')\n : BigInt(s.updatedAt || s.createdAt || '0'),\n }));\n\n // Merge and sort\n const merged = [...standalone, ...groups, ...series].sort((a, b) => {\n // Sort descending (highest/newest first)\n return a.sortValue > b.sortValue ? -1 : 1;\n });\n\n // Apply limit if specified\n return limit ? merged.slice(0, limit) : merged;\n }\n\n /**\n * Get a PriceMarketSeries with all its member markets.\n *\n * Used by the market detail page to render the time-button navigation strip\n * showing past, current, and upcoming windows for the same asset+interval.\n *\n * @param params.venueId - Venue the series belongs to\n * @param params.seriesKey - Series key, e.g. \"btc-updown-5m\"\n * @returns The series with `markets` array, or null if not found\n */\n async getPriceMarketSeries(params: {\n venueId: bigint;\n seriesKey: string;\n }): Promise<any | null> {\n const response = await this.subgraph.request<any>(GET_PRICE_MARKET_SERIES, {\n venueId: params.venueId.toString(),\n seriesKey: params.seriesKey,\n });\n return response.priceMarketSeries?.[0] || null;\n }\n\n /**\n * Helper: extract the seriesKey from a market's tags.\n *\n * A market belongs to a price series iff its tags contain both \"price-market\"\n * and a \"series:<key>\" tag. Returns the key (without prefix) or null.\n */\n extractSeriesKey(tags: string[] | undefined | null): string | null {\n if (!tags) return null;\n let hasPriceMarketTag = false;\n let seriesKey: string | null = null;\n for (const t of tags) {\n if (t === 'price-market') hasPriceMarketTag = true;\n else if (t.startsWith('series:')) seriesKey = t.slice('series:'.length);\n }\n return hasPriceMarketTag ? seriesKey : null;\n }\n\n /**\n * Calculate probability for a market using mark price waterfall.\n * Returns probability as a decimal string (e.g., \"0.65\" for 65%)\n *\n * Uses Polymarket-style pricing: implied midpoint → last trade → default 50%.\n *\n * @param market - Market object from subgraph (with topOfBook and timestamp fields)\n * @returns Probability string or null if no data available\n */\n calculateMarketProbability(market: any): string | null {\n if (!market.tickSize) return null;\n\n const chance = calculateChancePercent(market);\n if (chance === 50 && !market.lastPriceTick_0 && !market.lastPriceTick_1) {\n return null; // Truly no data — keep null for \"no probability\" display\n }\n return (chance / 100).toFixed(2);\n }\n\n /**\n * Format market group for display (Polymarket-style)\n * Enriches child markets with calculated probabilities and formats\n */\n formatMarketGroupForDisplay(group: any) {\n const outcomes = (group.markets || [])\n .filter((m: any) => !m.marketGroupItem?.isPlaceholder)\n .map((m: any) => ({\n marketId: m.marketId,\n name: m.marketGroupItem?.marketName || 'Unknown',\n question: m.question,\n probability: this.calculateMarketProbability(m),\n status: m.status,\n totalVolume: m.totalVolume,\n }))\n .sort((a: any, b: any) => {\n // Sort by probability (highest first)\n const probA = parseFloat(a.probability || '0');\n const probB = parseFloat(b.probability || '0');\n return probB - probA;\n });\n\n return {\n type: 'group' as const,\n groupId: group.groupId,\n marketQuestion: group.marketQuestion,\n status: group.status,\n totalMarkets: group.totalMarkets,\n activeMarketCount: group.activeMarketCount,\n resolvedMarketId: group.resolvedMarketId,\n createdAt: group.createdAt,\n outcomes,\n venue: group.venue,\n creator: group.creator,\n };\n }\n\n // ============================================\n // Cross-Venue Queries (Protocol App)\n // ============================================\n\n /**\n * Get all markets across all venues (no venue filter)\n * Returns standaloneMarkets + marketGroups for global market explorer\n *\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - 'created' (newest) or 'volume' (most popular)\n */\n async getAllMarketsFeed(params?: {\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n const query =\n sortBy === 'volume'\n ? GET_ALL_MARKETS_FEED_BY_VOLUME\n : GET_ALL_MARKETS_FEED;\n\n return this.subgraph.request<any>(query, {\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top venues by volume\n */\n async getTopVenues(first = 10) {\n return this.subgraph.request(GET_VENUES, {\n first,\n skip: 0,\n orderBy: 'totalVolume',\n orderDirection: 'desc',\n });\n }\n\n /**\n * Get recent trades across all venues (for activity feed / ticker)\n */\n async getRecentTrades(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_TRADES, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get recently created markets across all venues\n */\n async getRecentMarkets(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_MARKETS, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n // ============================================\n // Trader Analytics\n // ============================================\n\n /**\n * Get trader profile with aggregate stats\n */\n async getTraderProfile(address: string) {\n return this.subgraph.request<any>(GET_TRADER_PROFILE, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get trader's open positions (quantity > 0) with P&L data\n */\n async getTraderPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's closed positions (quantity = 0) with realized P&L\n */\n async getTraderClosedPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_CLOSED_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's fill history (activity feed)\n */\n async getTraderTrades(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_FILLS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get leaderboard (top traders sorted by volume or P&L)\n */\n async getLeaderboard(params?: {\n orderBy?: 'totalVolume' | 'totalRealizedPnL' | 'totalTradeCount';\n orderDirection?: 'asc' | 'desc';\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_LEADERBOARD, {\n orderBy: params?.orderBy || 'totalVolume',\n orderDirection: params?.orderDirection || 'desc',\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top holders for a market (by position size)\n */\n async getMarketTopHolders(params: {\n marketId: string;\n first?: number;\n }) {\n return this.subgraph.request<any>(GET_MARKET_TOP_HOLDERS, {\n marketId: params.marketId,\n first: params.first || 20,\n });\n }\n\n // ============================================\n // Raw subgraph access\n // ============================================\n\n /**\n * Run an arbitrary GraphQL query against the same subgraph endpoint the SDK\n * uses. Lets external services (e.g. cron workers) share the SDK's\n * subgraph connection without instantiating their own GraphQLClient.\n */\n async raw<T = unknown>(\n query: string | TypedDocumentNode<T>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.subgraph.request<T>(query, variables);\n }\n\n // ============================================\n // Price Markets\n // ============================================\n\n /**\n * Find an unresolved PriceMarket matching (feedId, closeTime) created by\n * `creator`. Returns null when no match exists. Used as a create-idempotency\n * check by price-market bots before submitting a new market.\n */\n async findPriceMarketByFeedAndCloseTime(params: {\n pythFeedId: `0x${string}`;\n closeTime: bigint;\n creator: `0x${string}`;\n }): Promise<{ marketId: bigint } | null> {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{ id: string; market: { marketId: string } }>;\n }>(FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME, {\n feedId: params.pythFeedId.toLowerCase(),\n closeTime: params.closeTime.toString(),\n creator: params.creator.toLowerCase(),\n });\n const hit = data.priceMarkets[0];\n return hit ? { marketId: BigInt(hit.market.marketId) } : null;\n }\n\n /**\n * List unresolved PriceMarkets created by `creator` whose closeTime is in\n * the past and whose parent Market is still Active, ordered by closeTime\n * ascending. Used by resolution cron workers to find markets that need\n * settling.\n */\n async findExpiredOpenPriceMarkets(params: {\n creator: `0x${string}`;\n now: bigint;\n first?: number;\n }): Promise<\n Array<{ marketId: bigint; feedId: `0x${string}`; closeTime: bigint }>\n > {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{\n id: string;\n feedId: string;\n closeTime: string;\n market: { marketId: string };\n }>;\n }>(FIND_EXPIRED_OPEN_PRICE_MARKETS, {\n creator: params.creator.toLowerCase(),\n now: params.now.toString(),\n first: params.first ?? 100,\n });\n return data.priceMarkets.map((p) => ({\n marketId: BigInt(p.market.marketId),\n feedId: p.feedId as `0x${string}`,\n closeTime: BigInt(p.closeTime),\n }));\n }\n}\n\nconst FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME = gql`\n query FindPriceMarketByFeedAndCloseTime(\n $feedId: Bytes!\n $closeTime: BigInt!\n $creator: Bytes!\n ) {\n priceMarkets(\n where: {\n feedId: $feedId\n closeTime: $closeTime\n resolved: false\n market_: { creator: $creator }\n }\n first: 1\n ) {\n id\n market {\n marketId\n }\n }\n }\n`;\n\nconst FIND_EXPIRED_OPEN_PRICE_MARKETS = gql`\n query FindExpiredOpenPriceMarkets(\n $creator: Bytes!\n $now: BigInt!\n $first: Int!\n ) {\n priceMarkets(\n where: {\n resolved: false\n closeTime_lt: $now\n market_: { creator: $creator, status: Active }\n }\n first: $first\n orderBy: closeTime\n orderDirection: asc\n ) {\n id\n feedId\n closeTime\n market {\n marketId\n }\n }\n }\n`;\n","import { BaseModule } from './base';\nimport { ERC20ABI } from '../contracts';\nimport type { Address } from 'viem';\n\nexport class TokenModule extends BaseModule {\n /**\n * Approve a spender to spend tokens\n */\n async approve(token: Address, spender: Address, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'approve',\n args: [spender, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get allowance\n */\n async getAllowance(token: Address, owner: Address, spender: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'allowance',\n args: [owner, spender],\n });\n }\n\n /**\n * Get balance\n */\n async getBalance(token: Address, owner: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'balanceOf',\n args: [owner],\n });\n }\n\n /**\n * Get token decimals\n */\n async getDecimals(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'decimals',\n });\n }\n\n /**\n * Get token symbol\n */\n async getSymbol(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'symbol',\n });\n }\n\n /**\n * Get token name\n */\n async getName(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'name',\n });\n }\n}\n","import { BaseModule } from './base';\nimport {\n ResolutionFacetABI,\n MarketsFacetABI,\n ProtocolFacetABI,\n ConditionalTokensABI,\n UmaOracleABI,\n} from '../contracts';\nimport { erc20Abi } from 'viem';\nimport type { Address } from 'viem';\n\n/**\n * UMA Module - Handles oracle assertion and resolution operations\n *\n * Workflow:\n * 1. Market is created → gets a questionId\n * 2. After resolutionTime, anyone can assert an outcome → gets assertionId\n * 3. After liveness period, anyone can settle the assertion\n * 4. After settlement (if truthful), anyone can report resolution to CTF\n */\nexport class UmaModule extends BaseModule {\n /**\n * Assert an outcome for a market question\n *\n * @param params.marketId - The market ID to assert on\n * @param params.outcome - The outcome string (e.g., \"YES\", \"NO\")\n * @param params.autoApprove - Automatically approve bond token if needed (default: true)\n *\n * @returns Transaction hash\n */\n async assertMarketOutcome(params: {\n marketId: bigint;\n outcome: string;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n // Step 1: Get market registry data to find questionId\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [params.marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n\n // Step 2: Get effective bond (max of requiredBond and UMA's minimumBond)\n const { effectiveBond, currency } = await this.getEffectiveBond(params.marketId);\n const bondAmount = effectiveBond;\n\n // Step 3: Check current allowance (approve Diamond, which delegates to ResolutionFacet)\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n // Step 4: Approve if needed\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [this.config.diamondAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n const newAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n if (newAllowance < bondAmount) {\n throw new Error(\n `Approval failed to update. New allowance: ${newAllowance.toString()}, Required: ${bondAmount.toString()}`\n );\n }\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond token allowance. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}. Please approve the Diamond (${\n this.config.diamondAddress\n }) to spend bond tokens.`\n );\n }\n\n // Step 5: Check balance\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond token balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n // Step 6: Assert the outcome via Diamond\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'assertMarketOutcome',\n args: [questionId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the effective bond for a market, accounting for UMA's minimum bond.\n * The contract uses max(requiredBond, oo.getMinimumBond(currency)).\n */\n async getEffectiveBond(marketId: bigint): Promise<{\n requiredBond: bigint;\n minimumBond: bigint;\n effectiveBond: bigint;\n currency: Address;\n }> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const requiredBond = BigInt(oracleData.requiredBond);\n const currency = oracleData.currency as Address;\n\n const umaOracle = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n\n const minimumBond = (await this.publicClient.readContract({\n address: umaOracle,\n abi: UmaOracleABI,\n functionName: 'getMinimumBond',\n args: [currency],\n })) as bigint;\n\n const effectiveBond = requiredBond > minimumBond ? requiredBond : minimumBond;\n\n return { requiredBond, minimumBond, effectiveBond, currency };\n }\n\n /**\n * Settle an assertion after the liveness period\n */\n async settleAssertion(assertionId: `0x${string}`) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'settleAssertion',\n args: [assertionId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the UMA Optimistic Oracle V3 address for the active Diamond.\n */\n async getUmaOracleAddress(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n }\n\n /**\n * Dispute an active assertion directly on the UMA Optimistic Oracle V3.\n *\n * The dispute escalates the assertion to UMA's DVM, which arbitrates the\n * outcome via tokenholder vote. The disputer must post a bond equal to the\n * asserter's bond — the winner is reimbursed and receives a share of the\n * loser's bond.\n *\n * @param params.assertionId - The active assertionId to dispute\n * @param params.autoApprove - Approve the bond currency to the oracle if needed (default: true)\n *\n * @returns Transaction hash\n */\n async disputeAssertion(params: {\n assertionId: `0x${string}`;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n const oracleAddress = await this.getUmaOracleAddress();\n\n // Read assertion to get currency + bond amount required to dispute.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'getAssertion',\n args: [params.assertionId],\n });\n\n const currency = assertion.currency as Address;\n const bondAmount = BigInt(assertion.bond);\n\n if (assertion.disputer !== '0x0000000000000000000000000000000000000000') {\n throw new Error('Assertion has already been disputed');\n }\n\n if (assertion.settled) {\n throw new Error('Assertion is already settled');\n }\n\n const currentTime = Math.floor(Date.now() / 1000);\n if (currentTime >= Number(assertion.expirationTime)) {\n throw new Error('Liveness period has expired — assertion can no longer be disputed');\n }\n\n // Approve oracle to pull bond from disputer if needed.\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, oracleAddress],\n })) as bigint;\n\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [oracleAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond currency allowance for oracle. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}.`\n );\n }\n\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond currency balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'disputeAssertion',\n args: [params.assertionId, accountAddress],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Report resolution after UMA settlement\n */\n async reportResolution(params: { marketId: bigint; outcome: string }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'reportResolution',\n args: [params.marketId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market has been resolved in CTF\n */\n async getResolutionStatus(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n if (payoutDenominator === 0n) {\n return {\n resolved: false,\n winningOutcome: null,\n payouts: [],\n };\n }\n\n const outcomeSlotCount = Number(oracleData.outcomeSlotCount || 2);\n const payouts: bigint[] = [];\n\n for (let i = 0; i < outcomeSlotCount; i++) {\n const payout = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, BigInt(i)],\n })) as bigint;\n payouts.push(payout);\n }\n\n let winningOutcome: string | null = null;\n if (outcomeSlotCount === 2) {\n if (payouts[0] > 0n && payouts[1] === 0n) {\n winningOutcome = 'YES';\n } else if (payouts[1] > 0n && payouts[0] === 0n) {\n winningOutcome = 'NO';\n } else if (payouts[0] === payouts[1]) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n resolved: true,\n winningOutcome,\n payouts,\n payoutDenominator,\n };\n }\n\n /**\n * Redeem winning outcome tokens for collateral\n */\n async redeemWinnings(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n const collateralToken = tradingData.collateralToken as Address;\n\n const indexSets = [1, 2];\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'redeemPositions',\n args: [\n collateralToken,\n '0x0000000000000000000000000000000000000000000000000000000000000000' as `0x${string}`,\n conditionId,\n indexSets,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the collateral token address for a market\n */\n async getCollateralToken(marketId: bigint): Promise<Address> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n return tradingData.collateralToken as Address;\n }\n\n /**\n * Get question/oracle data for a market\n */\n async getQuestionData(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n return {\n questionId: oracleData.questionId as `0x${string}`,\n conditionId: oracleData.conditionId as `0x${string}`,\n outcomeSlotCount: BigInt(oracleData.outcomeSlotCount),\n currency: oracleData.currency as Address,\n reward: BigInt(oracleData.reward),\n requiredBond: BigInt(oracleData.requiredBond),\n liveness: BigInt(oracleData.liveness),\n initialized: oracleData.initialized as boolean,\n activeAssertionId: oracleData.activeAssertionId as `0x${string}`,\n ancillaryData: oracleData.ancillaryData as `0x${string}`,\n };\n }\n\n /**\n * Get assertion data\n */\n async getAssertionData(assertionId: `0x${string}`) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'getAssertionData',\n args: [assertionId],\n });\n\n return {\n assertionId: data.assertionId as `0x${string}`,\n questionId: data.questionId as `0x${string}`,\n outcome: data.outcome as string,\n settled: data.settled as boolean,\n };\n }\n\n /**\n * Get assertion details from UMA Oracle including expiration time\n */\n async getAssertionDetails(assertionId: `0x${string}`) {\n // Get the UMA Oracle address from Diamond\n const oracleAddress = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n });\n\n // Query the oracle directly for assertion details\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress as `0x${string}`,\n abi: [\n {\n name: 'getAssertion',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'assertionId', type: 'bytes32' }],\n outputs: [\n {\n name: 'assertion',\n type: 'tuple',\n components: [\n {\n name: 'escalationManagerSettings',\n type: 'tuple',\n components: [\n { name: 'arbitrateViaEscalationManager', type: 'bool' },\n { name: 'discardOracle', type: 'bool' },\n { name: 'validateDisputers', type: 'bool' },\n { name: 'assertingCaller', type: 'address' },\n { name: 'escalationManager', type: 'address' },\n ],\n },\n { name: 'asserter', type: 'address' },\n { name: 'assertionTime', type: 'uint64' },\n { name: 'settled', type: 'bool' },\n { name: 'currency', type: 'address' },\n { name: 'expirationTime', type: 'uint64' },\n { name: 'settlementResolution', type: 'bool' },\n { name: 'domainId', type: 'bytes32' },\n { name: 'identifier', type: 'bytes32' },\n { name: 'bond', type: 'uint256' },\n { name: 'callbackRecipient', type: 'address' },\n { name: 'disputer', type: 'address' },\n ],\n },\n ],\n },\n ],\n functionName: 'getAssertion',\n args: [assertionId],\n });\n\n const expirationTime = Number(assertion.expirationTime);\n const currentTime = Math.floor(Date.now() / 1000);\n\n return {\n asserter: assertion.asserter as `0x${string}`,\n assertionTime: Number(assertion.assertionTime),\n settled: assertion.settled as boolean,\n expirationTime,\n canSettle: currentTime >= expirationTime,\n disputer: assertion.disputer as `0x${string}`,\n isDisputed: assertion.disputer !== '0x0000000000000000000000000000000000000000',\n currency: assertion.currency as Address,\n bond: BigInt(assertion.bond),\n };\n }\n\n /**\n * Get comprehensive market status for UMA resolution\n */\n async getMarketStatus(marketId: bigint) {\n // Get market registry data\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n const marketStatus = Number(registryData.status); // 0=Draft, 1=Active, 2=Resolved\n\n // Get question/oracle data\n const questionData = await this.getQuestionData(marketId);\n const conditionId = questionData.conditionId;\n\n // Check if there's an active assertion\n const hasAssertion =\n questionData.activeAssertionId !==\n '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n let assertionData = null;\n let isSettled = false;\n\n if (hasAssertion) {\n assertionData = await this.getAssertionData(\n questionData.activeAssertionId\n );\n isSettled = assertionData.settled;\n }\n\n // Check if resolution has been reported to CTF\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n const isReportedToCTF = payoutDenominator > 0n;\n\n let winningOutcome: string | null = null;\n if (isReportedToCTF) {\n const payout0 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 0n],\n })) as bigint;\n\n const payout1 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 1n],\n })) as bigint;\n\n if (payout0 > 0n && payout1 === 0n) {\n winningOutcome = 'YES';\n } else if (payout1 > 0n && payout0 === 0n) {\n winningOutcome = 'NO';\n } else if (payout0 === payout1) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n marketId,\n questionId,\n marketStatus:\n marketStatus === 0\n ? 'Draft'\n : marketStatus === 1\n ? 'Active'\n : 'Resolved',\n assertion: {\n hasAssertion,\n assertionId: hasAssertion ? questionData.activeAssertionId : null,\n outcome: assertionData?.outcome || null,\n settled: isSettled,\n },\n question: {\n requiredBond: questionData.requiredBond,\n currency: questionData.currency,\n reward: questionData.reward,\n liveness: questionData.liveness,\n },\n resolution: {\n reportedToCTF: isReportedToCTF,\n winningOutcome,\n },\n canAssert: !hasAssertion && marketStatus === 1,\n canSettle: hasAssertion && !isSettled,\n canReportResolution: hasAssertion && isSettled && !isReportedToCTF,\n isResolved: isReportedToCTF,\n };\n }\n\n /**\n * Get the questionId for a market\n */\n async getQuestionId(marketId: bigint): Promise<`0x${string}`> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n return registryData.questionId as `0x${string}`;\n }\n}\n","import { BaseModule } from './base';\nimport { AccessControlFacetABI, WhitelistAccessControlABI } from '../contracts';\n\nexport class AccessControlModule extends BaseModule {\n // ---- Factory (deploy standalone AC contracts via Diamond) ----\n\n /**\n * Deploy a WhitelistAccessControl contract. Caller becomes the owner.\n * @returns Transaction hash. Use receipt logs to extract the deployed contract address.\n */\n async deployWhitelist() {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployWhitelistAC',\n args: [],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy an NFTGatedAccessControl contract.\n * @param params.nftContract - The NFT contract address (ERC-721 or ERC-1155).\n * @param params.isERC1155 - True if the NFT contract is ERC-1155, false for ERC-721.\n * @param params.tokenId - The token ID to check (only used for ERC-1155, pass 0n for ERC-721).\n */\n async deployNFTGated(params: {\n nftContract: `0x${string}`;\n isERC1155: boolean;\n tokenId: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployNFTGatedAC',\n args: [params.nftContract, params.isERC1155, params.tokenId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy a TokenGatedAccessControl contract.\n * @param params.token - The ERC-20 token contract address.\n * @param params.minBalance - The minimum token balance required for access.\n */\n async deployTokenGated(params: {\n token: `0x${string}`;\n minBalance: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployTokenGatedAC',\n args: [params.token, params.minBalance],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Configuration (market-level AC overrides) ----\n\n /**\n * Set a trading access control contract for a specific market. Venue operator only.\n */\n async setMarketTradingAC(params: {\n marketId: bigint;\n acContract: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'setMarketTradingAccessControl',\n args: [params.marketId, params.acContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove the trading access control override for a specific market. Venue operator only.\n */\n async removeMarketTradingAC(params: { marketId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'removeMarketTradingAccessControl',\n args: [params.marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Queries (read via Diamond) ----\n\n /**\n * Check if a user can trade on a specific market (checks market-level then venue-level fallback).\n */\n async canTradeOnMarket(params: {\n user: `0x${string}`;\n marketId: bigint;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'canTradeOnMarket',\n args: [params.user, params.marketId],\n }) as Promise<boolean>;\n }\n\n /**\n * Get the market-level trading AC contract address (address(0) if not set).\n */\n async getMarketTradingAC(params: {\n marketId: bigint;\n }): Promise<`0x${string}`> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'getMarketTradingAccessControl',\n args: [params.marketId],\n }) as Promise<`0x${string}`>;\n }\n\n // ---- Whitelist management (direct contract calls, not through Diamond) ----\n\n /**\n * Add users to a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async addToWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'addToWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove users from a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async removeFromWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'removeFromWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user is whitelisted on a specific WhitelistAccessControl contract.\n */\n async isWhitelisted(params: {\n acContract: `0x${string}`;\n user: `0x${string}`;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'isAllowed',\n args: [params.user],\n }) as Promise<boolean>;\n }\n}\n","import { BaseModule } from './base';\nimport {\n PriceMarketFacetABI,\n PythResolutionFacetABI,\n VenueFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { isValidTickSize, type MarketQuestion } from '../utils/conversions';\n\nconst PYTH_HERMES_BASE = 'https://hermes.pyth.network';\n\nconst PYTH_GET_UPDATE_FEE_ABI = [\n {\n name: 'getUpdateFee',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'updateData', type: 'bytes[]' }],\n outputs: [{ name: 'feeAmount', type: 'uint256' }],\n },\n] as const;\n\nexport enum FeedProvider {\n PYTH = 0,\n CHAINLINK = 1,\n}\n\nexport interface PriceMarketData {\n feedId: `0x${string}`;\n feedProvider: FeedProvider;\n openTime: bigint;\n closeTime: bigint;\n priceExpo: number;\n finalPrice: bigint;\n resolutionWindow: bigint;\n resolved: boolean;\n /**\n * Reference price for resolution.\n * - Explicit-strike markets: set at creation, never changes.\n * - Deferred Up/Down markets: 0 at creation, populated at resolution with the\n * open price captured from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n */\n strikePrice: bigint;\n /**\n * Pyth VAA publishTime of the open-price capture (seconds since epoch).\n * - Explicit-strike markets: always 0 (no open price is captured).\n * - Deferred Up/Down markets: 0 until resolution, then set to the open VAA's\n * publishTime.\n */\n openPriceTime: bigint;\n}\n\n/**\n * Latest Pyth price update plus the signed VAA's publishTime.\n * `fetchedAt` is the SDK-local unix timestamp (seconds) at fetch time.\n */\nexport interface PythUpdate {\n updateData: `0x${string}`[];\n publishTime: bigint;\n fetchedAt: bigint;\n}\n\n/**\n * Projected open price for a deferred Up/Down market that hasn't resolved yet.\n * Derived from the same Hermes VAA the on-chain resolver will pick.\n */\nexport interface ProjectedOpenPrice {\n /** Price extracted from the open-window Hermes VAA (Pyth feed-native units). */\n price: bigint;\n /** publishTime of the VAA (seconds since epoch). */\n publishTime: bigint;\n /** Pyth's price exponent for the feed (e.g. -8). Convenience for UI formatting. */\n expo: number;\n /**\n * `true` once `block.timestamp >= openTime + resolutionWindow` — past that point\n * every client querying Hermes the same way agrees on the same VAA and the\n * on-chain strike at resolution will equal this exact `price`. Before that,\n * the value is a best-effort projection that could shift slightly as Hermes\n * publishes new VAAs inside the window.\n */\n canonical: boolean;\n /** The market's openTime this projection corresponds to. */\n openTime: bigint;\n}\n\n/** Default cap for freshness helper retries. */\nconst DEFAULT_FRESH_MAX_AGE_SECONDS = 120;\nconst DEFAULT_FRESH_MAX_ATTEMPTS = 3;\n\nexport class PriceMarketModule extends BaseModule {\n /**\n * Create a Pyth-powered price market. Three shapes via one entry point:\n *\n * - **Immediate Up/Down** (`strikePrice = 0`, `openTime = 0` or omitted):\n * `openTime` is set to `block.timestamp` at creation; open price is\n * captured at resolution from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n *\n * - **Scheduled Up/Down** (`strikePrice = 0`, `openTime > now`):\n * Market exists from creation and is tradable. At `openTime` the open\n * price window begins; capture happens at resolution as above.\n *\n * - **Explicit strike** (`strikePrice > 0`): Above/Below market resolved\n * against the caller-supplied target. `openTime` is ignored and stored\n * as `block.timestamp`; no open-price capture occurs at resolution.\n *\n * Creation never touches Pyth — no VAA submission, no Pyth fee. The\n * resolver pays Pyth fees later when calling {@link resolvePyth}.\n *\n * @param params.venueId - The venue to create the market in\n * @param params.pythFeedId - Pyth price feed ID (e.g., ETH/USD)\n * @param params.strikePrice - Target price (0 = capture open at resolution)\n * @param params.openTime - When the market opens (0 = immediate / now)\n * @param params.closeTime - Absolute close timestamp (must be > effective openTime)\n * @param params.outcomes - Market outcome labels (e.g., [\"Up\", \"Down\"] or [\"Above\", \"Below\"])\n * @param params.tickSize - Price increment for the orderbook (1e15 or 1e16)\n * @param params.collateralToken - ERC20 collateral token address\n * @param params.question - Market question for ancillary data\n * @param params.liveness - UMA challenge period in seconds (0 = default)\n * @param params.tags - Optional tags for the market\n * @param params.resolutionWindow - Pyth timestamp tolerance in seconds (0 = default 60s, max 300s)\n */\n async createPyth(params: {\n venueId: bigint;\n pythFeedId: `0x${string}`;\n strikePrice?: bigint;\n openTime?: bigint;\n closeTime: bigint;\n outcomes?: string[];\n tickSize: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n liveness?: bigint;\n tags?: string[];\n resolutionWindow?: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const outcomes = params.outcomes ?? ['Up', 'Down'];\n\n const { encodedTags, ancillaryData } =\n await this._prepareCreationCommon(params, await this.getSignerAddress());\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'createPriceMarketPyth',\n args: [\n params.venueId,\n params.pythFeedId,\n params.strikePrice ?? BigInt(0),\n params.openTime ?? BigInt(0),\n params.closeTime,\n outcomes,\n params.tickSize,\n params.collateralToken,\n ancillaryData,\n params.liveness ?? BigInt(0),\n encodedTags,\n params.resolutionWindow ?? BigInt(0),\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Resolve a price market using Pyth.\n *\n * Anyone can call this after `closeTime`. For deferred Up/Down markets\n * (`strikePrice == 0`), the SDK fetches **two** Hermes VAAs — one for the\n * open window, one for the close window — and submits them together so the\n * on-chain facet can capture the open price and compare against the close\n * in a single transaction. For explicit-strike markets only the close VAA\n * is fetched.\n */\n async resolvePyth(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const pm = await this.get(marketId);\n\n if (pm.resolved) {\n throw new Error('Price market already resolved');\n }\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.closeTime) {\n throw new Error(\n `Close time not reached. Current: ${now.toString()}, CloseTime: ${pm.closeTime.toString()}`,\n );\n }\n\n const isDeferred = pm.strikePrice === BigInt(0);\n const windowSeconds = Number(pm.resolutionWindow);\n\n const closeVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.closeTime),\n windowSeconds,\n );\n\n let pythUpdateData: `0x${string}`[];\n if (isDeferred) {\n const openVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.openTime),\n windowSeconds,\n );\n pythUpdateData = [...openVAA, ...closeVAA];\n } else {\n pythUpdateData = closeVAA;\n }\n\n const pythAddress = await this.getPythContract();\n const pythFee = (await this.publicClient.readContract({\n address: pythAddress,\n abi: PYTH_GET_UPDATE_FEE_ABI,\n functionName: 'getUpdateFee',\n args: [pythUpdateData],\n })) as bigint;\n\n // Use at least 1 gwei to cover edge cases where getUpdateFee returns 0 via\n // eth_call but the actual tx requires non-zero value. Contract refunds excess.\n const valueSent = pythFee > BigInt(0) ? pythFee : BigInt(1_000_000_000);\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'resolvePriceMarketPyth',\n args: [marketId, pythUpdateData],\n account,\n value: valueSent,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market is a Pyth price market\n */\n async isPriceMarket(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'isPriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Check if a price market can be resolved (closeTime reached and not yet resolved).\n */\n async canResolve(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'canResolvePriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Get price market data\n */\n async get(marketId: bigint): Promise<PriceMarketData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'getPriceMarket',\n args: [marketId],\n });\n\n return {\n feedId: result[0] as `0x${string}`,\n feedProvider: Number(result[1]) as FeedProvider,\n openTime: BigInt(result[2]),\n closeTime: BigInt(result[3]),\n priceExpo: Number(result[4]),\n finalPrice: BigInt(result[5]),\n resolutionWindow: BigInt(result[6]),\n resolved: result[7] as boolean,\n strikePrice: BigInt(result[8]),\n openPriceTime: BigInt(result[9]),\n };\n }\n\n /**\n * Get the Pyth contract address configured on the Diamond\n */\n async getPythContract(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'getPythContract',\n })) as Address;\n }\n\n /**\n * Mark a stuck price market as Invalid and refund holders 50/50 via the CTF.\n * Permissionless: anyone can call this once `closeTime + 7 days` has elapsed.\n *\n * Use this for markets that never resolve via Pyth — e.g. the feed was\n * deprecated by the publisher, or Hermes had no in-window VAA at closeTime.\n * Reports payouts `[1, 1]` to the CTF, so every YES and every NO token\n * redeems for half the underlying collateral.\n *\n * Reverts on chain with `GracePeriodNotElapsed` if called too early.\n */\n async markInvalid(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'markPriceMarketInvalid',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Set the Pyth oracle contract address. Diamond owner only.\n */\n async setPythContract(pythContract: Address) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'setPythContract',\n args: [pythContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Private helpers ----\n\n /**\n * Shared pre-flight checks: creation fee allowance, ancillary data, tags\n */\n private async _prepareCreationCommon(\n params: {\n venueId: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n tags?: string[];\n },\n account: Address,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = venue.marketCreationFee;\n if (feeRequired > BigInt(0)) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account, this.config.diamondAddress],\n });\n\n if (allowance < feeRequired) {\n throw new Error(\n `Insufficient allowance for Market Creation Fee. Approved: ${allowance.toString()}, Required: ${feeRequired.toString()}.`,\n );\n }\n }\n\n const ancillaryData = this.formatAncillaryData(params.question);\n\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n return { encodedTags, ancillaryData };\n }\n\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n return stringToHex(data);\n }\n\n /**\n * Fetch the latest Pyth price update from Hermes — the bytes plus the\n * VAA's publishTime.\n *\n * Useful for UI projected-strike display: callers can render the current\n * Pyth price (and its publishTime) before a deferred market's open window\n * closes, then switch to the on-chain strike once resolution happens.\n */\n async fetchPythLatestUpdate(feedId: `0x${string}`): Promise<PythUpdate> {\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/latest?ids[]=${feedId}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateData: string[] | undefined = data.binary?.data;\n\n if (!updateData || updateData.length === 0) {\n throw new Error('No price update data returned from Pyth Hermes');\n }\n\n const parsed = data.parsed?.[0];\n const publishTimeRaw = parsed?.price?.publish_time;\n if (typeof publishTimeRaw !== 'number') {\n throw new Error('Pyth Hermes response missing parsed.price.publish_time');\n }\n\n return {\n updateData: updateData.map((d) => `0x${d}` as `0x${string}`),\n publishTime: BigInt(publishTimeRaw),\n fetchedAt: BigInt(Math.floor(Date.now() / 1000)),\n };\n }\n\n /**\n * Return a Pyth update that is fresh enough for client-side projected-strike\n * display.\n *\n * If `cached` is provided and still within `maxAgeSeconds`, returns it\n * unchanged. Otherwise re-queries Hermes; if the new VAA is also stale\n * (quiet feed), retries up to `maxAttempts`.\n *\n * Defaults: `maxAgeSeconds = 120`, `maxAttempts = 3`.\n */\n async fetchFreshPythUpdate(\n feedId: `0x${string}`,\n options: {\n maxAgeSeconds?: number;\n maxAttempts?: number;\n cached?: PythUpdate;\n } = {},\n ): Promise<PythUpdate> {\n const maxAgeSeconds = options.maxAgeSeconds ?? DEFAULT_FRESH_MAX_AGE_SECONDS;\n const maxAttempts = options.maxAttempts ?? DEFAULT_FRESH_MAX_ATTEMPTS;\n\n const isFresh = (u: PythUpdate): boolean => {\n const now = BigInt(Math.floor(Date.now() / 1000));\n return now - u.publishTime <= BigInt(maxAgeSeconds);\n };\n\n if (options.cached && isFresh(options.cached)) {\n return options.cached;\n }\n\n let latest: PythUpdate | undefined;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n latest = await this.fetchPythLatestUpdate(feedId);\n if (isFresh(latest)) return latest;\n }\n\n if (!latest) {\n throw new Error('Failed to fetch any Pyth update from Hermes');\n }\n return latest;\n }\n\n /**\n * Resolve the projected open price for a deferred Up/Down market — what the\n * UI should display as the \"strike\" between `openTime` and resolution.\n *\n * For deferred markets, the on-chain `strikePrice` is 0 until the resolver\n * fires {@link resolvePyth}. This helper replicates the same rule the\n * contract will use (\"earliest in-window Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`\") by querying Hermes at\n * `openTime`, so the value rendered in the UI matches what the on-chain\n * strike will be once resolution lands.\n *\n * Returns `null` when the projection isn't applicable:\n * - The market is already resolved — caller should read `pm.strikePrice` directly.\n * - The market is explicit-strike (`pm.strikePrice > 0`) — same, read from chain.\n * - The market hasn't reached `openTime` yet — no VAA exists; UI should show\n * \"strike set at HH:MM\" or similar pending state.\n *\n * `result.canonical === true` means the open window has fully elapsed and the\n * value will not change. Before that, render the price with a \"pending\" hint.\n */\n async fetchProjectedOpenPrice(\n marketId: bigint,\n ): Promise<ProjectedOpenPrice | null> {\n const pm = await this.get(marketId);\n\n if (pm.resolved) return null;\n if (pm.strikePrice !== BigInt(0)) return null;\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.openTime) return null;\n\n const parsed = await this.fetchPythHistoricalParsed(\n pm.feedId,\n Number(pm.openTime),\n Number(pm.resolutionWindow),\n );\n if (!parsed) return null;\n\n return {\n price: BigInt(parsed.price.price),\n publishTime: BigInt(parsed.price.publish_time),\n expo: Number(parsed.price.expo),\n canonical: now >= pm.openTime + pm.resolutionWindow,\n openTime: pm.openTime,\n };\n }\n\n /**\n * Fetch historical Pyth price update data covering the window\n * `[publishTime, publishTime + windowSeconds]`.\n *\n * Hermes serves a VAA AT the exact requested second when one exists, and\n * 404s when no publish landed in that second. For low-volume feeds or\n * markets resolving deep in the past this means a single request at\n * `publishTime` is fragile. This helper walks a few sample points across\n * the window until it finds a VAA, transparently retrying with exponential\n * backoff on 429.\n *\n * The on-chain `pickEarliestInWindow` accepts any VAA whose `publishTime`\n * falls in the same window, so returning an offset VAA is correct as long\n * as it's still in range.\n */\n private async fetchPythHistoricalData(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<`0x${string}`[]> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n if (!result) {\n throw new Error(\n `No Pyth VAA available in window [${publishTime}, ${publishTime + windowSeconds}] for feed ${feedId}`,\n );\n }\n return result.updateData;\n }\n\n /**\n * Hermes parsed+binary fetch shared by {@link fetchPythHistoricalData} and\n * {@link fetchProjectedOpenPrice}. Returns the first in-window VAA whose\n * Hermes response includes a `parsed[0].price` entry, walking a few sample\n * timestamps across the window before giving up. Returns `null` on\n * complete miss so the caller can decide how to surface the failure\n * (resolution throws; UI projection returns null gracefully).\n */\n private async fetchPythHistoricalParsed(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{ price: { price: string; expo: number; publish_time: number } } | null> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n return result?.parsed ?? null;\n }\n\n private async fetchPythHistoricalRaw(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{\n updateData: `0x${string}`[];\n parsed: { price: { price: string; expo: number; publish_time: number } };\n } | null> {\n // Two sample points: the requested time and the window midpoint. One call\n // is enough for active feeds (Hermes returns the VAA at or just after the\n // requested second). The midpoint is a fallback for the rare case where\n // the exact-second query 404s but a VAA exists later in the window.\n //\n // For off-hours feeds (metals, equities outside trading hours) every\n // sample 404s and we bail after 2 calls — instead of 5 — keeping our\n // total Hermes-call rate well under the free-tier limit even when the\n // bot is resolving many markets in a single cron tick.\n const window = Math.max(0, Math.floor(windowSeconds));\n const offsets = window === 0\n ? [0]\n : Array.from(new Set([0, Math.floor(window / 2)])).sort((a, b) => a - b);\n\n for (let i = 0; i < offsets.length; i++) {\n // Throttle between sample calls so a single fetchPythHistoricalRaw\n // can't burst more than ~5 req/s even when Hermes 404s the first try.\n // No throttle on the first call — common path is one fetch.\n if (i > 0) {\n await new Promise((r) => setTimeout(r, 200));\n }\n\n const t = publishTime + offsets[i];\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/${t}?ids[]=${feedId}`;\n\n const response = await this.hermesFetchWithBackoff(url);\n if (response === null) continue; // 404 / soft-miss at this timestamp\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateDataRaw: string[] | undefined = data.binary?.data;\n const parsed = data.parsed?.[0];\n\n if (!updateDataRaw || updateDataRaw.length === 0) continue;\n\n return {\n updateData: updateDataRaw.map(\n (d) => `0x${d}` as `0x${string}`,\n ),\n parsed,\n };\n }\n\n return null;\n }\n\n /**\n * Fetch a Hermes URL with a short backoff on 429. Returns the response for\n * 2xx, `null` for 404 (treated as \"no VAA at this timestamp, try another\"),\n * and throws on persistent 429 or other non-OK statuses.\n *\n * Budget kept intentionally small (2 attempts) so callers that are already\n * iterating (e.g. multiple sample timestamps in `fetchPythHistoricalRaw`)\n * don't compound the rate-limit pressure. If Hermes is genuinely rate-\n * limiting us, retrying within the same request cycle won't help — better\n * to fail fast and let the caller back off until the next tick.\n */\n private async hermesFetchWithBackoff(\n url: string,\n options: { maxAttempts?: number; initialDelayMs?: number } = {},\n ): Promise<Response | null> {\n const maxAttempts = options.maxAttempts ?? 2;\n const initialDelayMs = options.initialDelayMs ?? 750;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const response = await fetch(url);\n if (response.status === 429) {\n if (attempt === maxAttempts - 1) {\n throw new Error(\n `Pyth Hermes API error: 429 Too Many Requests (gave up after ${maxAttempts} attempts)`,\n );\n }\n const delay = initialDelayMs * Math.pow(2, attempt);\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n if (response.status === 404) return null;\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n return response;\n }\n return null;\n }\n}\n","import { createPublicClient, createWalletClient, http, custom } from 'viem';\nimport type { PublicClient, WalletClient, Account } from 'viem';\nimport type { OddMakiClientConfig } from './types';\nimport { CONTRACT_ADDRESSES, DEFAULT_CHAIN } from './config';\nimport { VenueModule } from './modules/venue';\nimport { MarketModule } from './modules/market';\nimport { TradeModule } from './modules/trade';\nimport { PublicModule } from './modules/public';\nimport { TokenModule } from './modules/token';\nimport { UmaModule } from './modules/uma';\nimport { AccessControlModule } from './modules/accessControl';\nimport { PriceMarketModule } from './modules/priceMarket';\n\nexport class OddMakiClient {\n public readonly config: OddMakiClientConfig;\n public readonly venue: VenueModule;\n public readonly market: MarketModule;\n public readonly trade: TradeModule;\n public readonly public: PublicModule;\n public readonly token: TokenModule;\n public readonly uma: UmaModule;\n public readonly accessControl: AccessControlModule;\n public readonly priceMarket: PriceMarketModule;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.venue = new VenueModule(config);\n this.market = new MarketModule(config);\n this.trade = new TradeModule(config);\n this.public = new PublicModule(config);\n this.token = new TokenModule(config);\n this.uma = new UmaModule(config);\n this.accessControl = new AccessControlModule(config);\n this.priceMarket = new PriceMarketModule(config);\n }\n}\n\nexport function createOddMakiClient(params: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walletClient?: any; // Optional: Pass directly from wagmi/viem (typed as any to avoid version mismatches)\n account?: Account;\n transport?: any; // Viem transport\n chain?: any; // Viem chain\n subgraphEndpoint?: string;\n}): OddMakiClient {\n let chain = params.chain;\n let transport = params.transport;\n let account = params.account;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let walletClient = params.walletClient as WalletClient;\n\n // Overload: Use walletClient if provided\n if (walletClient) {\n chain = chain || walletClient.chain;\n // walletClient.transport is an object, but createPublicClient expects a function.\n // We wrap it in custom() to reuse the wallet's provider.\n transport = transport || custom(walletClient.transport);\n account = account || walletClient.account;\n }\n\n // Default defaults\n chain = chain || DEFAULT_CHAIN;\n transport = transport || http();\n\n const addresses =\n CONTRACT_ADDRESSES[chain.id as keyof typeof CONTRACT_ADDRESSES];\n\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chain.id}`);\n }\n\n const publicClient = createPublicClient({\n chain,\n transport,\n }) as PublicClient;\n\n // If we didn't get a walletClient but have an account, create one\n if (!walletClient && account) {\n walletClient = createWalletClient({\n account,\n chain,\n transport,\n });\n }\n\n const config: OddMakiClientConfig = {\n chain,\n transport,\n diamondAddress: addresses.diamond,\n conditionalTokensAddress: addresses.conditionalTokens,\n subgraphEndpoint: params.subgraphEndpoint ?? addresses.subgraph,\n publicClient,\n walletClient,\n };\n\n return new OddMakiClient(config);\n}\n","/**\n * Protocol Constants\n * These values match the on-chain constants defined in the smart contracts.\n */\n\n/**\n * Fee Constants\n * Protocol fee is configurable on-chain (0-200 bps) and snapshotted per market at creation.\n * These are the default values set at deployment.\n */\nexport const PROTOCOL_FEES = {\n /** Protocol fee: 50 bps (0.50%) — configurable via ProtocolFacet.setProtocolFeeBps() */\n PROTOCOL_FEE_BPS: 50n,\n /** Operator fee: 10 bps (0.10%) for match operators */\n OPERATOR_FEE_BPS: 10n,\n} as const;\n\n/**\n * Recommended UMA Oracle defaults for USDC venues (6 decimals).\n * Based on Polymarket's production configuration.\n */\nexport const UMA_DEFAULTS = {\n /** Recommended reward: 5 USDC. Incentivizes third-party resolution. */\n REWARD_USDC: 5_000_000n,\n /** Recommended minimum bond: 750 USDC. Matches Polymarket's production bond. */\n MIN_BOND_USDC: 750_000_000n,\n /** Default liveness period: 2 hours (7200 seconds). */\n LIVENESS: 7200n,\n} as const;\n","const DEFAULT_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';\n\n/**\n * Resolve an IPFS URI to an HTTP gateway URL.\n * If the URI is already an HTTP(S) URL, returns it as-is.\n * Returns empty string for empty/undefined input.\n */\nexport function resolveIPFSUri(\n uri: string | undefined | null,\n gateway?: string,\n): string {\n if (!uri) return '';\n const gw = gateway || DEFAULT_IPFS_GATEWAY;\n if (uri.startsWith('ipfs://')) {\n const base = gw.endsWith('/') ? gw : `${gw}/`;\n const gateway = base.includes('/ipfs/') ? base : `${base}ipfs/`;\n return `${gateway}${uri.slice(7)}`;\n }\n return uri;\n}\n\n/** Venue metadata schema (v1) — all fields optional except version */\nexport interface VenueMetadata {\n version: number;\n venue_url?: string;\n image_url?: string;\n banner_url?: string;\n description?: string;\n social?: {\n twitter?: string;\n discord?: string;\n telegram?: string;\n };\n}\n\n/** Market metadata schema (v1) — all fields optional except version */\nexport interface MarketMetadata {\n version: number;\n image_url?: string;\n source_url?: string;\n category?: string;\n}\n\n/**\n * Safely parse a JSON string into a typed metadata object.\n * Returns null if the JSON is invalid or missing a version field.\n */\nexport function parseMetadata<T extends { version: number }>(\n json: string,\n): T | null {\n try {\n const parsed = JSON.parse(json);\n if (typeof parsed !== 'object' || parsed === null) return null;\n if (typeof parsed.version !== 'number') return null;\n return parsed as T;\n } catch {\n return null;\n }\n}\n","export * from './client';\nexport * from './config';\nexport * from './constants';\nexport * from './types';\nexport * from './modules/venue';\nexport * from './modules/market';\nexport * from './modules/trade';\nexport * from './modules/public';\nexport * from './modules/token';\nexport * from './modules/uma';\nexport * from './modules/accessControl';\nexport * from './modules/priceMarket';\nexport * from './contracts';\nexport * from './subgraph/client';\nexport * from './subgraph/queries';\nexport { GraphQLClient, gql, ClientError } from 'graphql-request';\nexport type { RequestDocument, Variables } from 'graphql-request';\nexport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nexport * from './utils/conversions';\nexport * from './utils/decimals';\nexport * from './utils/metadata';\n\nexport const version = '0.1.0';\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/subgraph/client.ts","../src/modules/base.ts","../src/contracts/abis/VenueFacet.json","../src/contracts/abis/MarketsFacet.json","../src/contracts/abis/LimitOrdersFacet.json","../src/contracts/abis/MatchingFacet.json","../src/contracts/abis/OrderBookFacet.json","../src/contracts/abis/MarketGroupFacet.json","../src/contracts/abis/MarketOrdersFacet.json","../src/contracts/abis/ResolutionFacet.json","../src/contracts/abis/VaultFacet.json","../src/contracts/abis/NegRiskFacet.json","../src/contracts/abis/ProtocolFacet.json","../src/contracts/abis/AccessControlFacet.json","../src/contracts/abis/TagsFacet.json","../src/contracts/abis/MetadataFacet.json","../src/contracts/abis/PriceMarketFacet.json","../src/contracts/abis/PythResolutionFacet.json","../src/contracts/abis/BatchOrdersFacet.json","../src/contracts/abis/WhitelistAccessControl.json","../src/contracts/abis/ConditionalTokens.json","../src/contracts/abis/ERC20.json","../src/contracts/abis/UmaOracle.json","../src/modules/venue.ts","../src/utils/conversions.ts","../src/utils/decimals.ts","../src/modules/market.ts","../src/modules/trade.ts","../src/subgraph/queries.ts","../src/modules/public.ts","../src/modules/token.ts","../src/modules/uma.ts","../src/modules/accessControl.ts","../src/modules/priceMarket.ts","../src/client.ts","../src/constants.ts","../src/utils/metadata.ts","../src/index.ts"],"names":["gql","erc20Abi","FeedProvider","stringToHex","base","gateway"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0KhC,IAAM,iCAAA,GAAoC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiK1C,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuJ7B,IAAM,8BAAA,GAAiC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","file":"index.mjs","sourcesContent":["import type { Address } from 'viem';\nimport { baseSepolia, base } from 'viem/chains';\n\nexport const CONTRACT_ADDRESSES = {\n [baseSepolia.id]: {\n diamond: '0x31a4126aec35b36d46dd371eb0f0d5b71e1c2292' as Address,\n conditionalTokens: '0x7364747372Ac4a175B5326f5B2C9CB1C271d32e8' as Address,\n usdc: '0x036cbd53842c5426634e7929541ec2318f3dcf7e' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base-sepolia/version/latest',\n },\n [base.id]: {\n diamond: '0x025d086a62d93e24f3cb3f161612ca8e9530127d' as Address,\n conditionalTokens: '0x3e2ae408ca03f27849edff32d107c7b8ea5c87b4' as Address,\n usdc: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base/version/latest',\n },\n} as const;\n\nexport const SUBGRAPH_IDS = {\n [base.id]: 'CxoYVjELrNCMLopAmVshnfVAie7yH6QZyCSKD3r41XSQ',\n [baseSepolia.id]: 'DCnd3ozSyvYxRg7kmZYiDWGBiJCe6QHwu8M93jMN1Q3b',\n} as const;\n\nexport function buildSubgraphGatewayUrl(\n chainId: number,\n apiKey: string,\n): string | undefined {\n const id = SUBGRAPH_IDS[chainId as keyof typeof SUBGRAPH_IDS];\n return id\n ? `https://gateway.thegraph.com/api/${apiKey}/subgraphs/id/${id}`\n : undefined;\n}\n\nexport const DEFAULT_CHAIN = base;\n","import { GraphQLClient, type RequestDocument } from 'graphql-request';\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport class SubgraphClient {\n private client: GraphQLClient;\n\n constructor(endpoint: string) {\n this.client = new GraphQLClient(endpoint);\n }\n\n async request<T>(\n query: RequestDocument | TypedDocumentNode<T, Record<string, unknown>>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.client.request<T>(query as RequestDocument, variables);\n }\n}\n","import type { Account, Address } from 'viem';\nimport type { OddMakiClientConfig } from '../types';\nimport { SubgraphClient } from '../subgraph/client';\n\nexport abstract class BaseModule {\n protected config: OddMakiClientConfig;\n protected subgraph: SubgraphClient;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.subgraph = new SubgraphClient(config.subgraphEndpoint);\n }\n\n protected get publicClient() {\n return this.config.publicClient;\n }\n\n protected get walletClient() {\n if (!this.config.walletClient) {\n throw new Error(\n 'WalletClient not initialized. Write operations require a wallet.'\n );\n }\n return this.config.walletClient;\n }\n\n // Returns the hoisted LocalAccount when the wallet was created with a private\n // key, so viem signs locally (eth_sendRawTransaction). Falls back to the\n // address string for injected/JSON-RPC providers (wagmi, RainbowKit, etc).\n protected async getSignerAccount(): Promise<Account | Address> {\n const wallet = this.walletClient;\n if (wallet.account) return wallet.account;\n const [address] = await wallet.getAddresses();\n return address;\n }\n\n protected async getSignerAddress(): Promise<Address> {\n const signer = await this.getSignerAccount();\n return typeof signer === 'string' ? signer : signer.address;\n }\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"canCreateMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"canTrade\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createVenue\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextVenueId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct VenueData\",\n \"components\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueMarketCreationFee\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueOracleParams\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueAccessControlUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueCreated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueFeesUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueMarketCreationFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueOracleParamsUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenuePaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnpaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUmaMinBond\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueName\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activatePlaceholder\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addMarket\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addPlaceholderMarkets\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarket\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketOracleData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketOracleData\",\n \"components\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requiredBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"initialized\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"activeAssertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketRegistryData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketRegistryData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketTradingData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"positionIds\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"totalVolume\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"lastTradeTick\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextMarketId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketAddedToGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderMarketsAdded\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"indexed\": false,\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotPlaceholder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"cancelOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrdersOnResolvedMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"expireOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"expiredCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardEarned\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Order\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"originalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nextOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"prevOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"matchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxSteps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fillCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MergeFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MintFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderAutoCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"refundedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderFilled\",\n \"inputs\": [\n {\n \"name\": \"buyOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sellOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canMatchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MatchPreview\",\n \"components\": [\n {\n \"name\": \"normalYesCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"normalNoCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mintFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mergeFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"anyMatchable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFill\",\n \"inputs\": [\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Fill\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"path\",\n \"type\": \"uint8\",\n \"internalType\": \"enum SettlementPath\"\n },\n {\n \"name\": \"order1Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"order2Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarkPrice\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"isDefined\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextFillId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTickLevel\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TickLevel\",\n \"components\": [\n {\n \"name\": \"headOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tailOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"depth\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTopOfBook\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activateMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getGroupMarketIds\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupData\",\n \"components\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"totalMarkets\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"createdAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolvedMarketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroupItem\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupItem\",\n \"components\": [\n {\n \"name\": \"isPlaceholder\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextGroupId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupCreated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuestion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"placeMarketOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketBuyResult\",\n \"components\": [\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeMarketSell\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketSellResult\",\n \"components\": [\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketOrderExecuted\",\n \"inputs\": [\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketSellExecuted\",\n \"inputs\": [\n {\n \"name\": \"seller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientLiquidityForFOK\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaxPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoLiquidityAvailable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroCollateralAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroTokenAmount\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertMarketOutcome\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionDisputedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionResolvedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"assertedTruthfully\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionData\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AssertionData\",\n \"components\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportResolution\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionCreated\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionDisputed\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardPaid\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionActiveOrResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotSettled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyUmaOracle\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OutcomeMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaIdentifierNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaOracleNotSet\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getCtfAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCtf\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CtfUpdated\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionSplit\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionsMerged\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"convertPositions\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConversionPositionIds\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"noPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"yesPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DuplicateConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidIndexSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnregisteredConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolTreasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaOracle\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueSuspended\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeBps\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolTreasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaIdentifier\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaOracle\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"suspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unsuspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawERC20\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawETH\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralWhitelistUpdated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ERC20Withdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EthWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeBpsUpdated\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolTreasuryUpdated\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaIdentifierUpdated\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaOracleUpdated\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueSuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnsuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canTradeOnMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployNFTGatedAC\",\n \"inputs\": [\n {\n \"name\": \"nftContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isERC1155\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployTokenGatedAC\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"minBalance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployWhitelistAC\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AccessControlDeployed\",\n \"inputs\": [\n {\n \"name\": \"deployer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acType\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlRemoved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlSet\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupTags\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketTags\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupMetadata\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketMetadata\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canResolvePriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"feedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"feedProvider\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"createPriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPythContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"markPriceMarketInvalid\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resolvePriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythUpdateData\",\n \"type\": \"bytes[]\",\n \"internalType\": \"bytes[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPythContract\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketCreatedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"indexed\": false,\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketInvalidated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketResolvedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PythContractUpdated\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionInProgress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotAfterOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ETHRefundFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FeedProviderMismatch\",\n \"inputs\": [\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"GracePeriodNotElapsed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientPythFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoClosePriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoOpenPriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPriceMarket\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PriceMarketAlreadyResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PythContractNotConfigured\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ResolutionWindowTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroStrikePrice\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"batchCancelOrders\",\n \"inputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batchPlaceOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelAndReplace\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cancelOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"newOrders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EmptyBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAllowed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AddedToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RemovedFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCollectionId\",\n \"inputs\": [\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConditionId\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOutcomeSlotCount\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPositionId\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"positionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutDenominator\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutNumerators\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareCondition\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeemPositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSets\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportPayouts\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"payouts\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_decimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertTruth\",\n \"inputs\": [\n {\n \"name\": \"claim\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"disputeAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.Assertion\",\n \"components\": [\n {\n \"name\": \"escalationManagerSettings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.EscalationManagerSettings\",\n \"components\": [\n {\n \"name\": \"arbitrateViaEscalationManager\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"discardOracle\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"validateDisputers\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"assertingCaller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"assertionTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"expirationTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settlementResolution\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionResult\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMinimumBond\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","import { BaseModule } from './base';\nimport { VenueFacetABI, ProtocolFacetABI } from '../contracts';\n\nexport class VenueModule extends BaseModule {\n /**\n * Create a new venue.\n *\n * IMPORTANT: Fee and bond amounts must match your intended collateral token decimals.\n * Most venues use USDC (6 decimals), so amounts should use `parseUnits(\"amount\", 6)`.\n *\n * Example for a USDC-based venue:\n * - marketCreationFee: 0n // free creation, or parseUnits(\"10\", 6) for 10 USDC\n * - umaRewardAmount: parseUnits(\"5\", 6) // 5 USDC\n * - umaMinBond: parseUnits(\"1\", 6) // 1 USDC\n * - defaultTickSize: parseEther(\"0.01\") // 0.01 per tick (always 18 decimals)\n *\n * @param params.marketCreationFee - Upfront fee in collateral units charged on `createMarket`.\n * Can be zero. When non-zero, split 50/50 between protocol and venue.\n * When zero, gate market creation via `creationAccessControl` to deter spam.\n * Mutable post-creation via `updateMarketCreationFee`.\n * @param params.umaRewardAmount - Default reward for UMA asserters (in collateral token units).\n * @param params.umaMinBond - Minimum bond for UMA assertions (in collateral token units).\n * @param params.defaultTickSize - Price increment per tick (always 1e18 scale, e.g. 0.01e18).\n */\n async createVenue(params: {\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n venueFeeBps: number;\n creatorFeeBps: number;\n defaultTickSize: bigint;\n marketCreationFee: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'createVenue',\n args: [\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n params.venueFeeBps,\n params.creatorFeeBps,\n params.defaultTickSize,\n params.marketCreationFee,\n params.umaRewardAmount,\n params.umaMinBond,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue fees\n */\n async updateFees(params: {\n venueId: bigint;\n venueFeeBps: number;\n creatorFeeBps: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueFees',\n args: [params.venueId, params.venueFeeBps, params.creatorFeeBps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Pause venue\n */\n async setPaused(venueId: bigint, paused: boolean) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const functionName = paused ? 'pauseVenue' : 'unpauseVenue';\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName,\n args: [venueId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get venue data from on-chain storage\n */\n async getVenue(venueId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [venueId],\n });\n }\n\n /**\n * Update venue settings (name, metadata, access control, fee recipient)\n */\n async updateVenue(params: {\n venueId: bigint;\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenue',\n args: [\n params.venueId,\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update the upfront market creation fee for a venue. Operator-only.\n *\n * Affects only markets created after this call — existing markets keep their snapshot.\n * Pass `0n` for free creation; if you do, gate `createMarket` via `creationAccessControl`\n * to deter spam.\n *\n * @param params.newFee - New fee in collateral token units (e.g. `parseUnits(\"10\", 6)` for 10 USDC).\n */\n async updateMarketCreationFee(params: { venueId: bigint; newFee: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueMarketCreationFee',\n args: [params.venueId, params.newFee],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue oracle parameters (UMA reward and min bond)\n */\n async updateOracleParams(params: {\n venueId: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueOracleParams',\n args: [params.venueId, params.umaRewardAmount, params.umaMinBond],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user can trade on a venue (venue-level AC only, no market override).\n */\n async canTrade(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canTrade',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n /**\n * Check if a user can create markets on a venue.\n */\n async canCreateMarket(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canCreateMarket',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n // ---- Protocol Fee (owner-only) ----\n\n /**\n * Get the current protocol fee in basis points. Snapshotted per market at creation.\n */\n async getProtocolFeeBps(): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getProtocolFeeBps',\n }) as Promise<bigint>;\n }\n\n /**\n * Set the protocol fee in basis points. Owner-only. Max 200 bps (2%).\n * Only affects markets created after this call (existing markets retain their snapshot).\n */\n async setProtocolFeeBps(bps: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'setProtocolFeeBps',\n args: [bps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { parseEther, formatEther } from 'viem';\n\n/**\n * Utility functions for common conversions in OddMaki Protocol\n * These helpers make it easier for frontends to work with the protocol\n * without needing to understand ticks, BigInts, and wei conversions\n */\n\n/** Standard tick size: 1% price increment, 100 price levels (Polymarket/Kalshi standard) */\nexport const TICK_SIZE_STANDARD = 10000000000000000n; // 1e16\n\n/** Fine tick size: 0.1% price increment, 1000 price levels (institutional-grade) */\nexport const TICK_SIZE_FINE = 1000000000000000n; // 1e15\n\n/** All protocol-approved tick sizes */\nexport const VALID_TICK_SIZES = [TICK_SIZE_STANDARD, TICK_SIZE_FINE] as const;\n\n/**\n * Check whether a tick size is in the protocol-approved whitelist.\n * @param tickSize - Tick size in wei (1e15 or 1e16)\n * @returns true if the tick size is valid\n */\nexport function isValidTickSize(tickSize: bigint): boolean {\n return tickSize === TICK_SIZE_STANDARD || tickSize === TICK_SIZE_FINE;\n}\n\n/**\n * Convert a tick value to a human-readable price\n * @param tick - Tick value (e.g., 80 for 0.80)\n * @param tickSize - Optional tick size in 1e18 (defaults to 0.01e18)\n * @returns Price as decimal string (e.g., \"0.80\")\n */\nexport function tickToPrice(tick: bigint, tickSize: bigint = 10000000000000000n): string {\n const price = tick * tickSize;\n return (Number(price) / 1e18).toFixed(2);\n}\n\n/**\n * Convert a human-readable price to a tick value\n * @param price - Price as decimal (e.g., 0.80 or \"0.80\")\n * @returns Tick value as bigint (e.g., 80n)\n */\nexport function priceToTick(price: number | string): bigint {\n const priceNum = typeof price === 'string' ? parseFloat(price) : price;\n return BigInt(Math.round(priceNum * 100));\n}\n\n/**\n * Convert a decimal amount string to the smallest unit based on decimals\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns BigInt in smallest unit\n *\n * @example\n * parseAmount(\"10.5\") // 10500000000000000000n (18 decimals)\n * parseAmount(\"10.5\", 6) // 10500000n (6 decimals for USDC)\n */\nexport function parseAmount(amount: string, decimals: number = 18): bigint {\n if (decimals === 18) {\n return parseEther(amount);\n }\n\n // Parse amount with custom decimals\n const parts = amount.split('.');\n const wholePart = parts[0] || '0';\n const decimalPart = (parts[1] || '').padEnd(decimals, '0').slice(0, decimals);\n\n return BigInt(wholePart + decimalPart);\n}\n\n/**\n * Convert smallest unit amount to decimal string based on decimals\n * @param amount - Amount in smallest unit (bigint)\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns Decimal string (e.g., \"10.5\")\n *\n * @example\n * formatAmount(10500000000000000000n) // \"10.5\" (18 decimals)\n * formatAmount(10500000n, 6) // \"10.5\" (6 decimals for USDC)\n */\nexport function formatAmount(amount: bigint, decimals: number = 18): string {\n if (decimals === 18) {\n return formatEther(amount);\n }\n\n // Format amount with custom decimals\n const amountStr = amount.toString().padStart(decimals + 1, '0');\n const wholePart = amountStr.slice(0, -decimals) || '0';\n const decimalPart = amountStr.slice(-decimals);\n\n // Remove trailing zeros from decimal part\n const trimmedDecimal = decimalPart.replace(/0+$/, '');\n\n return trimmedDecimal ? `${wholePart}.${trimmedDecimal}` : wholePart;\n}\n\n/**\n * Create an expiry timestamp from duration\n * @param duration - Duration string like \"1h\", \"24h\", \"7d\" or number of seconds\n * @returns Unix timestamp as bigint\n */\nexport function createExpiry(duration: string | number): bigint {\n let seconds: number;\n\n if (typeof duration === 'number') {\n seconds = duration;\n } else {\n // Parse duration strings like \"1h\", \"24h\", \"7d\"\n const match = duration.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error('Invalid duration format. Use formats like \"1h\", \"24h\", \"7d\"');\n }\n\n const value = parseInt(match[1]);\n const unit = match[2];\n\n const multipliers: Record<string, number> = {\n s: 1,\n m: 60,\n h: 3600,\n d: 86400,\n };\n\n seconds = value * multipliers[unit];\n }\n\n return BigInt(Math.floor(Date.now() / 1000) + seconds);\n}\n\n/**\n * Format a timestamp for display\n * @param timestamp - Unix timestamp (bigint or number)\n * @returns Human-readable date string\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n return new Date(ts * 1000).toLocaleString();\n}\n\n/**\n * Market question structure\n */\nexport interface MarketQuestion {\n title: string;\n description: string;\n}\n\n/**\n * Parse UMA ancillary data into structured question format\n * @param ancillaryData - Raw ancillary data string from contract/subgraph\n * @returns Parsed question with title and description\n *\n * @example\n * ```typescript\n * const question = parseAncillaryData(\"q:title:Will ETH hit $5k?,description:Market resolves YES if...\");\n * console.log(question.title); // \"Will ETH hit $5k?\"\n * console.log(question.description); // \"Market resolves YES if...\"\n * ```\n */\nexport function parseAncillaryData(ancillaryData: string): MarketQuestion {\n try {\n // Format: \"q:title:TITLE,description:DESC,market_id:N,venue_id:N,initializer:0x...,res_data:...,ooRequester:0x...,chain_id:N\"\n // Title and description can contain commas, so we can't split on all commas.\n // Instead, use the known contract-appended keys as boundaries.\n const CONTRACT_KEY_RE = /,(?:market_id|venue_id|initializer|res_data|ooRequester|chain_id):/;\n\n let title = '';\n let description = '';\n\n // Find where title starts (supports both \"q:title:\" and \"title:\" prefixes)\n const titlePrefix = ancillaryData.match(/^(?:q:)?title:/);\n if (titlePrefix) {\n const afterTitle = ancillaryData.slice(titlePrefix[0].length);\n\n // Title ends at \",description:\" or first contract-appended key\n const descIdx = afterTitle.indexOf(',description:');\n\n if (descIdx >= 0) {\n title = afterTitle.slice(0, descIdx).trim();\n const descRest = afterTitle.slice(descIdx + ',description:'.length);\n const keyMatch = descRest.match(CONTRACT_KEY_RE);\n description = keyMatch\n ? descRest.slice(0, keyMatch.index).trim()\n : descRest.trim();\n } else {\n const keyMatch = afterTitle.match(CONTRACT_KEY_RE);\n title = keyMatch\n ? afterTitle.slice(0, keyMatch.index).trim()\n : afterTitle.trim();\n }\n }\n\n return {\n title: title || ancillaryData, // Fallback to raw data if parsing fails\n description: description || '',\n };\n } catch (e) {\n // If parsing fails, return the raw data as title\n return { title: ancillaryData, description: '' };\n }\n}\n\n/**\n * Format a market question into UMA ancillary data string\n * @param question - Question with title and description\n * @returns Formatted ancillary data string (without market/venue metadata)\n *\n * @example\n * ```typescript\n * const ancillaryData = formatAncillaryData({\n * title: \"Will ETH hit $5k?\",\n * description: \"Market resolves YES if ETH/USD >= $5000 on Coinbase Pro by Dec 31, 2025.\"\n * });\n * // Returns: \"q:title:Will ETH hit $5k?,description:Market resolves YES if...\"\n * ```\n *\n * @note The Controller/UmaAdapter will append additional fields (market_id, venue_id, etc.)\n */\nexport function formatAncillaryData(question: MarketQuestion): string {\n let data = `q:title:${question.title}`;\n if (question.description) {\n data += `,description:${question.description}`;\n }\n return data;\n}\n\n/**\n * Convert a tick value and tick size to a percentage (0-100).\n * Accepts string or number inputs for convenience with subgraph data.\n *\n * @param tick - Tick value (e.g., 55 or \"55\")\n * @param tickSize - Tick size in wei (e.g., 1e16 or \"10000000000000000\")\n * @returns Price as percentage (e.g., 55 for 55%)\n */\nexport function tickToPercentage(tick: string | number, tickSize: string | number): number {\n const tickNum = typeof tick === 'string' ? parseFloat(tick) : tick;\n const tickSizeNum = typeof tickSize === 'string' ? parseFloat(tickSize) : tickSize;\n if (tickNum === 0 || tickSizeNum === 0) return 0;\n const price = (tickNum * tickSizeNum) / 1e18;\n return parseFloat((price * 100).toFixed(2));\n}\n\n/**\n * Subgraph Market entity shape expected by getOutcomePrice.\n */\nexport interface SubgraphMarketPriceData {\n tickSize: string;\n status: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n}\n\n/**\n * Get the current price percentage (0-100) for an outcome in a binary market.\n *\n * Handles three cases:\n * 1. Resolved markets → winning outcome = 100, losing = 0\n * 2. Active markets with YES price → NO = 100 - YES (complement)\n * 3. Active markets with only NO price → YES = 100 - NO\n *\n * @param market - Subgraph Market entity with price/status fields\n * @param outcomeIndex - 0 for YES, 1 for NO\n * @returns Price as percentage (0-100)\n */\nexport function getOutcomePrice(market: SubgraphMarketPriceData, outcomeIndex: number): number {\n const tickSize = market.tickSize || '0';\n\n // Resolved: winning = 100, losing = 0\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === outcomeIndex ? 100 : 0;\n }\n\n // Use YES price as canonical, derive NO via complement\n const yesTick = market.lastPriceTick_0;\n if (!yesTick) {\n const noTick = market.lastPriceTick_1;\n if (!noTick) return 0;\n const noPercent = tickToPercentage(noTick, tickSize);\n return outcomeIndex === 1 ? noPercent : (100 - noPercent);\n }\n\n const yesPercent = tickToPercentage(yesTick, tickSize);\n return outcomeIndex === 0 ? yesPercent : (100 - yesPercent);\n}\n\n// ============================================\n// Mark Price Calculation (Polymarket-style)\n// ============================================\n\n/**\n * Top-of-book entry from subgraph TopOfBook entity.\n */\nexport interface TopOfBookEntry {\n outcome: string; // \"0\" or \"1\"\n side: string; // \"BUY\" or \"SELL\"\n topTick: string; // tick value, \"0\" if empty\n}\n\n/**\n * Input for calculateChancePercent — accepts subgraph market data.\n */\nexport interface ChancePercentInput {\n tickSize: string;\n status?: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n lastTradeTimestamp_0?: string | null;\n lastTradeTimestamp_1?: string | null;\n topOfBook?: TopOfBookEntry[];\n}\n\n/** Spread threshold in dollars — matches Polymarket's $0.10 threshold. */\nconst MARK_PRICE_SPREAD_THRESHOLD = 0.10;\n\n/**\n * Calculate the \"chance %\" for a binary market using a Polymarket-style waterfall:\n *\n * 1. **Implied mark price** (midpoint of implied Yes bid/ask) — if spread ≤ $0.10\n * 2. **Last trade** (most recent trade from either side) — if book empty or spread > $0.10\n * 3. **50%** — no data\n *\n * Implied prices account for cross-outcome liquidity via mint/merge paths:\n * - No BUY at tick N → implied Yes ASK at (maxTicks - N) via Mint path\n * - No SELL at tick N → implied Yes BID at (maxTicks - N) via Merge path\n *\n * @param market - Subgraph market data with top-of-book and last trade info\n * @returns Chance percentage (0-100)\n */\nexport function calculateChancePercent(market: ChancePercentInput): number {\n const tickSizeNum = parseFloat(market.tickSize || '0');\n if (tickSizeNum === 0) return 50;\n\n // Resolved markets: winning = 100%, losing = 0%\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === 0 ? 100 : 0;\n }\n\n const maxTicks = 1e18 / tickSizeNum;\n\n // Step 1: Try mark price from top-of-book (implied midpoint)\n if (market.topOfBook && market.topOfBook.length > 0) {\n const tob = parseTopOfBook(market.topOfBook);\n const result = computeImpliedMidpoint(tob, maxTicks, tickSizeNum);\n if (result !== null) return result;\n }\n\n // Step 2: Fall back to most recent trade (either side)\n return lastTradeFallback(market, tickSizeNum);\n}\n\n/**\n * Parsed top-of-book values (all in raw tick units).\n */\ninterface ParsedTopOfBook {\n yesBid: number;\n yesAsk: number;\n noBid: number;\n noAsk: number;\n}\n\n/**\n * Parse the TopOfBook array into the 4 values we need.\n */\nfunction parseTopOfBook(entries: TopOfBookEntry[]): ParsedTopOfBook {\n const result: ParsedTopOfBook = { yesBid: 0, yesAsk: 0, noBid: 0, noAsk: 0 };\n\n for (const entry of entries) {\n const tick = parseFloat(entry.topTick || '0');\n const outcome = entry.outcome?.toString();\n const side = entry.side;\n\n if (outcome === '0' && side === 'BUY') result.yesBid = tick;\n else if (outcome === '0' && side === 'SELL') result.yesAsk = tick;\n else if (outcome === '1' && side === 'BUY') result.noBid = tick;\n else if (outcome === '1' && side === 'SELL') result.noAsk = tick;\n }\n\n return result;\n}\n\n/**\n * Compute the implied Yes midpoint from top-of-book data.\n * Returns the chance percentage, or null if we can't compute a valid midpoint.\n */\nfunction computeImpliedMidpoint(\n tob: ParsedTopOfBook,\n maxTicks: number,\n tickSize: number,\n): number | null {\n // Compute implied Yes bid: max(direct Yes bid, complement of No ask via merge)\n const bidCandidates: number[] = [];\n if (tob.yesBid > 0) bidCandidates.push(tob.yesBid);\n if (tob.noAsk > 0) bidCandidates.push(maxTicks - tob.noAsk);\n\n // Compute implied Yes ask: min(direct Yes ask, complement of No bid via mint)\n const askCandidates: number[] = [];\n if (tob.yesAsk > 0) askCandidates.push(tob.yesAsk);\n if (tob.noBid > 0) askCandidates.push(maxTicks - tob.noBid);\n\n // Need both a bid and an ask to compute midpoint\n if (bidCandidates.length === 0 || askCandidates.length === 0) return null;\n\n const impliedBid = Math.max(...bidCandidates);\n const impliedAsk = Math.min(...askCandidates);\n\n // Check spread threshold (in dollar terms)\n const spreadDollars = ((impliedAsk - impliedBid) * tickSize) / 1e18;\n if (spreadDollars > MARK_PRICE_SPREAD_THRESHOLD) return null;\n\n // Midpoint → percentage\n const midTick = (impliedBid + impliedAsk) / 2;\n const percent = (midTick * tickSize / 1e18) * 100;\n return parseFloat(Math.max(0, Math.min(100, percent)).toFixed(2));\n}\n\n/**\n * Fall back to the most recent trade from either side.\n * If per-outcome timestamps are available, use the more recent one.\n * Otherwise, use whichever lastPriceTick is available (with complement derivation for No).\n */\nfunction lastTradeFallback(market: ChancePercentInput, tickSize: number): number {\n const tick0 = parseFloat(market.lastPriceTick_0 || '0');\n const tick1 = parseFloat(market.lastPriceTick_1 || '0');\n const ts0 = parseFloat(market.lastTradeTimestamp_0 || '0');\n const ts1 = parseFloat(market.lastTradeTimestamp_1 || '0');\n\n // Both outcomes have trades: use the more recent one\n if (tick0 > 0 && tick1 > 0) {\n if (ts0 > 0 || ts1 > 0) {\n // Per-outcome timestamps available — use most recent\n if (ts0 >= ts1) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n // No side is more recent — derive Yes via complement\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n // No per-outcome timestamps (pre-migration data) — prefer Yes price\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only Yes traded\n if (tick0 > 0) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only No traded — derive Yes via complement\n if (tick1 > 0) {\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n\n // No data at all\n return 50;\n}\n","import type { PublicClient, Address } from 'viem';\nimport { parseAmount } from './conversions';\n\n/**\n * Decimal handling utilities for ERC20 tokens\n *\n * IMPORTANT: The OddMaki Protocol uses 1e18 for all internal price calculations,\n * but collateral tokens (like USDC) may use different decimals (e.g., 6).\n *\n * This module provides utilities to correctly handle token decimals when\n * converting between user-facing amounts and contract values.\n */\n\n/**\n * Get the number of decimals for an ERC20 token\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals (e.g., 6 for USDC, 18 for most ERC20s)\n *\n * @example\n * const decimals = await getTokenDecimals(publicClient, usdcAddress);\n * console.log(decimals); // 6\n */\nexport async function getTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const decimals = await publicClient.readContract({\n address: token,\n abi: [\n {\n name: 'decimals',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n ],\n functionName: 'decimals',\n });\n\n return Number(decimals);\n}\n\n/**\n * Parse a token amount string with validation\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for most tokens)\n * @returns BigInt in smallest unit\n * @throws Error if decimals are invalid\n *\n * @example\n * parseTokenAmount(\"10.5\", 6) // 10500000n (USDC)\n * parseTokenAmount(\"10.5\", 18) // 10500000000000000000n (ETH-like)\n */\nexport function parseTokenAmount(\n amount: string,\n decimals: number\n): bigint {\n if (decimals < 0 || decimals > 18) {\n throw new Error(`Invalid decimals: ${decimals}. Must be between 0 and 18.`);\n }\n\n if (!amount || amount.trim() === '') {\n throw new Error('Amount cannot be empty');\n }\n\n return parseAmount(amount, decimals);\n}\n\n/**\n * Cache for token decimals to avoid redundant RPC calls\n * Key format: `${chainId}-${tokenAddress.toLowerCase()}`\n */\nconst decimalsCache = new Map<string, number>();\n\n/**\n * Get token decimals with caching to reduce RPC calls\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals\n *\n * @example\n * // First call hits RPC\n * const decimals1 = await getCachedTokenDecimals(publicClient, usdcAddress);\n *\n * // Second call uses cache\n * const decimals2 = await getCachedTokenDecimals(publicClient, usdcAddress);\n */\nexport async function getCachedTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const chainId = await publicClient.getChainId();\n const cacheKey = `${chainId}-${token.toLowerCase()}`;\n\n const cached = decimalsCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const decimals = await getTokenDecimals(publicClient, token);\n decimalsCache.set(cacheKey, decimals);\n\n return decimals;\n}\n\n/**\n * Clear the decimals cache (useful for testing or switching networks)\n */\nexport function clearDecimalsCache(): void {\n decimalsCache.clear();\n}\n","import { BaseModule } from './base';\nimport {\n VenueFacetABI,\n MarketsFacetABI,\n MarketGroupFacetABI,\n OrderBookFacetABI,\n NegRiskFacetABI,\n ConditionalTokensABI,\n TagsFacetABI,\n MetadataFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { formatAmount, isValidTickSize, type MarketQuestion } from '../utils/conversions';\nimport { getTokenDecimals } from '../utils/decimals';\n\n// Inline fragment for ERC-1155 isApprovedForAll. Not in the bundled CTF ABI\n// because it was generated from a subset of methods; this avoids having to\n// regenerate the full ABI for a single standard read.\nconst CTF_IS_APPROVED_FOR_ALL_ABI = [\n {\n name: 'isApprovedForAll',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'account', type: 'address' },\n { name: 'operator', type: 'address' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n },\n] as const;\n\nexport class MarketModule extends BaseModule {\n /**\n * Format market question into UMA-compliant ancillary data\n * @param question Structured market question with title and description\n * @returns Hex-encoded ancillary data bytes\n * @private\n */\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n // Build comma-delimited key:value format (start with \"q:\" prefix)\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n\n // Convert to hex bytes\n return stringToHex(data);\n }\n\n /**\n * Create a new market\n *\n * IMPORTANT: All bigint amounts must use the collateral token's decimals!\n * - For USDC (6 decimals): Use parseAmount(\"10\", 6) or parseUnits(\"10\", 6)\n * - For 18-decimal tokens: Use parseAmount(\"10\") or parseEther(\"10\")\n *\n * @param params.tickSize - Price increment (typically parseEther(\"0.01\") = 0.01 per tick)\n * @param params.additionalReward - Extra UMA reward in collateral token units (with token decimals!)\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n */\n async createMarket(params: {\n venueId: bigint;\n question: MarketQuestion;\n outcomes: string[];\n tickSize: bigint;\n collateralToken: Address;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee is determined by venue configuration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Format ancillary data\n const ancillaryData = this.formatAncillaryData(params.question);\n\n // Encode tags as bytes32[]\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'createMarket',\n args: [\n params.venueId,\n ancillaryData,\n params.outcomes,\n params.tickSize,\n params.collateralToken,\n params.additionalReward,\n params.liveness ?? 0n,\n encodedTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market registry data (lifecycle, venue, creator, status)\n */\n async getMarketRegistryData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n }\n\n /**\n * Get market trading data (positionIds, volume, lastTradeTick, tickSize, collateral)\n */\n async getMarketTradingData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n }\n\n /**\n * Get market oracle data (questionId, conditionId, UMA economics)\n */\n async getMarketOracleData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n }\n\n /**\n * Calculate Position ID for a market outcome (for CTF balance queries)\n */\n async getPositionId(marketId: bigint, outcomeIndex: bigint): Promise<bigint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n\n const ids = tradingData.positionIds;\n if (!ids || ids.length <= Number(outcomeIndex)) {\n throw new Error('Position ID not found in trading data');\n }\n\n return BigInt(ids[Number(outcomeIndex)]);\n }\n\n /**\n * Get best prices (Top of Book) for all outcomes\n * Returns the raw tick values.\n */\n async getBestPrices(marketId: bigint) {\n const getTick = async (outcome: number, side: number) => {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [marketId, BigInt(outcome), side],\n })) as bigint;\n };\n\n // Fetch relevant ticks: YES Ask, YES Bid, NO Ask, NO Bid\n const [yesAsk, yesBid, noAsk, noBid] = await Promise.all([\n getTick(0, 1), // YES Ask\n getTick(0, 0), // YES Bid\n getTick(1, 1), // NO Ask\n getTick(1, 0), // NO Bid\n ]);\n\n return {\n yesAsk,\n yesBid,\n noAsk,\n noBid,\n };\n }\n\n /**\n * Get user's outcome token balances for a market\n * @param params.formatted - If true, returns decimal strings instead of BigInt (recommended for frontends)\n *\n * @dev Outcome tokens use the same decimals as the collateral token.\n * CTF inherits decimals from the underlying collateral.\n */\n async getUserBalances(\n marketId: bigint,\n user: Address,\n params?: { formatted?: boolean },\n ) {\n const formatted = params?.formatted ?? false;\n\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const collateralToken = tradingData.collateralToken as Address;\n\n // Get collateral decimals\n const decimals = await getTokenDecimals(this.publicClient, collateralToken);\n\n const yesPositionId = await this.getPositionId(marketId, 0n);\n const noPositionId = await this.getPositionId(marketId, 1n);\n\n const [yesBalance, noBalance] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, yesPositionId],\n }),\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, noPositionId],\n }),\n ]);\n\n if (formatted) {\n return {\n YES: formatAmount(yesBalance as bigint, decimals),\n NO: formatAmount(noBalance as bigint, decimals),\n };\n }\n\n return {\n YES: yesBalance as bigint,\n NO: noBalance as bigint,\n };\n }\n\n /**\n * Get market prices directly from on-chain data (RPC)\n * This bypasses the subgraph for guaranteed fresh pricing\n *\n * Uses mark price from the orderbook (mid-point of best bid/ask)\n * Falls back to last trade tick if no orderbook liquidity\n *\n * Returns prices in decimal format (e.g., \"0.80\" for 80%)\n */\n async getMarketPricesRPC(marketId: bigint) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const tickSize = BigInt(tradingData.tickSize);\n\n // Try mark price first (orderbook mid-point)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [markPrice0, markPrice1]: any[] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 0n],\n }),\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 1n],\n }),\n ]);\n\n // getMarkPrice returns (priceTick, isDefined)\n const tick0 = BigInt(markPrice0[0]);\n const isDefined0 = markPrice0[1] as boolean;\n const tick1 = BigInt(markPrice1[0]);\n const isDefined1 = markPrice1[1] as boolean;\n\n if (isDefined0 || isDefined1) {\n const price0Raw = tick0 * tickSize;\n const price1Raw = tick1 * tickSize;\n const yesPrice = isDefined0 ? (Number(price0Raw) / 1e18).toFixed(2) : '0.50';\n const noPrice = isDefined1 ? (Number(price1Raw) / 1e18).toFixed(2) : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Fallback: use last trade ticks\n const lastTick0 = BigInt(tradingData.lastTradeTick[0]);\n const lastTick1 = BigInt(tradingData.lastTradeTick[1]);\n\n if (lastTick0 > 0n || lastTick1 > 0n) {\n const yesPrice = lastTick0 > 0n\n ? (Number(lastTick0 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n const noPrice = lastTick1 > 0n\n ? (Number(lastTick1 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Default\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n } catch (error) {\n console.error('[SDK] RPC price fetch error:', error);\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n }\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Create a new market group (parent metadata only, no markets yet)\n *\n * @param params.question - Market question (e.g., \"Where will Giannis be traded?\")\n * @param params.description - Resolution criteria (shared by all markets)\n * @param params.collateralToken - Collateral token for all markets in group\n * @param params.tickSize - Price increment (same for all markets)\n * @param params.additionalReward - Additional UMA reward in collateral token units\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n * @returns Transaction hash\n */\n async createMarketGroup(params: {\n venueId: bigint;\n question: string;\n description: string;\n collateralToken: Address;\n tickSize: bigint;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee (same as regular market)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Encode tags as bytes32[]\n const groupTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market group (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'createMarketGroup',\n args: [\n params.venueId,\n params.question,\n params.description,\n params.collateralToken,\n params.tickSize,\n params.additionalReward,\n params.liveness ?? 0n,\n groupTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add a market to a Draft market group\n */\n async addMarketToGroup(params: {\n marketGroupId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addMarket',\n args: [params.marketGroupId, params.marketName, params.marketQuestion],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add placeholder markets to a Draft market group\n */\n async addPlaceholderMarkets(params: {\n marketGroupId: bigint;\n count: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n if (params.count < 1n || params.count > 50n) {\n throw new Error('Count must be between 1 and 50');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addPlaceholderMarkets',\n args: [params.marketGroupId, params.count],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a placeholder market with real question\n */\n async activatePlaceholder(params: {\n marketGroupId: bigint;\n marketId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'activatePlaceholder',\n args: [\n params.marketGroupId,\n params.marketId,\n params.marketName,\n params.marketQuestion,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a market group (locks totalMarkets, enables trading)\n */\n async activateMarketGroup(params: { marketGroupId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'activateMarketGroup',\n args: [params.marketGroupId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Convert NO positions to complementary YES positions + collateral\n *\n * Formula: N NO positions → (M-N) YES positions + (N-1) collateral\n */\n async convertPositions(params: {\n marketGroupId: bigint;\n indexSet: bigint;\n amount: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Check CTF approval for Diamond\n const isApproved = await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: CTF_IS_APPROVED_FOR_ALL_ABI,\n functionName: 'isApprovedForAll',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (!isApproved) {\n throw new Error(\n `CTF tokens not approved for Diamond. Please call: ctf.setApprovalForAll(\"${this.config.diamondAddress}\", true)`,\n );\n }\n\n // Get group data to extract conditionIds and collateralToken\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [params.marketGroupId],\n });\n\n // Get conditionIds for all markets in the group\n const marketIds: bigint[] = groupData.marketIds;\n const conditionIds: `0x${string}`[] = [];\n for (const mid of marketIds) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.getMarketOracleData(mid);\n conditionIds.push(oracleData.conditionId);\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: NegRiskFacetABI,\n functionName: 'convertPositions',\n args: [conditionIds, groupData.collateralToken, params.indexSet, params.amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market group data\n */\n async getMarketGroup(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get all market IDs in a group\n */\n async getGroupMarketIds(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getGroupMarketIds',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroupItem',\n args: [marketId],\n });\n }\n\n /**\n * Get market prices using subgraph data with orderbook fallback\n *\n * Price hierarchy:\n * 1. Last trade price (from Normal fills or Market orders)\n * 2. Orderbook-derived price (best execution cost)\n * 3. Default 50/50 (no information)\n */\n async getMarketPrices(marketId: bigint) {\n // Fetch market data from subgraph\n const query = `\n query GetMarketPrices($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n }\n }\n `;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.subgraph.request(query, {\n marketId: marketId.toString(),\n });\n const market = result.markets?.[0];\n\n if (!market) {\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // Priority 1: Use last trade prices\n const hasLastPrices = market?.lastPriceTick_0 || market?.lastPriceTick_1;\n const tickSize = BigInt(market.tickSize || '10000000000000000');\n\n if (hasLastPrices) {\n let yesPrice = 0.5;\n let noPrice = 0.5;\n\n if (market.lastPriceTick_0 && market.lastPriceTick_0 !== '0') {\n const yesPriceBigInt = BigInt(market.lastPriceTick_0) * tickSize;\n yesPrice = Number(yesPriceBigInt) / 1e18;\n noPrice = 1 - yesPrice;\n } else if (market.lastPriceTick_1 && market.lastPriceTick_1 !== '0') {\n const noPriceBigInt = BigInt(market.lastPriceTick_1) * tickSize;\n noPrice = Number(noPriceBigInt) / 1e18;\n yesPrice = 1 - noPrice;\n }\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'trade' as const,\n timestamp: market.lastTradeTimestamp,\n };\n }\n\n // Priority 2: Derive from orderbook (best execution cost for buyers)\n const { yesAsk, yesBid, noAsk, noBid } = await this.getBestPrices(marketId);\n\n const hasOrderbook = yesAsk > 0n || yesBid > 0n || noAsk > 0n || noBid > 0n;\n\n if (hasOrderbook) {\n const calcBuyPrice = (\n bestAsk: bigint,\n complementBestBid: bigint,\n ): number => {\n if (bestAsk > 0n) {\n return Number(bestAsk * tickSize) / 1e18;\n }\n if (complementBestBid > 0n) {\n const bidPrice = Number(complementBestBid * tickSize) / 1e18;\n return 1 - bidPrice;\n }\n return 0.5;\n };\n\n const yesPrice = calcBuyPrice(yesAsk, noBid);\n const noPrice = calcBuyPrice(noAsk, yesBid);\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'orderbook' as const,\n timestamp: null,\n };\n }\n\n // Priority 3: Default (no information available)\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // ============================================\n // Market Moderation\n // ============================================\n\n /**\n * Pause a market. Blocks trading but allows order cancellations.\n * Only the venue operator can call this.\n */\n async pauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'pauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Unpause a market. Resumes trading.\n * Only the venue operator can call this.\n */\n async unpauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'unpauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Tags\n // ============================================\n\n /**\n * Update tags for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketTags(params: {\n marketId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketTags',\n args: [params.marketId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update tags for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupTags(params: {\n marketGroupId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketGroupTags',\n args: [params.marketGroupId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Metadata\n // ============================================\n\n /**\n * Update metadata URI for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketMetadata(params: {\n marketId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketMetadata',\n args: [params.marketId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update metadata URI for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupMetadata(params: {\n marketGroupId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketGroupMetadata',\n args: [params.marketGroupId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { BaseModule } from './base';\nimport {\n LimitOrdersFacetABI,\n MatchingFacetABI,\n OrderBookFacetABI,\n MarketOrdersFacetABI,\n MarketsFacetABI,\n VaultFacetABI,\n BatchOrdersFacetABI,\n} from '../contracts';\nimport {\n tickToPrice,\n formatAmount,\n priceToTick,\n parseAmount,\n createExpiry,\n} from '../utils/conversions';\nimport { getCachedTokenDecimals, parseTokenAmount } from '../utils/decimals';\nimport type { Address } from 'viem';\n\nexport class TradeModule extends BaseModule {\n /**\n * Place a limit order\n * Use placeOrderSimple() for string-based inputs (recommended for frontends)\n */\n async placeOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place a limit order with simple string inputs (recommended for frontends)\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Expiry as duration string (e.g., \"1h\", \"24h\") or bigint timestamp\n *\n * NOTE: Outcome token amounts use the same decimals as the collateral token\n * (e.g., 6 for USDC) because splitPosition creates tokens 1:1 with collateral.\n */\n async placeOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }) {\n // Read market trading data to get collateral token decimals\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const tick = priceToTick(params.price);\n const qty = parseTokenAmount(params.quantity, decimals);\n\n const expiry =\n typeof params.expiry === 'string'\n ? (params.expiry === 'gtc' ? BigInt(0) : createExpiry(params.expiry))\n : params.expiry;\n\n return this.placeOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n side: params.side,\n tick,\n qty,\n expiry,\n });\n }\n\n /**\n * Cancel an order\n */\n async cancelOrder(orderId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrder',\n args: [orderId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel all remaining orders on a resolved market in a single transaction.\n * Regular cancelOrder / batchCancelOrders revert once the market is no longer\n * active, so this is the only way to clear stale orders post-resolution.\n * @param marketId - The resolved market\n * @param orderIds - Order IDs to cancel (must belong to caller)\n */\n async cancelOrdersOnResolvedMarket(marketId: bigint, orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrdersOnResolvedMarket',\n args: [marketId, orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order (FOK or FAK)\n *\n * @param params.marketId - The market to buy on\n * @param params.outcomeId - Which outcome to buy (0=YES, 1=NO)\n * @param params.collateralAmount - Amount of collateral to spend\n * @param params.maxPriceTick - Maximum price tick willing to pay (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order with simple string input (recommended for frontends)\n * @param params.amount - Collateral amount as decimal string (e.g., \"10.5\")\n * @param params.maxPrice - Maximum price as decimal string (e.g., \"0.85\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n maxPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const collateralAmount = parseTokenAmount(params.amount, decimals);\n const maxPriceTick = priceToTick(params.maxPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n collateralAmount,\n maxPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market order (simulate transaction)\n */\n async previewMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Preview placing an order (simulate transaction to check for reverts)\n */\n async previewPlaceOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Execute a market sell order (FOK or FAK)\n *\n * @param params.marketId - The market to sell on\n * @param params.outcomeId - Which outcome to sell (0=YES, 1=NO)\n * @param params.tokenAmount - Amount of outcome tokens to sell\n * @param params.minPriceTick - Minimum price tick willing to accept (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market sell order with simple string inputs (recommended for frontends)\n * @param params.amount - Token amount as decimal string (e.g., \"100.5\")\n * @param params.minPrice - Minimum price as decimal string (e.g., \"0.70\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketSellSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n minPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token decimals\n // (outcome tokens use same decimals as collateral)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const tokenAmount = parseTokenAmount(params.amount, decimals);\n const minPriceTick = priceToTick(params.minPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketSell({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n tokenAmount,\n minPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market sell order (simulate transaction)\n */\n async previewMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Watch for MarketOrderExecuted events\n */\n watchMarketOrder(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketOrderExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Watch for MarketSellExecuted events\n */\n watchMarketSell(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketSellExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Check whether any orders are matchable in the given market.\n * Returns a preview of which fill paths have crossing conditions,\n * plus top-of-book snapshot and head-order expiry flags.\n * Free off-chain (view function) — call before submitting matchOrders txs.\n */\n async canMatchOrders(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'canMatchOrders',\n args: [marketId],\n });\n }\n\n /**\n * Manually trigger order matching for a market\n */\n async matchOrders(params: { marketId: bigint; maxSteps?: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const maxSteps = params.maxSteps || 10n;\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MatchingFacetABI,\n functionName: 'matchOrders',\n args: [params.marketId, maxSteps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get order details by ID\n */\n async getOrder(orderId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'getOrder',\n args: [orderId],\n });\n }\n\n /**\n * Get tick level details (orders at a specific price)\n */\n async getTickLevel(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n }) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, params.outcomeId, params.side, params.tick],\n });\n }\n\n /**\n * Get top-of-book summary for a market\n * Returns the best bid/ask tick and depth at that level for each outcome\n * @param params.formatted - If true, returns human-readable prices and quantities\n */\n async getOrderBook(params: {\n marketId: bigint;\n formatted?: boolean;\n }) {\n const formatted = params.formatted ?? false;\n\n const getSide = async (outcomeId: number, side: number) => {\n const topTick = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [params.marketId, BigInt(outcomeId), side],\n })) as bigint;\n\n if (topTick === 0n) {\n return formatted\n ? { price: '0', quantity: '0', orders: 0, tick: 0n }\n : { tick: 0n, totalQty: 0n, depth: 0n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const level: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, BigInt(outcomeId), side, topTick],\n });\n\n if (formatted) {\n return {\n price: tickToPrice(topTick),\n quantity: formatAmount(level.totalQty),\n orders: Number(level.depth),\n tick: topTick,\n };\n }\n\n return {\n tick: topTick,\n headOrderId: level.headOrderId,\n totalQty: level.totalQty,\n depth: level.depth,\n };\n };\n\n const [yesBestBid, yesBestAsk, noBestBid, noBestAsk] = await Promise.all([\n getSide(0, 0), // YES Best Bid\n getSide(0, 1), // YES Best Ask\n getSide(1, 0), // NO Best Bid\n getSide(1, 1), // NO Best Ask\n ]);\n\n return {\n YES: {\n bestBid: yesBestBid,\n bestAsk: yesBestAsk,\n },\n NO: {\n bestBid: noBestBid,\n bestAsk: noBestAsk,\n },\n };\n }\n\n /**\n * Split collateral into YES + NO outcome tokens\n * Requires USDC approval for the Diamond proxy.\n * @param marketId - The market to split for\n * @param amount - Collateral amount in smallest unit (e.g. USDC with 6 decimals)\n */\n async splitPosition(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'splitPosition',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Merge YES + NO outcome tokens back into collateral\n * Requires CTF setApprovalForAll for the Diamond proxy.\n * @param marketId - The market to merge for\n * @param amount - Amount of each outcome token to merge (in smallest unit)\n */\n async mergePositions(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'mergePositions',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---------------------------------------------------------------------------\n // Batch order management\n // ---------------------------------------------------------------------------\n\n /**\n * Place multiple limit orders on the same market in a single transaction.\n * Gas-optimized: aggregates token transfers (max 3 instead of N).\n * @param params.marketId - The market for all orders\n * @param params.orders - Array of order params (max 20)\n */\n async batchPlaceOrders(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number; // 0=BUY, 1=SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchPlaceOrders',\n args: [params.marketId, params.orders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place multiple limit orders with simple string inputs (recommended for frontends).\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Duration string (e.g., \"1h\", \"gtc\") or bigint timestamp\n */\n async batchPlaceOrdersSimple(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const orders = params.orders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.batchPlaceOrders({ marketId: params.marketId, orders });\n }\n\n /**\n * Cancel multiple orders atomically in a single transaction.\n * Orders can span different markets.\n * @param orderIds - Array of order IDs to cancel (max 100). Must be owned by caller.\n */\n async batchCancelOrders(orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchCancelOrders',\n args: [orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Atomically cancel stale orders and place new ones on the same market.\n * Cancel phase runs first; if any step fails the entire tx reverts.\n * @param params.marketId - Market for new orders\n * @param params.cancelOrderIds - Orders to cancel (max 100)\n * @param params.newOrders - New orders to place (max 20)\n */\n async cancelAndReplace(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'cancelAndReplace',\n args: [params.marketId, params.cancelOrderIds, params.newOrders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel-and-replace with simple string inputs (recommended for frontends).\n */\n async cancelAndReplaceSimple(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const newOrders = params.newOrders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.cancelAndReplace({\n marketId: params.marketId,\n cancelOrderIds: params.cancelOrderIds,\n newOrders,\n });\n }\n}\n","import { gql } from 'graphql-request';\n\nexport const GET_VENUES = gql`\n query GetVenues(\n $first: Int = 100\n $skip: Int = 0\n $orderBy: Venue_orderBy = createdAt\n $orderDirection: OrderDirection = desc\n ) {\n venues(\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n venueId\n name\n operator\n metadata\n # Fee configuration\n venueFeeBps\n creatorFeeBps\n # Oracle configuration\n umaRewardAmount\n umaMinBond\n # Access control\n tradingAccessControl\n creationAccessControl\n # State\n paused\n # Statistics\n totalMarkets\n totalMarketGroups\n activeMarkets\n totalVolume\n totalFees\n # Timestamps\n createdAt\n }\n }\n`;\n\nexport const GET_MARKETS = gql`\n query GetMarkets(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKETS_WITH_PRICING = gql`\n query GetMarketsWithPricing(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n # Last trade prices\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n # Top of book for mark price calculation\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKET = gql`\n query GetMarket($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n totalFees\n uniqueTraders\n tags\n metadataURI\n createdAt\n creator {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_TRADES = gql`\n query GetTrades($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n avgPrice\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\nexport const GET_CHART_TRADES = gql`\n query GetChartTrades(\n $marketId: BigInt!\n $timestampGte: BigInt\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId }, timestamp_gte: $timestampGte }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_CHART_TRADES_ALL = gql`\n query GetChartTradesAll(\n $marketId: BigInt!\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_ORDERS = gql`\n query GetOrders($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n orders(\n where: { market_: { marketId: $marketId }, deleted: false }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n orderId\n market {\n marketId\n }\n trader {\n address\n }\n outcome\n side\n tick\n amount\n filled\n status\n createdAt\n createdAtBlock\n cancelledAt\n expiredAt\n }\n }\n`;\n\nexport const GET_USER = gql`\n query GetUser($address: Bytes!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalMarkets\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TOP_OF_BOOK = gql`\n query GetTopOfBook($marketId: BigInt!) {\n topOfBooks(where: { market_: { marketId: $marketId } }) {\n id\n market {\n marketId\n }\n outcome\n side\n topTick\n updatedAt\n updatedAtBlock\n }\n }\n`;\n\nexport const GET_PROTOCOL_STATS = gql`\n query GetProtocolStats {\n protocol(id: \"1\") {\n id\n totalVenues\n totalMarkets\n totalMarketGroups\n totalVolume\n totalFees\n totalUsers\n updatedAt\n }\n }\n`;\n\nexport const GET_QUESTION = gql`\n query GetQuestion($questionId: ID!) {\n question(id: $questionId) {\n id\n questionId\n conditionId\n ancillaryData\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n activeAssertion {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n }\n assertions {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n settledAt\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_QUESTIONS = gql`\n query GetQuestions($first: Int = 100, $skip: Int = 0) {\n questions(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n questionId\n conditionId\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n market {\n marketId\n question\n status\n }\n activeAssertion {\n assertionId\n proposedOutcome\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\n// ============================================\n// Market Groups\n// ============================================\n\nexport const GET_MARKET_GROUPS = gql`\n query GetMarketGroups($venueId: BigInt, $first: Int = 100, $skip: Int = 0) {\n marketGroups(\n where: { venue_: { venueId: $venueId } }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n reward\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP = gql`\n query GetMarketGroup($groupId: BigInt!) {\n marketGroups(where: { groupId: $groupId }) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n createdAtBlock\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_GROUP_MARKETS = gql`\n query GetGroupMarkets($groupId: BigInt!, $first: Int = 100, $skip: Int = 0) {\n markets(\n where: { groupId: $groupId }\n first: $first\n skip: $skip\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n groupId\n marketGroupItem {\n marketName\n isPlaceholder\n createdAt\n activatedAt\n }\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n createdAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP_ITEM = gql`\n query GetMarketGroupItem($marketId: BigInt!) {\n marketGroupItems(where: { market_: { marketId: $marketId } }) {\n id\n marketName\n isPlaceholder\n market {\n id\n marketId\n question\n status\n }\n marketGroup {\n id\n groupId\n marketQuestion\n }\n createdAt\n activatedAt\n }\n }\n`;\n\n// ============================================\n// Unified Market Feed (Polymarket-style)\n// ============================================\n\n/**\n * Get unified feed of standalone markets + market groups\n * This query fetches both types in a single request for efficient homepage display\n * Frontend should merge and sort the results\n */\nexport const GET_UNIFIED_MARKET_FEED = gql`\n query GetUnifiedMarketFeed(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n # Pricing data\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n # Include child markets with their prices (no status filter — use isPlaceholder to filter)\n markets(\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n # Pricing data for probability calculation\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n # Market group item metadata\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — one row per (venue, seriesKey)\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get unified feed sorted by volume (most popular)\n */\nexport const GET_UNIFIED_MARKET_FEED_BY_VOLUME = gql`\n query GetUnifiedMarketFeedByVolume(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets sorted by volume (excluding price series members)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n }\n\n # Market groups\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — venue-scoped, only those with an active current market\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n// ============================================\n// Cross-Venue Queries (Protocol App)\n// ============================================\n\n/**\n * Get all markets across all venues (no venue filter)\n * Used by the protocol app's global market explorer\n */\nexport const GET_ALL_MARKETS_FEED = gql`\n query GetAllMarketsFeed($first: Int = 50, $skip: Int = 0) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets(\n where: { status_not: \"Draft\" }\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get all markets across all venues sorted by volume\n */\nexport const GET_ALL_MARKETS_FEED_BY_VOLUME = gql`\n query GetAllMarketsFeedByVolume($first: Int = 50, $skip: Int = 0) {\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues, sorted by volume of current market\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get a single PriceMarketSeries with all its member markets, ordered by closeTime.\n * Used by the market detail page to render the time-button navigation strip.\n */\nexport const GET_PRICE_MARKET_SERIES = gql`\n query GetPriceMarketSeries($venueId: BigInt!, $seriesKey: String!) {\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, seriesKey: $seriesKey }\n first: 1\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n }\n venue {\n id\n venueId\n name\n }\n markets(first: 1000, orderBy: marketId, orderDirection: asc) {\n id\n marketId\n question\n status\n resolvedOutcome\n outcomes\n priceMarket {\n openTime\n closeTime\n resolved\n outcome\n finalPrice\n strikePrice\n }\n }\n }\n }\n`;\n\n/**\n * Get recent trades across all venues (for activity feed / ticker)\n */\nexport const GET_RECENT_TRADES = gql`\n query GetRecentTrades($first: Int = 20, $skip: Int = 0) {\n trades(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n question\n outcomes\n venue {\n venueId\n name\n }\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\n/**\n * Get recently created markets across all venues\n */\nexport const GET_RECENT_MARKETS = gql`\n query GetRecentMarkets($first: Int = 20, $skip: Int = 0) {\n markets(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n where: { status_not: \"Draft\" }\n ) {\n id\n marketId\n question\n outcomes\n status\n totalVolume\n uniqueTraders\n createdAt\n venue {\n venueId\n name\n }\n creator {\n address\n }\n }\n }\n`;\n\n// ============================================\n// Trader Analytics Queries\n// ============================================\n\nexport const GET_TRADER_PROFILE = gql`\n query GetTraderProfile($address: ID!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n totalMarkets\n totalMarketGroups\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TRADER_POSITIONS = gql`\n query GetTraderPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_CLOSED_POSITIONS = gql`\n query GetTraderClosedPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_FILLS = gql`\n query GetTraderFills(\n $trader: String!\n $first: Int = 50\n $skip: Int = 0\n ) {\n fills(\n where: { trader: $trader }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n outcome\n side\n tick\n amount\n cost\n fees\n tradeType\n avgPrice\n timestamp\n blockNumber\n transactionHash\n market {\n id\n marketId\n question\n outcomes\n tickSize\n status\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_LEADERBOARD = gql`\n query GetLeaderboard(\n $orderBy: User_orderBy = totalVolume\n $orderDirection: OrderDirection = desc\n $first: Int = 50\n $skip: Int = 0\n ) {\n users(\n where: { totalTradeCount_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n address\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\n// ============================================\n// Venue-Scoped Trader Analytics Queries\n// ============================================\n\nexport const GET_TRADER_VENUE_PROFILE = gql`\n query GetTraderVenueProfile($id: ID!) {\n userVenueStat(id: $id) {\n id\n totalOrdersPlaced\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n trader {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_VENUE_LEADERBOARD = gql`\n query GetVenueLeaderboard(\n $venueId: BigInt!\n $orderBy: UserVenueStat_orderBy = totalVolume\n $orderDirection: OrderDirection = desc\n $first: Int = 50\n $skip: Int = 0\n ) {\n userVenueStats(\n where: { venue_: { venueId: $venueId }, totalTradeCount_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n trader {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_TRADER_VENUE_POSITIONS = gql`\n query GetTraderVenuePositions(\n $trader: String!\n $venueId: BigInt!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: {\n trader: $trader\n venue_: { venueId: $venueId }\n quantity_gt: \"0\"\n }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_VENUE_CLOSED_POSITIONS = gql`\n query GetTraderVenueClosedPositions(\n $trader: String!\n $venueId: BigInt!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: {\n trader: $trader\n venue_: { venueId: $venueId }\n quantity: \"0\"\n }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_VENUE_FILLS = gql`\n query GetTraderVenueFills(\n $trader: String!\n $venueId: BigInt!\n $first: Int = 50\n $skip: Int = 0\n ) {\n fills(\n where: {\n trader: $trader\n venue_: { venueId: $venueId }\n }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n outcome\n side\n tick\n amount\n cost\n fees\n tradeType\n avgPrice\n timestamp\n blockNumber\n transactionHash\n market {\n id\n marketId\n question\n outcomes\n tickSize\n status\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_MARKET_TOP_HOLDERS = gql`\n query GetMarketTopHolders(\n $marketId: String!\n $first: Int = 20\n ) {\n traderPositions(\n where: { market: $marketId, quantity_gt: \"0\" }\n first: $first\n orderBy: quantity\n orderDirection: desc\n ) {\n id\n trader {\n id\n address\n }\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n }\n }\n`;\n","import type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { gql } from 'graphql-request';\nimport { BaseModule } from './base';\nimport { calculateChancePercent } from '../utils/conversions';\n\n/**\n * Market lifecycle statuses indexed by the subgraph. Mirrors the on-chain\n * market state machine.\n */\nexport type MarketStatus = 'Draft' | 'Active' | 'Resolved' | 'Invalid';\n\nconst ALL_MARKET_STATUSES: MarketStatus[] = ['Draft', 'Active', 'Resolved', 'Invalid'];\nimport {\n GET_VENUES,\n GET_MARKETS,\n GET_MARKETS_WITH_PRICING,\n GET_MARKET,\n GET_TRADES,\n GET_ORDERS,\n GET_USER,\n GET_TOP_OF_BOOK,\n GET_PROTOCOL_STATS,\n GET_MARKET_GROUPS,\n GET_MARKET_GROUP,\n GET_GROUP_MARKETS,\n GET_MARKET_GROUP_ITEM,\n GET_UNIFIED_MARKET_FEED,\n GET_UNIFIED_MARKET_FEED_BY_VOLUME,\n GET_PRICE_MARKET_SERIES,\n GET_ALL_MARKETS_FEED,\n GET_ALL_MARKETS_FEED_BY_VOLUME,\n GET_RECENT_TRADES,\n GET_RECENT_MARKETS,\n GET_CHART_TRADES,\n GET_CHART_TRADES_ALL,\n GET_TRADER_PROFILE,\n GET_TRADER_POSITIONS,\n GET_TRADER_CLOSED_POSITIONS,\n GET_TRADER_FILLS,\n GET_LEADERBOARD,\n GET_TRADER_VENUE_PROFILE,\n GET_TRADER_VENUE_POSITIONS,\n GET_TRADER_VENUE_CLOSED_POSITIONS,\n GET_TRADER_VENUE_FILLS,\n GET_VENUE_LEADERBOARD,\n GET_MARKET_TOP_HOLDERS,\n} from '../subgraph/queries';\n\nexport class PublicModule extends BaseModule {\n /**\n * Get all venues\n */\n async getVenues(params?: {\n first?: number;\n skip?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n }) {\n return this.subgraph.request(GET_VENUES, {\n first: params?.first || 100,\n skip: params?.skip || 0,\n orderBy: params?.orderBy || 'createdAt',\n orderDirection: params?.orderDirection || 'desc',\n });\n }\n\n /**\n * Get markets for a venue\n */\n async getMarkets(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get markets with pricing data (last trade prices + statistics)\n *\n * @param params.search Optional case-insensitive substring match against the\n * market `question` field. Empty string matches all markets.\n * @param params.statuses Optional list of market statuses to include. Omit\n * to include all statuses (Draft, Active, Resolved, Invalid).\n */\n async getMarketsWithPricing(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS_WITH_PRICING, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market by ID\n */\n async getMarket(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET, {\n marketId: marketId.toString(),\n });\n return response.markets[0] || null;\n }\n\n /**\n * Get trade history for a market\n */\n async getTradeHistory(params: {\n marketId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADES, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trade data optimized for price charting.\n * Supports time-window filtering and higher limits.\n */\n async getChartTrades(params: {\n marketId: bigint;\n timestampGte?: bigint;\n first?: number;\n skip?: number;\n }) {\n const variables: Record<string, any> = {\n marketId: params.marketId.toString(),\n first: params.first || 1000,\n skip: params.skip || 0,\n };\n\n // Use a separate query without timestamp_gte filter for ALL timeframe\n // The subgraph treats timestamp_gte: null as a filter that matches nothing\n if (params.timestampGte !== undefined) {\n variables.timestampGte = params.timestampGte.toString();\n return this.subgraph.request<any>(GET_CHART_TRADES, variables);\n }\n\n return this.subgraph.request<any>(GET_CHART_TRADES_ALL, variables);\n }\n\n /**\n * Get orders for a market\n */\n async getOrders(params: { marketId: bigint; first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_ORDERS, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get user data by address\n */\n async getUser(address: string) {\n return this.subgraph.request<any>(GET_USER, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get top of book for a market\n */\n async getTopOfBook(marketId: bigint) {\n return this.subgraph.request<any>(GET_TOP_OF_BOOK, {\n marketId: marketId.toString(),\n });\n }\n\n /**\n * Get protocol-wide statistics\n */\n async getProtocolStats() {\n return this.subgraph.request<any>(GET_PROTOCOL_STATS);\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Get market groups for a venue\n */\n async getMarketGroups(params: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKET_GROUPS, {\n venueId: params.venueId?.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group by ID\n */\n async getMarketGroup(groupId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP, {\n groupId: groupId.toString(),\n });\n return response.marketGroups[0] || null;\n }\n\n /**\n * Get all markets in a group\n */\n async getGroupMarkets(params: {\n groupId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_GROUP_MARKETS, {\n groupId: params.groupId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP_ITEM, {\n marketId: marketId.toString(),\n });\n return response.marketGroupItems[0] || null;\n }\n\n // ============================================\n // Unified Market Feed (Polymarket-style)\n // ============================================\n\n /**\n * Get unified feed of standalone markets + market groups\n * Returns both types in a single query, similar to Polymarket's homepage\n *\n * @param params.venueId - Optional venue filter\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - Sort order: 'created' (newest first) or 'volume' (most popular)\n *\n * @returns Object with standaloneMarkets and marketGroups arrays\n */\n async getUnifiedMarketFeed(params?: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n\n if (sortBy === 'volume') {\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED_BY_VOLUME, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Merge and sort unified feed results\n * Combines standaloneMarkets, marketGroups, and priceMarketSeries into a single sorted array.\n * Each row in the merged feed carries a `type` discriminator: 'standalone' | 'group' | 'series'.\n */\n mergeAndSortFeed(\n feedData: any,\n sortBy: 'created' | 'volume' = 'created',\n limit?: number,\n ): Array<any> {\n const standalone = (feedData.standaloneMarkets || []).map((m: any) => ({\n ...m,\n type: 'standalone' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(m.totalVolume || '0')\n : BigInt(m.createdAt || '0'),\n }));\n\n const groups = (feedData.marketGroups || []).map((g: any) => {\n // Calculate total volume for group (sum of all child markets)\n const totalVolume =\n g.markets?.reduce(\n (sum: bigint, m: any) => sum + BigInt(m.totalVolume || '0'),\n 0n,\n ) || 0n;\n\n return {\n ...g,\n type: 'group' as const,\n totalVolume: totalVolume.toString(),\n sortValue:\n sortBy === 'volume' ? totalVolume : BigInt(g.createdAt || '0'),\n };\n });\n\n // Price market series rows. Sort key is the current market's volume when sorting\n // by volume, otherwise the series' updatedAt (which is bumped on each new window).\n const series = (feedData.priceMarketSeries || []).map((s: any) => ({\n ...s,\n type: 'series' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(s.currentMarket?.totalVolume || '0')\n : BigInt(s.updatedAt || s.createdAt || '0'),\n }));\n\n // Merge and sort\n const merged = [...standalone, ...groups, ...series].sort((a, b) => {\n // Sort descending (highest/newest first)\n return a.sortValue > b.sortValue ? -1 : 1;\n });\n\n // Apply limit if specified\n return limit ? merged.slice(0, limit) : merged;\n }\n\n /**\n * Get a PriceMarketSeries with all its member markets.\n *\n * Used by the market detail page to render the time-button navigation strip\n * showing past, current, and upcoming windows for the same asset+interval.\n *\n * @param params.venueId - Venue the series belongs to\n * @param params.seriesKey - Series key, e.g. \"btc-updown-5m\"\n * @returns The series with `markets` array, or null if not found\n */\n async getPriceMarketSeries(params: {\n venueId: bigint;\n seriesKey: string;\n }): Promise<any | null> {\n const response = await this.subgraph.request<any>(GET_PRICE_MARKET_SERIES, {\n venueId: params.venueId.toString(),\n seriesKey: params.seriesKey,\n });\n return response.priceMarketSeries?.[0] || null;\n }\n\n /**\n * Helper: extract the seriesKey from a market's tags.\n *\n * A market belongs to a price series iff its tags contain both \"price-market\"\n * and a \"series:<key>\" tag. Returns the key (without prefix) or null.\n */\n extractSeriesKey(tags: string[] | undefined | null): string | null {\n if (!tags) return null;\n let hasPriceMarketTag = false;\n let seriesKey: string | null = null;\n for (const t of tags) {\n if (t === 'price-market') hasPriceMarketTag = true;\n else if (t.startsWith('series:')) seriesKey = t.slice('series:'.length);\n }\n return hasPriceMarketTag ? seriesKey : null;\n }\n\n /**\n * Calculate probability for a market using mark price waterfall.\n * Returns probability as a decimal string (e.g., \"0.65\" for 65%)\n *\n * Uses Polymarket-style pricing: implied midpoint → last trade → default 50%.\n *\n * @param market - Market object from subgraph (with topOfBook and timestamp fields)\n * @returns Probability string or null if no data available\n */\n calculateMarketProbability(market: any): string | null {\n if (!market.tickSize) return null;\n\n const chance = calculateChancePercent(market);\n if (chance === 50 && !market.lastPriceTick_0 && !market.lastPriceTick_1) {\n return null; // Truly no data — keep null for \"no probability\" display\n }\n return (chance / 100).toFixed(2);\n }\n\n /**\n * Format market group for display (Polymarket-style)\n * Enriches child markets with calculated probabilities and formats\n */\n formatMarketGroupForDisplay(group: any) {\n const outcomes = (group.markets || [])\n .filter((m: any) => !m.marketGroupItem?.isPlaceholder)\n .map((m: any) => ({\n marketId: m.marketId,\n name: m.marketGroupItem?.marketName || 'Unknown',\n question: m.question,\n probability: this.calculateMarketProbability(m),\n status: m.status,\n totalVolume: m.totalVolume,\n }))\n .sort((a: any, b: any) => {\n // Sort by probability (highest first)\n const probA = parseFloat(a.probability || '0');\n const probB = parseFloat(b.probability || '0');\n return probB - probA;\n });\n\n return {\n type: 'group' as const,\n groupId: group.groupId,\n marketQuestion: group.marketQuestion,\n status: group.status,\n totalMarkets: group.totalMarkets,\n activeMarketCount: group.activeMarketCount,\n resolvedMarketId: group.resolvedMarketId,\n createdAt: group.createdAt,\n outcomes,\n venue: group.venue,\n creator: group.creator,\n };\n }\n\n // ============================================\n // Cross-Venue Queries (Protocol App)\n // ============================================\n\n /**\n * Get all markets across all venues (no venue filter)\n * Returns standaloneMarkets + marketGroups for global market explorer\n *\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - 'created' (newest) or 'volume' (most popular)\n */\n async getAllMarketsFeed(params?: {\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n const query =\n sortBy === 'volume'\n ? GET_ALL_MARKETS_FEED_BY_VOLUME\n : GET_ALL_MARKETS_FEED;\n\n return this.subgraph.request<any>(query, {\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top venues by volume\n */\n async getTopVenues(first = 10) {\n return this.subgraph.request(GET_VENUES, {\n first,\n skip: 0,\n orderBy: 'totalVolume',\n orderDirection: 'desc',\n });\n }\n\n /**\n * Get recent trades across all venues (for activity feed / ticker)\n */\n async getRecentTrades(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_TRADES, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get recently created markets across all venues\n */\n async getRecentMarkets(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_MARKETS, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n // ============================================\n // Trader Analytics\n // ============================================\n\n /**\n * Get trader profile with aggregate stats\n */\n async getTraderProfile(address: string) {\n return this.subgraph.request<any>(GET_TRADER_PROFILE, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get trader's open positions (quantity > 0) with P&L data\n */\n async getTraderPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's closed positions (quantity = 0) with realized P&L\n */\n async getTraderClosedPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_CLOSED_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's fill history (activity feed)\n */\n async getTraderTrades(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_FILLS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get leaderboard (top traders sorted by volume or P&L)\n */\n async getLeaderboard(params?: {\n orderBy?: 'totalVolume' | 'totalRealizedPnL' | 'totalTradeCount';\n orderDirection?: 'asc' | 'desc';\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_LEADERBOARD, {\n orderBy: params?.orderBy || 'totalVolume',\n orderDirection: params?.orderDirection || 'desc',\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n // ============================================\n // Venue-Scoped Trader Analytics\n // ============================================\n\n /**\n * Get a trader's per-venue profile stats. Returns the `UserVenueStat` row\n * for (venueId, address) when present, else null when the trader has never\n * traded in this venue.\n */\n async getTraderVenueProfile(params: { trader: string; venueId: bigint }) {\n return this.subgraph.request<any>(GET_TRADER_VENUE_PROFILE, {\n id: `${params.venueId.toString()}-${params.trader.toLowerCase()}`,\n });\n }\n\n /**\n * Get a trader's open positions (quantity > 0) scoped to a single venue.\n */\n async getTraderVenuePositions(params: {\n trader: string;\n venueId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_VENUE_POSITIONS, {\n trader: params.trader.toLowerCase(),\n venueId: params.venueId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get a trader's closed positions (quantity = 0) scoped to a single venue.\n */\n async getTraderVenueClosedPositions(params: {\n trader: string;\n venueId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_VENUE_CLOSED_POSITIONS, {\n trader: params.trader.toLowerCase(),\n venueId: params.venueId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get a trader's fill history (activity feed) scoped to a single venue.\n */\n async getTraderVenueTrades(params: {\n trader: string;\n venueId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_VENUE_FILLS, {\n trader: params.trader.toLowerCase(),\n venueId: params.venueId.toString(),\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get the venue-scoped leaderboard (top traders within a single venue).\n */\n async getVenueLeaderboard(params: {\n venueId: bigint;\n orderBy?: 'totalVolume' | 'totalRealizedPnL' | 'totalTradeCount';\n orderDirection?: 'asc' | 'desc';\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_VENUE_LEADERBOARD, {\n venueId: params.venueId.toString(),\n orderBy: params.orderBy || 'totalVolume',\n orderDirection: params.orderDirection || 'desc',\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get top holders for a market (by position size)\n */\n async getMarketTopHolders(params: {\n marketId: string;\n first?: number;\n }) {\n return this.subgraph.request<any>(GET_MARKET_TOP_HOLDERS, {\n marketId: params.marketId,\n first: params.first || 20,\n });\n }\n\n // ============================================\n // Raw subgraph access\n // ============================================\n\n /**\n * Run an arbitrary GraphQL query against the same subgraph endpoint the SDK\n * uses. Lets external services (e.g. cron workers) share the SDK's\n * subgraph connection without instantiating their own GraphQLClient.\n */\n async raw<T = unknown>(\n query: string | TypedDocumentNode<T>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.subgraph.request<T>(query, variables);\n }\n\n // ============================================\n // Price Markets\n // ============================================\n\n /**\n * Find an unresolved PriceMarket matching (feedId, closeTime) created by\n * `creator`. Returns null when no match exists. Used as a create-idempotency\n * check by price-market bots before submitting a new market.\n */\n async findPriceMarketByFeedAndCloseTime(params: {\n pythFeedId: `0x${string}`;\n closeTime: bigint;\n creator: `0x${string}`;\n }): Promise<{ marketId: bigint } | null> {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{ id: string; market: { marketId: string } }>;\n }>(FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME, {\n feedId: params.pythFeedId.toLowerCase(),\n closeTime: params.closeTime.toString(),\n creator: params.creator.toLowerCase(),\n });\n const hit = data.priceMarkets[0];\n return hit ? { marketId: BigInt(hit.market.marketId) } : null;\n }\n\n /**\n * List unresolved PriceMarkets created by `creator` whose closeTime is in\n * the past and whose parent Market is still Active, ordered by closeTime\n * ascending. Used by resolution cron workers to find markets that need\n * settling.\n */\n async findExpiredOpenPriceMarkets(params: {\n creator: `0x${string}`;\n now: bigint;\n first?: number;\n }): Promise<\n Array<{ marketId: bigint; feedId: `0x${string}`; closeTime: bigint }>\n > {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{\n id: string;\n feedId: string;\n closeTime: string;\n market: { marketId: string };\n }>;\n }>(FIND_EXPIRED_OPEN_PRICE_MARKETS, {\n creator: params.creator.toLowerCase(),\n now: params.now.toString(),\n first: params.first ?? 100,\n });\n return data.priceMarkets.map((p) => ({\n marketId: BigInt(p.market.marketId),\n feedId: p.feedId as `0x${string}`,\n closeTime: BigInt(p.closeTime),\n }));\n }\n}\n\nconst FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME = gql`\n query FindPriceMarketByFeedAndCloseTime(\n $feedId: Bytes!\n $closeTime: BigInt!\n $creator: Bytes!\n ) {\n priceMarkets(\n where: {\n feedId: $feedId\n closeTime: $closeTime\n resolved: false\n market_: { creator: $creator }\n }\n first: 1\n ) {\n id\n market {\n marketId\n }\n }\n }\n`;\n\nconst FIND_EXPIRED_OPEN_PRICE_MARKETS = gql`\n query FindExpiredOpenPriceMarkets(\n $creator: Bytes!\n $now: BigInt!\n $first: Int!\n ) {\n priceMarkets(\n where: {\n resolved: false\n closeTime_lt: $now\n market_: { creator: $creator, status: Active }\n }\n first: $first\n orderBy: closeTime\n orderDirection: asc\n ) {\n id\n feedId\n closeTime\n market {\n marketId\n }\n }\n }\n`;\n","import { BaseModule } from './base';\nimport { ERC20ABI } from '../contracts';\nimport type { Address } from 'viem';\n\nexport class TokenModule extends BaseModule {\n /**\n * Approve a spender to spend tokens\n */\n async approve(token: Address, spender: Address, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'approve',\n args: [spender, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get allowance\n */\n async getAllowance(token: Address, owner: Address, spender: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'allowance',\n args: [owner, spender],\n });\n }\n\n /**\n * Get balance\n */\n async getBalance(token: Address, owner: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'balanceOf',\n args: [owner],\n });\n }\n\n /**\n * Get token decimals\n */\n async getDecimals(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'decimals',\n });\n }\n\n /**\n * Get token symbol\n */\n async getSymbol(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'symbol',\n });\n }\n\n /**\n * Get token name\n */\n async getName(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'name',\n });\n }\n}\n","import { BaseModule } from './base';\nimport {\n ResolutionFacetABI,\n MarketsFacetABI,\n ProtocolFacetABI,\n ConditionalTokensABI,\n UmaOracleABI,\n} from '../contracts';\nimport { erc20Abi } from 'viem';\nimport type { Address } from 'viem';\n\n/**\n * UMA Module - Handles oracle assertion and resolution operations\n *\n * Workflow:\n * 1. Market is created → gets a questionId\n * 2. After resolutionTime, anyone can assert an outcome → gets assertionId\n * 3. After liveness period, anyone can settle the assertion\n * 4. After settlement (if truthful), anyone can report resolution to CTF\n */\nexport class UmaModule extends BaseModule {\n /**\n * Assert an outcome for a market question\n *\n * @param params.marketId - The market ID to assert on\n * @param params.outcome - The outcome string (e.g., \"YES\", \"NO\")\n * @param params.autoApprove - Automatically approve bond token if needed (default: true)\n *\n * @returns Transaction hash\n */\n async assertMarketOutcome(params: {\n marketId: bigint;\n outcome: string;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n // Step 1: Get market registry data to find questionId\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [params.marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n\n // Step 2: Get effective bond (max of requiredBond and UMA's minimumBond)\n const { effectiveBond, currency } = await this.getEffectiveBond(params.marketId);\n const bondAmount = effectiveBond;\n\n // Step 3: Check current allowance (approve Diamond, which delegates to ResolutionFacet)\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n // Step 4: Approve if needed\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [this.config.diamondAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n const newAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n if (newAllowance < bondAmount) {\n throw new Error(\n `Approval failed to update. New allowance: ${newAllowance.toString()}, Required: ${bondAmount.toString()}`\n );\n }\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond token allowance. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}. Please approve the Diamond (${\n this.config.diamondAddress\n }) to spend bond tokens.`\n );\n }\n\n // Step 5: Check balance\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond token balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n // Step 6: Assert the outcome via Diamond\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'assertMarketOutcome',\n args: [questionId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the effective bond for a market, accounting for UMA's minimum bond.\n * The contract uses max(requiredBond, oo.getMinimumBond(currency)).\n */\n async getEffectiveBond(marketId: bigint): Promise<{\n requiredBond: bigint;\n minimumBond: bigint;\n effectiveBond: bigint;\n currency: Address;\n }> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const requiredBond = BigInt(oracleData.requiredBond);\n const currency = oracleData.currency as Address;\n\n const umaOracle = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n\n const minimumBond = (await this.publicClient.readContract({\n address: umaOracle,\n abi: UmaOracleABI,\n functionName: 'getMinimumBond',\n args: [currency],\n })) as bigint;\n\n const effectiveBond = requiredBond > minimumBond ? requiredBond : minimumBond;\n\n return { requiredBond, minimumBond, effectiveBond, currency };\n }\n\n /**\n * Settle an assertion after the liveness period\n */\n async settleAssertion(assertionId: `0x${string}`) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'settleAssertion',\n args: [assertionId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the UMA Optimistic Oracle V3 address for the active Diamond.\n */\n async getUmaOracleAddress(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n }\n\n /**\n * Dispute an active assertion directly on the UMA Optimistic Oracle V3.\n *\n * The dispute escalates the assertion to UMA's DVM, which arbitrates the\n * outcome via tokenholder vote. The disputer must post a bond equal to the\n * asserter's bond — the winner is reimbursed and receives a share of the\n * loser's bond.\n *\n * @param params.assertionId - The active assertionId to dispute\n * @param params.autoApprove - Approve the bond currency to the oracle if needed (default: true)\n *\n * @returns Transaction hash\n */\n async disputeAssertion(params: {\n assertionId: `0x${string}`;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n const oracleAddress = await this.getUmaOracleAddress();\n\n // Read assertion to get currency + bond amount required to dispute.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'getAssertion',\n args: [params.assertionId],\n });\n\n const currency = assertion.currency as Address;\n const bondAmount = BigInt(assertion.bond);\n\n if (assertion.disputer !== '0x0000000000000000000000000000000000000000') {\n throw new Error('Assertion has already been disputed');\n }\n\n if (assertion.settled) {\n throw new Error('Assertion is already settled');\n }\n\n const currentTime = Math.floor(Date.now() / 1000);\n if (currentTime >= Number(assertion.expirationTime)) {\n throw new Error('Liveness period has expired — assertion can no longer be disputed');\n }\n\n // Approve oracle to pull bond from disputer if needed.\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, oracleAddress],\n })) as bigint;\n\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [oracleAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond currency allowance for oracle. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}.`\n );\n }\n\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond currency balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'disputeAssertion',\n args: [params.assertionId, accountAddress],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Report resolution after UMA settlement\n */\n async reportResolution(params: { marketId: bigint; outcome: string }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'reportResolution',\n args: [params.marketId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market has been resolved in CTF\n */\n async getResolutionStatus(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n if (payoutDenominator === 0n) {\n return {\n resolved: false,\n winningOutcome: null,\n payouts: [],\n };\n }\n\n const outcomeSlotCount = Number(oracleData.outcomeSlotCount || 2);\n const payouts: bigint[] = [];\n\n for (let i = 0; i < outcomeSlotCount; i++) {\n const payout = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, BigInt(i)],\n })) as bigint;\n payouts.push(payout);\n }\n\n let winningOutcome: string | null = null;\n if (outcomeSlotCount === 2) {\n if (payouts[0] > 0n && payouts[1] === 0n) {\n winningOutcome = 'YES';\n } else if (payouts[1] > 0n && payouts[0] === 0n) {\n winningOutcome = 'NO';\n } else if (payouts[0] === payouts[1]) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n resolved: true,\n winningOutcome,\n payouts,\n payoutDenominator,\n };\n }\n\n /**\n * Redeem winning outcome tokens for collateral\n */\n async redeemWinnings(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n const collateralToken = tradingData.collateralToken as Address;\n\n const indexSets = [1, 2];\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'redeemPositions',\n args: [\n collateralToken,\n '0x0000000000000000000000000000000000000000000000000000000000000000' as `0x${string}`,\n conditionId,\n indexSets,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the collateral token address for a market\n */\n async getCollateralToken(marketId: bigint): Promise<Address> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n return tradingData.collateralToken as Address;\n }\n\n /**\n * Get question/oracle data for a market\n */\n async getQuestionData(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n return {\n questionId: oracleData.questionId as `0x${string}`,\n conditionId: oracleData.conditionId as `0x${string}`,\n outcomeSlotCount: BigInt(oracleData.outcomeSlotCount),\n currency: oracleData.currency as Address,\n reward: BigInt(oracleData.reward),\n requiredBond: BigInt(oracleData.requiredBond),\n liveness: BigInt(oracleData.liveness),\n initialized: oracleData.initialized as boolean,\n activeAssertionId: oracleData.activeAssertionId as `0x${string}`,\n ancillaryData: oracleData.ancillaryData as `0x${string}`,\n };\n }\n\n /**\n * Get assertion data\n */\n async getAssertionData(assertionId: `0x${string}`) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'getAssertionData',\n args: [assertionId],\n });\n\n return {\n assertionId: data.assertionId as `0x${string}`,\n questionId: data.questionId as `0x${string}`,\n outcome: data.outcome as string,\n settled: data.settled as boolean,\n };\n }\n\n /**\n * Get assertion details from UMA Oracle including expiration time\n */\n async getAssertionDetails(assertionId: `0x${string}`) {\n // Get the UMA Oracle address from Diamond\n const oracleAddress = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n });\n\n // Query the oracle directly for assertion details\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress as `0x${string}`,\n abi: [\n {\n name: 'getAssertion',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'assertionId', type: 'bytes32' }],\n outputs: [\n {\n name: 'assertion',\n type: 'tuple',\n components: [\n {\n name: 'escalationManagerSettings',\n type: 'tuple',\n components: [\n { name: 'arbitrateViaEscalationManager', type: 'bool' },\n { name: 'discardOracle', type: 'bool' },\n { name: 'validateDisputers', type: 'bool' },\n { name: 'assertingCaller', type: 'address' },\n { name: 'escalationManager', type: 'address' },\n ],\n },\n { name: 'asserter', type: 'address' },\n { name: 'assertionTime', type: 'uint64' },\n { name: 'settled', type: 'bool' },\n { name: 'currency', type: 'address' },\n { name: 'expirationTime', type: 'uint64' },\n { name: 'settlementResolution', type: 'bool' },\n { name: 'domainId', type: 'bytes32' },\n { name: 'identifier', type: 'bytes32' },\n { name: 'bond', type: 'uint256' },\n { name: 'callbackRecipient', type: 'address' },\n { name: 'disputer', type: 'address' },\n ],\n },\n ],\n },\n ],\n functionName: 'getAssertion',\n args: [assertionId],\n });\n\n const expirationTime = Number(assertion.expirationTime);\n const currentTime = Math.floor(Date.now() / 1000);\n\n return {\n asserter: assertion.asserter as `0x${string}`,\n assertionTime: Number(assertion.assertionTime),\n settled: assertion.settled as boolean,\n expirationTime,\n canSettle: currentTime >= expirationTime,\n disputer: assertion.disputer as `0x${string}`,\n isDisputed: assertion.disputer !== '0x0000000000000000000000000000000000000000',\n currency: assertion.currency as Address,\n bond: BigInt(assertion.bond),\n };\n }\n\n /**\n * Get comprehensive market status for UMA resolution\n */\n async getMarketStatus(marketId: bigint) {\n // Get market registry data\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n const marketStatus = Number(registryData.status); // 0=Draft, 1=Active, 2=Resolved\n\n // Get question/oracle data\n const questionData = await this.getQuestionData(marketId);\n const conditionId = questionData.conditionId;\n\n // Check if there's an active assertion\n const hasAssertion =\n questionData.activeAssertionId !==\n '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n let assertionData = null;\n let isSettled = false;\n\n if (hasAssertion) {\n assertionData = await this.getAssertionData(\n questionData.activeAssertionId\n );\n isSettled = assertionData.settled;\n }\n\n // Check if resolution has been reported to CTF\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n const isReportedToCTF = payoutDenominator > 0n;\n\n let winningOutcome: string | null = null;\n if (isReportedToCTF) {\n const payout0 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 0n],\n })) as bigint;\n\n const payout1 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 1n],\n })) as bigint;\n\n if (payout0 > 0n && payout1 === 0n) {\n winningOutcome = 'YES';\n } else if (payout1 > 0n && payout0 === 0n) {\n winningOutcome = 'NO';\n } else if (payout0 === payout1) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n marketId,\n questionId,\n marketStatus:\n marketStatus === 0\n ? 'Draft'\n : marketStatus === 1\n ? 'Active'\n : 'Resolved',\n assertion: {\n hasAssertion,\n assertionId: hasAssertion ? questionData.activeAssertionId : null,\n outcome: assertionData?.outcome || null,\n settled: isSettled,\n },\n question: {\n requiredBond: questionData.requiredBond,\n currency: questionData.currency,\n reward: questionData.reward,\n liveness: questionData.liveness,\n },\n resolution: {\n reportedToCTF: isReportedToCTF,\n winningOutcome,\n },\n canAssert: !hasAssertion && marketStatus === 1,\n canSettle: hasAssertion && !isSettled,\n canReportResolution: hasAssertion && isSettled && !isReportedToCTF,\n isResolved: isReportedToCTF,\n };\n }\n\n /**\n * Get the questionId for a market\n */\n async getQuestionId(marketId: bigint): Promise<`0x${string}`> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n return registryData.questionId as `0x${string}`;\n }\n}\n","import { BaseModule } from './base';\nimport { AccessControlFacetABI, WhitelistAccessControlABI } from '../contracts';\n\nexport class AccessControlModule extends BaseModule {\n // ---- Factory (deploy standalone AC contracts via Diamond) ----\n\n /**\n * Deploy a WhitelistAccessControl contract. Caller becomes the owner.\n * @returns Transaction hash. Use receipt logs to extract the deployed contract address.\n */\n async deployWhitelist() {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployWhitelistAC',\n args: [],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy an NFTGatedAccessControl contract.\n * @param params.nftContract - The NFT contract address (ERC-721 or ERC-1155).\n * @param params.isERC1155 - True if the NFT contract is ERC-1155, false for ERC-721.\n * @param params.tokenId - The token ID to check (only used for ERC-1155, pass 0n for ERC-721).\n */\n async deployNFTGated(params: {\n nftContract: `0x${string}`;\n isERC1155: boolean;\n tokenId: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployNFTGatedAC',\n args: [params.nftContract, params.isERC1155, params.tokenId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy a TokenGatedAccessControl contract.\n * @param params.token - The ERC-20 token contract address.\n * @param params.minBalance - The minimum token balance required for access.\n */\n async deployTokenGated(params: {\n token: `0x${string}`;\n minBalance: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployTokenGatedAC',\n args: [params.token, params.minBalance],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Configuration (market-level AC overrides) ----\n\n /**\n * Set a trading access control contract for a specific market. Venue operator only.\n */\n async setMarketTradingAC(params: {\n marketId: bigint;\n acContract: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'setMarketTradingAccessControl',\n args: [params.marketId, params.acContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove the trading access control override for a specific market. Venue operator only.\n */\n async removeMarketTradingAC(params: { marketId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'removeMarketTradingAccessControl',\n args: [params.marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Queries (read via Diamond) ----\n\n /**\n * Check if a user can trade on a specific market (checks market-level then venue-level fallback).\n */\n async canTradeOnMarket(params: {\n user: `0x${string}`;\n marketId: bigint;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'canTradeOnMarket',\n args: [params.user, params.marketId],\n }) as Promise<boolean>;\n }\n\n /**\n * Get the market-level trading AC contract address (address(0) if not set).\n */\n async getMarketTradingAC(params: {\n marketId: bigint;\n }): Promise<`0x${string}`> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'getMarketTradingAccessControl',\n args: [params.marketId],\n }) as Promise<`0x${string}`>;\n }\n\n // ---- Whitelist management (direct contract calls, not through Diamond) ----\n\n /**\n * Add users to a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async addToWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'addToWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove users from a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async removeFromWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'removeFromWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user is whitelisted on a specific WhitelistAccessControl contract.\n */\n async isWhitelisted(params: {\n acContract: `0x${string}`;\n user: `0x${string}`;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'isAllowed',\n args: [params.user],\n }) as Promise<boolean>;\n }\n}\n","import { BaseModule } from './base';\nimport {\n PriceMarketFacetABI,\n PythResolutionFacetABI,\n VenueFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { isValidTickSize, type MarketQuestion } from '../utils/conversions';\n\nconst PYTH_HERMES_BASE = 'https://hermes.pyth.network';\n\nconst PYTH_GET_UPDATE_FEE_ABI = [\n {\n name: 'getUpdateFee',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'updateData', type: 'bytes[]' }],\n outputs: [{ name: 'feeAmount', type: 'uint256' }],\n },\n] as const;\n\nexport enum FeedProvider {\n PYTH = 0,\n CHAINLINK = 1,\n}\n\nexport interface PriceMarketData {\n feedId: `0x${string}`;\n feedProvider: FeedProvider;\n openTime: bigint;\n closeTime: bigint;\n priceExpo: number;\n finalPrice: bigint;\n resolutionWindow: bigint;\n resolved: boolean;\n /**\n * Reference price for resolution.\n * - Explicit-strike markets: set at creation, never changes.\n * - Deferred Up/Down markets: 0 at creation, populated at resolution with the\n * open price captured from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n */\n strikePrice: bigint;\n /**\n * Pyth VAA publishTime of the open-price capture (seconds since epoch).\n * - Explicit-strike markets: always 0 (no open price is captured).\n * - Deferred Up/Down markets: 0 until resolution, then set to the open VAA's\n * publishTime.\n */\n openPriceTime: bigint;\n}\n\n/**\n * Latest Pyth price update plus the signed VAA's publishTime.\n * `fetchedAt` is the SDK-local unix timestamp (seconds) at fetch time.\n */\nexport interface PythUpdate {\n updateData: `0x${string}`[];\n publishTime: bigint;\n fetchedAt: bigint;\n}\n\n/**\n * Projected open price for a deferred Up/Down market that hasn't resolved yet.\n * Derived from the same Hermes VAA the on-chain resolver will pick.\n */\nexport interface ProjectedOpenPrice {\n /** Price extracted from the open-window Hermes VAA (Pyth feed-native units). */\n price: bigint;\n /** publishTime of the VAA (seconds since epoch). */\n publishTime: bigint;\n /** Pyth's price exponent for the feed (e.g. -8). Convenience for UI formatting. */\n expo: number;\n /**\n * `true` once `block.timestamp >= openTime + resolutionWindow` — past that point\n * every client querying Hermes the same way agrees on the same VAA and the\n * on-chain strike at resolution will equal this exact `price`. Before that,\n * the value is a best-effort projection that could shift slightly as Hermes\n * publishes new VAAs inside the window.\n */\n canonical: boolean;\n /** The market's openTime this projection corresponds to. */\n openTime: bigint;\n}\n\n/** Default cap for freshness helper retries. */\nconst DEFAULT_FRESH_MAX_AGE_SECONDS = 120;\nconst DEFAULT_FRESH_MAX_ATTEMPTS = 3;\n\nexport class PriceMarketModule extends BaseModule {\n /**\n * Create a Pyth-powered price market. Three shapes via one entry point:\n *\n * - **Immediate Up/Down** (`strikePrice = 0`, `openTime = 0` or omitted):\n * `openTime` is set to `block.timestamp` at creation; open price is\n * captured at resolution from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n *\n * - **Scheduled Up/Down** (`strikePrice = 0`, `openTime > now`):\n * Market exists from creation and is tradable. At `openTime` the open\n * price window begins; capture happens at resolution as above.\n *\n * - **Explicit strike** (`strikePrice > 0`): Above/Below market resolved\n * against the caller-supplied target. `openTime` is ignored and stored\n * as `block.timestamp`; no open-price capture occurs at resolution.\n *\n * Creation never touches Pyth — no VAA submission, no Pyth fee. The\n * resolver pays Pyth fees later when calling {@link resolvePyth}.\n *\n * @param params.venueId - The venue to create the market in\n * @param params.pythFeedId - Pyth price feed ID (e.g., ETH/USD)\n * @param params.strikePrice - Target price (0 = capture open at resolution)\n * @param params.openTime - When the market opens (0 = immediate / now)\n * @param params.closeTime - Absolute close timestamp (must be > effective openTime)\n * @param params.outcomes - Market outcome labels (e.g., [\"Up\", \"Down\"] or [\"Above\", \"Below\"])\n * @param params.tickSize - Price increment for the orderbook (1e15 or 1e16)\n * @param params.collateralToken - ERC20 collateral token address\n * @param params.question - Market question for ancillary data\n * @param params.liveness - UMA challenge period in seconds (0 = default)\n * @param params.tags - Optional tags for the market\n * @param params.resolutionWindow - Pyth timestamp tolerance in seconds (0 = default 60s, max 300s)\n */\n async createPyth(params: {\n venueId: bigint;\n pythFeedId: `0x${string}`;\n strikePrice?: bigint;\n openTime?: bigint;\n closeTime: bigint;\n outcomes?: string[];\n tickSize: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n liveness?: bigint;\n tags?: string[];\n resolutionWindow?: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const outcomes = params.outcomes ?? ['Up', 'Down'];\n\n const { encodedTags, ancillaryData } =\n await this._prepareCreationCommon(params, await this.getSignerAddress());\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'createPriceMarketPyth',\n args: [\n params.venueId,\n params.pythFeedId,\n params.strikePrice ?? BigInt(0),\n params.openTime ?? BigInt(0),\n params.closeTime,\n outcomes,\n params.tickSize,\n params.collateralToken,\n ancillaryData,\n params.liveness ?? BigInt(0),\n encodedTags,\n params.resolutionWindow ?? BigInt(0),\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Resolve a price market using Pyth.\n *\n * Anyone can call this after `closeTime`. For deferred Up/Down markets\n * (`strikePrice == 0`), the SDK fetches **two** Hermes VAAs — one for the\n * open window, one for the close window — and submits them together so the\n * on-chain facet can capture the open price and compare against the close\n * in a single transaction. For explicit-strike markets only the close VAA\n * is fetched.\n */\n async resolvePyth(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const pm = await this.get(marketId);\n\n if (pm.resolved) {\n throw new Error('Price market already resolved');\n }\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.closeTime) {\n throw new Error(\n `Close time not reached. Current: ${now.toString()}, CloseTime: ${pm.closeTime.toString()}`,\n );\n }\n\n const isDeferred = pm.strikePrice === BigInt(0);\n const windowSeconds = Number(pm.resolutionWindow);\n\n const closeVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.closeTime),\n windowSeconds,\n );\n\n let pythUpdateData: `0x${string}`[];\n if (isDeferred) {\n const openVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.openTime),\n windowSeconds,\n );\n pythUpdateData = [...openVAA, ...closeVAA];\n } else {\n pythUpdateData = closeVAA;\n }\n\n const pythAddress = await this.getPythContract();\n const pythFee = (await this.publicClient.readContract({\n address: pythAddress,\n abi: PYTH_GET_UPDATE_FEE_ABI,\n functionName: 'getUpdateFee',\n args: [pythUpdateData],\n })) as bigint;\n\n // Use at least 1 gwei to cover edge cases where getUpdateFee returns 0 via\n // eth_call but the actual tx requires non-zero value. Contract refunds excess.\n const valueSent = pythFee > BigInt(0) ? pythFee : BigInt(1_000_000_000);\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'resolvePriceMarketPyth',\n args: [marketId, pythUpdateData],\n account,\n value: valueSent,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market is a Pyth price market\n */\n async isPriceMarket(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'isPriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Check if a price market can be resolved (closeTime reached and not yet resolved).\n */\n async canResolve(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'canResolvePriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Get price market data\n */\n async get(marketId: bigint): Promise<PriceMarketData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'getPriceMarket',\n args: [marketId],\n });\n\n return {\n feedId: result[0] as `0x${string}`,\n feedProvider: Number(result[1]) as FeedProvider,\n openTime: BigInt(result[2]),\n closeTime: BigInt(result[3]),\n priceExpo: Number(result[4]),\n finalPrice: BigInt(result[5]),\n resolutionWindow: BigInt(result[6]),\n resolved: result[7] as boolean,\n strikePrice: BigInt(result[8]),\n openPriceTime: BigInt(result[9]),\n };\n }\n\n /**\n * Get the Pyth contract address configured on the Diamond\n */\n async getPythContract(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'getPythContract',\n })) as Address;\n }\n\n /**\n * Mark a stuck price market as Invalid and refund holders 50/50 via the CTF.\n * Permissionless: anyone can call this once `closeTime + 7 days` has elapsed.\n *\n * Use this for markets that never resolve via Pyth — e.g. the feed was\n * deprecated by the publisher, or Hermes had no in-window VAA at closeTime.\n * Reports payouts `[1, 1]` to the CTF, so every YES and every NO token\n * redeems for half the underlying collateral.\n *\n * Reverts on chain with `GracePeriodNotElapsed` if called too early.\n */\n async markInvalid(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'markPriceMarketInvalid',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Set the Pyth oracle contract address. Diamond owner only.\n */\n async setPythContract(pythContract: Address) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'setPythContract',\n args: [pythContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Private helpers ----\n\n /**\n * Shared pre-flight checks: creation fee allowance, ancillary data, tags\n */\n private async _prepareCreationCommon(\n params: {\n venueId: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n tags?: string[];\n },\n account: Address,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = venue.marketCreationFee;\n if (feeRequired > BigInt(0)) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account, this.config.diamondAddress],\n });\n\n if (allowance < feeRequired) {\n throw new Error(\n `Insufficient allowance for Market Creation Fee. Approved: ${allowance.toString()}, Required: ${feeRequired.toString()}.`,\n );\n }\n }\n\n const ancillaryData = this.formatAncillaryData(params.question);\n\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n return { encodedTags, ancillaryData };\n }\n\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n return stringToHex(data);\n }\n\n /**\n * Fetch the latest Pyth price update from Hermes — the bytes plus the\n * VAA's publishTime.\n *\n * Useful for UI projected-strike display: callers can render the current\n * Pyth price (and its publishTime) before a deferred market's open window\n * closes, then switch to the on-chain strike once resolution happens.\n */\n async fetchPythLatestUpdate(feedId: `0x${string}`): Promise<PythUpdate> {\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/latest?ids[]=${feedId}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateData: string[] | undefined = data.binary?.data;\n\n if (!updateData || updateData.length === 0) {\n throw new Error('No price update data returned from Pyth Hermes');\n }\n\n const parsed = data.parsed?.[0];\n const publishTimeRaw = parsed?.price?.publish_time;\n if (typeof publishTimeRaw !== 'number') {\n throw new Error('Pyth Hermes response missing parsed.price.publish_time');\n }\n\n return {\n updateData: updateData.map((d) => `0x${d}` as `0x${string}`),\n publishTime: BigInt(publishTimeRaw),\n fetchedAt: BigInt(Math.floor(Date.now() / 1000)),\n };\n }\n\n /**\n * Return a Pyth update that is fresh enough for client-side projected-strike\n * display.\n *\n * If `cached` is provided and still within `maxAgeSeconds`, returns it\n * unchanged. Otherwise re-queries Hermes; if the new VAA is also stale\n * (quiet feed), retries up to `maxAttempts`.\n *\n * Defaults: `maxAgeSeconds = 120`, `maxAttempts = 3`.\n */\n async fetchFreshPythUpdate(\n feedId: `0x${string}`,\n options: {\n maxAgeSeconds?: number;\n maxAttempts?: number;\n cached?: PythUpdate;\n } = {},\n ): Promise<PythUpdate> {\n const maxAgeSeconds = options.maxAgeSeconds ?? DEFAULT_FRESH_MAX_AGE_SECONDS;\n const maxAttempts = options.maxAttempts ?? DEFAULT_FRESH_MAX_ATTEMPTS;\n\n const isFresh = (u: PythUpdate): boolean => {\n const now = BigInt(Math.floor(Date.now() / 1000));\n return now - u.publishTime <= BigInt(maxAgeSeconds);\n };\n\n if (options.cached && isFresh(options.cached)) {\n return options.cached;\n }\n\n let latest: PythUpdate | undefined;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n latest = await this.fetchPythLatestUpdate(feedId);\n if (isFresh(latest)) return latest;\n }\n\n if (!latest) {\n throw new Error('Failed to fetch any Pyth update from Hermes');\n }\n return latest;\n }\n\n /**\n * Resolve the projected open price for a deferred Up/Down market — what the\n * UI should display as the \"strike\" between `openTime` and resolution.\n *\n * For deferred markets, the on-chain `strikePrice` is 0 until the resolver\n * fires {@link resolvePyth}. This helper replicates the same rule the\n * contract will use (\"earliest in-window Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`\") by querying Hermes at\n * `openTime`, so the value rendered in the UI matches what the on-chain\n * strike will be once resolution lands.\n *\n * Returns `null` when the projection isn't applicable:\n * - The market is already resolved — caller should read `pm.strikePrice` directly.\n * - The market is explicit-strike (`pm.strikePrice > 0`) — same, read from chain.\n * - The market hasn't reached `openTime` yet — no VAA exists; UI should show\n * \"strike set at HH:MM\" or similar pending state.\n *\n * `result.canonical === true` means the open window has fully elapsed and the\n * value will not change. Before that, render the price with a \"pending\" hint.\n */\n async fetchProjectedOpenPrice(\n marketId: bigint,\n ): Promise<ProjectedOpenPrice | null> {\n const pm = await this.get(marketId);\n\n if (pm.resolved) return null;\n if (pm.strikePrice !== BigInt(0)) return null;\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.openTime) return null;\n\n const parsed = await this.fetchPythHistoricalParsed(\n pm.feedId,\n Number(pm.openTime),\n Number(pm.resolutionWindow),\n );\n if (!parsed) return null;\n\n return {\n price: BigInt(parsed.price.price),\n publishTime: BigInt(parsed.price.publish_time),\n expo: Number(parsed.price.expo),\n canonical: now >= pm.openTime + pm.resolutionWindow,\n openTime: pm.openTime,\n };\n }\n\n /**\n * Fetch historical Pyth price update data covering the window\n * `[publishTime, publishTime + windowSeconds]`.\n *\n * Hermes serves a VAA AT the exact requested second when one exists, and\n * 404s when no publish landed in that second. For low-volume feeds or\n * markets resolving deep in the past this means a single request at\n * `publishTime` is fragile. This helper walks a few sample points across\n * the window until it finds a VAA, transparently retrying with exponential\n * backoff on 429.\n *\n * The on-chain `pickEarliestInWindow` accepts any VAA whose `publishTime`\n * falls in the same window, so returning an offset VAA is correct as long\n * as it's still in range.\n */\n private async fetchPythHistoricalData(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<`0x${string}`[]> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n if (!result) {\n throw new Error(\n `No Pyth VAA available in window [${publishTime}, ${publishTime + windowSeconds}] for feed ${feedId}`,\n );\n }\n return result.updateData;\n }\n\n /**\n * Hermes parsed+binary fetch shared by {@link fetchPythHistoricalData} and\n * {@link fetchProjectedOpenPrice}. Returns the first in-window VAA whose\n * Hermes response includes a `parsed[0].price` entry, walking a few sample\n * timestamps across the window before giving up. Returns `null` on\n * complete miss so the caller can decide how to surface the failure\n * (resolution throws; UI projection returns null gracefully).\n */\n private async fetchPythHistoricalParsed(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{ price: { price: string; expo: number; publish_time: number } } | null> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n return result?.parsed ?? null;\n }\n\n private async fetchPythHistoricalRaw(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{\n updateData: `0x${string}`[];\n parsed: { price: { price: string; expo: number; publish_time: number } };\n } | null> {\n // Two sample points: the requested time and the window midpoint. One call\n // is enough for active feeds (Hermes returns the VAA at or just after the\n // requested second). The midpoint is a fallback for the rare case where\n // the exact-second query 404s but a VAA exists later in the window.\n //\n // For off-hours feeds (metals, equities outside trading hours) every\n // sample 404s and we bail after 2 calls — instead of 5 — keeping our\n // total Hermes-call rate well under the free-tier limit even when the\n // bot is resolving many markets in a single cron tick.\n const window = Math.max(0, Math.floor(windowSeconds));\n const offsets = window === 0\n ? [0]\n : Array.from(new Set([0, Math.floor(window / 2)])).sort((a, b) => a - b);\n\n for (let i = 0; i < offsets.length; i++) {\n // Throttle between sample calls so a single fetchPythHistoricalRaw\n // can't burst more than ~5 req/s even when Hermes 404s the first try.\n // No throttle on the first call — common path is one fetch.\n if (i > 0) {\n await new Promise((r) => setTimeout(r, 200));\n }\n\n const t = publishTime + offsets[i];\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/${t}?ids[]=${feedId}`;\n\n const response = await this.hermesFetchWithBackoff(url);\n if (response === null) continue; // 404 / soft-miss at this timestamp\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateDataRaw: string[] | undefined = data.binary?.data;\n const parsed = data.parsed?.[0];\n\n if (!updateDataRaw || updateDataRaw.length === 0) continue;\n\n return {\n updateData: updateDataRaw.map(\n (d) => `0x${d}` as `0x${string}`,\n ),\n parsed,\n };\n }\n\n return null;\n }\n\n /**\n * Fetch a Hermes URL with a short backoff on 429. Returns the response for\n * 2xx, `null` for 404 (treated as \"no VAA at this timestamp, try another\"),\n * and throws on persistent 429 or other non-OK statuses.\n *\n * Budget kept intentionally small (2 attempts) so callers that are already\n * iterating (e.g. multiple sample timestamps in `fetchPythHistoricalRaw`)\n * don't compound the rate-limit pressure. If Hermes is genuinely rate-\n * limiting us, retrying within the same request cycle won't help — better\n * to fail fast and let the caller back off until the next tick.\n */\n private async hermesFetchWithBackoff(\n url: string,\n options: { maxAttempts?: number; initialDelayMs?: number } = {},\n ): Promise<Response | null> {\n const maxAttempts = options.maxAttempts ?? 2;\n const initialDelayMs = options.initialDelayMs ?? 750;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const response = await fetch(url);\n if (response.status === 429) {\n if (attempt === maxAttempts - 1) {\n throw new Error(\n `Pyth Hermes API error: 429 Too Many Requests (gave up after ${maxAttempts} attempts)`,\n );\n }\n const delay = initialDelayMs * Math.pow(2, attempt);\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n if (response.status === 404) return null;\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n return response;\n }\n return null;\n }\n}\n","import { createPublicClient, createWalletClient, http, custom } from 'viem';\nimport type { PublicClient, WalletClient, Account } from 'viem';\nimport type { OddMakiClientConfig } from './types';\nimport { CONTRACT_ADDRESSES, DEFAULT_CHAIN } from './config';\nimport { VenueModule } from './modules/venue';\nimport { MarketModule } from './modules/market';\nimport { TradeModule } from './modules/trade';\nimport { PublicModule } from './modules/public';\nimport { TokenModule } from './modules/token';\nimport { UmaModule } from './modules/uma';\nimport { AccessControlModule } from './modules/accessControl';\nimport { PriceMarketModule } from './modules/priceMarket';\n\nexport class OddMakiClient {\n public readonly config: OddMakiClientConfig;\n public readonly venue: VenueModule;\n public readonly market: MarketModule;\n public readonly trade: TradeModule;\n public readonly public: PublicModule;\n public readonly token: TokenModule;\n public readonly uma: UmaModule;\n public readonly accessControl: AccessControlModule;\n public readonly priceMarket: PriceMarketModule;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.venue = new VenueModule(config);\n this.market = new MarketModule(config);\n this.trade = new TradeModule(config);\n this.public = new PublicModule(config);\n this.token = new TokenModule(config);\n this.uma = new UmaModule(config);\n this.accessControl = new AccessControlModule(config);\n this.priceMarket = new PriceMarketModule(config);\n }\n}\n\nexport function createOddMakiClient(params: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walletClient?: any; // Optional: Pass directly from wagmi/viem (typed as any to avoid version mismatches)\n account?: Account;\n transport?: any; // Viem transport\n chain?: any; // Viem chain\n subgraphEndpoint?: string;\n}): OddMakiClient {\n let chain = params.chain;\n let transport = params.transport;\n let account = params.account;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let walletClient = params.walletClient as WalletClient;\n\n // Overload: Use walletClient if provided\n if (walletClient) {\n chain = chain || walletClient.chain;\n // walletClient.transport is an object, but createPublicClient expects a function.\n // We wrap it in custom() to reuse the wallet's provider.\n transport = transport || custom(walletClient.transport);\n account = account || walletClient.account;\n }\n\n // Default defaults\n chain = chain || DEFAULT_CHAIN;\n transport = transport || http();\n\n const addresses =\n CONTRACT_ADDRESSES[chain.id as keyof typeof CONTRACT_ADDRESSES];\n\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chain.id}`);\n }\n\n const publicClient = createPublicClient({\n chain,\n transport,\n }) as PublicClient;\n\n // If we didn't get a walletClient but have an account, create one\n if (!walletClient && account) {\n walletClient = createWalletClient({\n account,\n chain,\n transport,\n });\n }\n\n const config: OddMakiClientConfig = {\n chain,\n transport,\n diamondAddress: addresses.diamond,\n conditionalTokensAddress: addresses.conditionalTokens,\n subgraphEndpoint: params.subgraphEndpoint ?? addresses.subgraph,\n publicClient,\n walletClient,\n };\n\n return new OddMakiClient(config);\n}\n","/**\n * Protocol Constants\n * These values match the on-chain constants defined in the smart contracts.\n */\n\n/**\n * Fee Constants\n * Protocol fee is configurable on-chain (0-200 bps) and snapshotted per market at creation.\n * These are the default values set at deployment.\n */\nexport const PROTOCOL_FEES = {\n /** Protocol fee: 50 bps (0.50%) — configurable via ProtocolFacet.setProtocolFeeBps() */\n PROTOCOL_FEE_BPS: 50n,\n /** Operator fee: 10 bps (0.10%) for match operators */\n OPERATOR_FEE_BPS: 10n,\n} as const;\n\n/**\n * Recommended UMA Oracle defaults for USDC venues (6 decimals).\n * Based on Polymarket's production configuration.\n */\nexport const UMA_DEFAULTS = {\n /** Recommended reward: 5 USDC. Incentivizes third-party resolution. */\n REWARD_USDC: 5_000_000n,\n /** Recommended minimum bond: 750 USDC. Matches Polymarket's production bond. */\n MIN_BOND_USDC: 750_000_000n,\n /** Default liveness period: 2 hours (7200 seconds). */\n LIVENESS: 7200n,\n} as const;\n","const DEFAULT_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';\n\n/**\n * Resolve an IPFS URI to an HTTP gateway URL.\n * If the URI is already an HTTP(S) URL, returns it as-is.\n * Returns empty string for empty/undefined input.\n */\nexport function resolveIPFSUri(\n uri: string | undefined | null,\n gateway?: string,\n): string {\n if (!uri) return '';\n const gw = gateway || DEFAULT_IPFS_GATEWAY;\n if (uri.startsWith('ipfs://')) {\n const base = gw.endsWith('/') ? gw : `${gw}/`;\n const gateway = base.includes('/ipfs/') ? base : `${base}ipfs/`;\n return `${gateway}${uri.slice(7)}`;\n }\n return uri;\n}\n\n/** Venue metadata schema (v1) — all fields optional except version */\nexport interface VenueMetadata {\n version: number;\n venue_url?: string;\n image_url?: string;\n banner_url?: string;\n description?: string;\n social?: {\n twitter?: string;\n discord?: string;\n telegram?: string;\n };\n}\n\n/** Market metadata schema (v1) — all fields optional except version */\nexport interface MarketMetadata {\n version: number;\n image_url?: string;\n source_url?: string;\n category?: string;\n}\n\n/**\n * Safely parse a JSON string into a typed metadata object.\n * Returns null if the JSON is invalid or missing a version field.\n */\nexport function parseMetadata<T extends { version: number }>(\n json: string,\n): T | null {\n try {\n const parsed = JSON.parse(json);\n if (typeof parsed !== 'object' || parsed === null) return null;\n if (typeof parsed.version !== 'number') return null;\n return parsed as T;\n } catch {\n return null;\n }\n}\n","export * from './client';\nexport * from './config';\nexport * from './constants';\nexport * from './types';\nexport * from './modules/venue';\nexport * from './modules/market';\nexport * from './modules/trade';\nexport * from './modules/public';\nexport * from './modules/token';\nexport * from './modules/uma';\nexport * from './modules/accessControl';\nexport * from './modules/priceMarket';\nexport * from './contracts';\nexport * from './subgraph/client';\nexport * from './subgraph/queries';\nexport { GraphQLClient, gql, ClientError } from 'graphql-request';\nexport type { RequestDocument, Variables } from 'graphql-request';\nexport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nexport * from './utils/conversions';\nexport * from './utils/decimals';\nexport * from './utils/metadata';\n\nexport const version = '0.1.0';\n"]}