diff --git a/sdks/typescript/pmxt/hosted-typed-data.ts b/sdks/typescript/pmxt/hosted-typed-data.ts index 55bafa71..e9c3f872 100644 --- a/sdks/typescript/pmxt/hosted-typed-data.ts +++ b/sdks/typescript/pmxt/hosted-typed-data.ts @@ -140,6 +140,8 @@ export type HostedRoute = | "opinion_sell_polygon" | "opinion_sell_bsc_pull" | "cancel_polymarket" + | "cancel_limitless_polygon" + | "cancel_limitless_base_pull" | "cancel_opinion_polygon" | "cancel_opinion_bsc_pull"; @@ -207,6 +209,20 @@ const SCHEMAS: Readonly> = { messageKeys: messageKeysFromFields(CANCEL_ORDER_FIELDS), walletField: "user", }, + cancel_limitless_polygon: { + primaryType: "CancelOrder", + domain: PREFUNDED_DOMAIN, + fields: CANCEL_ORDER_FIELDS, + messageKeys: messageKeysFromFields(CANCEL_ORDER_FIELDS), + walletField: "user", + }, + cancel_limitless_base_pull: { + primaryType: "CancelPull", + domain: LIMITLESS_VENUE_DOMAIN, + fields: CANCEL_PULL_FIELDS, + messageKeys: messageKeysFromFields(CANCEL_PULL_FIELDS), + walletField: "user", + }, cancel_opinion_polygon: { primaryType: "CancelOrder", domain: PREFUNDED_DOMAIN, @@ -407,7 +423,10 @@ export function validateEconomics( } else if ( route === "opinion_buy" || route === "opinion_sell_polygon" || - route === "opinion_sell_bsc_pull" + route === "opinion_sell_bsc_pull" || + route === "limitless_buy" || + route === "limitless_sell_polygon" || + route === "limitless_sell_base_pull" ) { validateOpinionMarketId(message, buildResponse); } diff --git a/sdks/typescript/tests/hosted-typed-data-routes.test.ts b/sdks/typescript/tests/hosted-typed-data-routes.test.ts new file mode 100644 index 00000000..2445e65f --- /dev/null +++ b/sdks/typescript/tests/hosted-typed-data-routes.test.ts @@ -0,0 +1,27 @@ +import { validateEconomics } from "../pmxt/hosted-typed-data"; + +const LIMITLESS_ORDER_ROUTES = [ + "limitless_buy", + "limitless_sell_polygon", + "limitless_sell_base_pull", +]; + +describe("hosted typed-data route registry", () => { + it.each([ + "cancel_limitless_polygon", + "cancel_limitless_base_pull", + ])("recognizes %s as a cancel route", (route) => { + expect(() => validateEconomics({ message: {} } as any, route, {}, {})).not.toThrow(); + }); + + it.each(LIMITLESS_ORDER_ROUTES)("validates tokenId economics for %s", (route) => { + expect(() => + validateEconomics( + { message: { tokenId: "actual-token" } } as any, + route, + {}, + { resolved: { token_id: "expected-token" } }, + ), + ).toThrow(/tokenId expected expected-token got actual-token/); + }); +});