@0xinsider/sdk 0.14.0-bootstrap.0
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.
- package/LICENSE +21 -0
- package/README.md +674 -0
- package/dist/client.d.ts +1652 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2127 -0
- package/dist/client.js.map +1 -0
- package/dist/data-quality.d.ts +74 -0
- package/dist/data-quality.d.ts.map +1 -0
- package/dist/data-quality.js +68 -0
- package/dist/data-quality.js.map +1 -0
- package/dist/errors.d.ts +400 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +700 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +196 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +208 -0
- package/dist/pagination.js.map +1 -0
- package/dist/provenance.d.ts +8 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +15 -0
- package/dist/provenance.js.map +1 -0
- package/dist/retry.d.ts +68 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +125 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema.d.ts +4910 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +7 -0
- package/dist/schema.js.map +1 -0
- package/dist/stream.d.ts +509 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +932 -0
- package/dist/stream.js.map +1 -0
- package/dist/webhooks.d.ts +314 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +153 -0
- package/dist/webhooks.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,aAAa,EAAuC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AA0EpB,wDAAwD;AACxD,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC;AAiBxD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,MAAM,CAA4B;IAClC,OAAO,CAAqB;IAC5B,OAAO,CAAqB;IAC5B,KAAK,CAAqB;IAC1B,KAAK,CAAqB;IAC1B,SAAS,CAAqB;IAEvC,YACE,MAAiC,EACjC,MAMC;QAED,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;IACjD,CAAC;CACF;AAED,SAAS,qBAAqB,CAC5B,MAAiC,EACjC,MAMC;IAED,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,uBAAuB;YAC1B,OAAO,6BAA6B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,sBAAsB,kDAAkD,CAAC;QACvK,KAAK,cAAc;YACjB,OAAO,yBAAyB,KAAK,4BAA4B,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;QAC/G,KAAK,kBAAkB;YACrB,OAAO,yBAAyB,KAAK,yCAAyC,KAAK,EAAE,CAAC;QACxF,KAAK,mBAAmB;YACtB,OAAO,yBAAyB,KAAK,wCAAwC,KAAK,EAAE,CAAC;QACvF,KAAK,gBAAgB;YACnB,OAAO,0CAA0C,KAAK,uCAAuC,KAAK,EAAE,CAAC;QACvG,KAAK,iBAAiB;YACpB,OAAO,sCAAsC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,4BAA4B,KAAK,6BAA6B,CAAC;QACvI;YACE,OAAO,mCAAmC,KAAK,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,iDAAiD,MAAM,CAAC,KAAK,CAAC,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,sBAAsB,CAAC,WAA0B;IAC/D,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnE,OAAO,OAAO,KAAK,mBAAmB,CAAC;AACzC,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,CAC/B,MAA0B,EAC1B,OAAO,GAAkB,EAAE;IAE3B,MAAM,aAAa,GAAG,mBAAmB,CACvC,OAAO,CAAC,aAAa,IAAI,8BAA8B,CACxD,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC7D,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,KAAK;QACb,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,iBAAiB,CACrB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,IAAI,CAAC,EACd,iBAAiB,CAAC,QAAQ,CAAC,EAC3B,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CACpD,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,EAAE;YACrD,OAAO,EAAE,SAAS;YAClB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,2EAA2E;IAC3E,+DAA+D;IAC/D,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,OAA2B,CAAC;IAEhC,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;YAElC,gEAAgE;YAChE,IAAI,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;gBAC3D,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;oBAC/C,OAAO;oBACP,KAAK,EAAE,aAAa;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjD,qEAAqE;gBACrE,mEAAmE;gBACnE,uEAAuE;gBACvE,kEAAkE;gBAClE,mBAAmB;gBACnB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;gBACvD,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;oBAC/B,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;wBAC/C,OAAO;wBACP,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAExD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACjD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;wBACpB,IAAI,OAAO,CAAC,MAAM;4BAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;oBACrD,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,aAAa,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;YACtE,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;gBAClC,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;oBAC/C,OAAO;oBACP,KAAK,EAAE,aAAa;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,qEAAqE;QACrE,uEAAuE;QACvE,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,gEAAgE;QAChE,0EAA0E;QAC1E,wEAAwE;QACxE,2CAA2C;QAC3C,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAiCD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAExE,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC;;;;GAIG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAC9C,OAAO,CAAqB;IAC5B,QAAQ,CAAS;IAE1B,YAAY,QAAgB,EAAE,OAA2B,EAAE,KAAc;QACvE,KAAK,CACH,kCAAkC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,EACnF,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,OAAO,CAAO;IACd,YAAY,CAAS;IACrB,OAAO,CAAqB;IAC5B,QAAQ,CAAS;IAE1B,YACE,YAAoB,EACpB,OAA2B,EAC3B,QAAgB,EAChB,KAAc;QAEd,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;QACpD,KAAK,CACH,4CAA4C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,oDAAoD,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EACpO,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC5C,0EAA0E;IAC1E,wEAAwE;IACxE,+CAA+C;IAC/C,IAAI,KAAK,YAAY,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACtD,sDAAsD;IACtD,IAAI,KAAK,YAAY,iBAAiB,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,KAAK,YAAY,iBAAiB;QAClC,KAAK,CAAC,MAAM,IAAI,GAAG;QACnB,KAAK,CAAC,MAAM,GAAG,GAAG;QAClB,KAAK,CAAC,MAAM,KAAK,GAAG,CACrB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAC5B,KAAc,EACd,KAAK,GAAW,IAAI,CAAC,GAAG,EAAE;IAE1B,IAAI,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,uBAAuB,EACvB,wBAAwB,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAC9C,CAAC;IACF,OAAO,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,kFAAkF,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,MAA0B,EAC1B,OAAO,GAA2B,EAAE;IAEpC,MAAM,EACJ,aAAa,GAAG,6BAA6B,EAC7C,eAAe,GAAG,iCAAiC,EACnD,WAAW,EACX,GAAG,aAAa,EACjB,GAAG,OAAO,CAAC;IACZ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,qDAAqD,MAAM,CAAC,aAAa,CAAC,EAAE,CAC7E,CAAC;IACJ,CAAC;IACD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACnE,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,MAAM,MAAM,GAAqB,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;IAC5D,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,SAAS,CAAC;QACR,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO;QAC5B,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE;gBAC3C,GAAG,aAAa;gBAChB,MAAM;gBACN,WAAW,EAAE,MAAM,CAAC,GAAG,IAAI,kBAAkB;aAC9C,CAAC,EAAE,CAAC;gBACH,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;oBAClD,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;gBACzB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;YAC5B,IAAI,sBAAsB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/C,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO;QAE5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,cAAc;QACd,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,mBAAmB,EAAE,CAAC;YAC9D,MAAM,IAAI,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,8BAA8B,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;QACD,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GACX,WAAW,KAAK,IAAI;YAClB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;YAC1B,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,0BAA0B,CAAC;QAC/D,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAkC;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA0B,EAC1B,QAGC,EACD,OAAO,GAAkB,EAAE;IAE3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC;AAyDD;;;;;;;GAOG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,GAAG,CAAqB;IACxB,KAAK,CAAqB;IAC1B,QAAQ,CAAS;IACjB,UAAU,CAAqB;IAC/B,UAAU,CAAqB;IAExC,YACE,MAMC,EACD,KAAc;QAEd,KAAK,CACH,mCAAmC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eACxD,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAC1E,KAAK,MAAM,CAAC,KAAK,qCACf,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CACtE,EAAE,EACF,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAgD7C;;;;;;;;;;;;GAYG;AACH,SAAS,iBAAiB,CAAC,GAAuB;IAChD,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3D,CAAC,CAAC,GAAG,GAAG,CAAC;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAA0B,EAC1B,QAAoC,EACpC,OAAO,GAA8B,EAAE;IAEvC,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,iBAAiB,GAAG,2BAA2B,EAC/C,cAAc,EACd,GAAG,aAAa,EACjB,GAAG,OAAO,CAAC;IACZ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,yDAAyD,MAAM,CAAC,iBAAiB,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,0EAA0E;IAC1E,wEAAwE;IACxE,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;IACtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5D,mEAAmE;IACnE,sEAAsE;IACtE,uCAAuC;IACvC,IAAI,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,kBAAkB,CAAC;IACvD,IAAI,UAA8B,CAAC;IACnC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,SAAS,CAAC;QACR,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO;QAC5B,IAAI,OAES,CAAC;QACd,sEAAsE;QACtE,mEAAmE;QACnE,yEAAyE;QACzE,wEAAwE;QACxE,4DAA4D;QAC5D,MAAM,SAAS,GAAqB,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;QAEzD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,mBAAmB,CAAC,MAAM,EAAE;YACpD,GAAG,aAAa;YAChB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,WAAW;SACzB,CAAC,EAAE,CAAC;YACH,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;YAE1E,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;oBACpD,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;oBACzD,MAAM;gBACR,CAAC;gBACD,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;gBAC3B,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;oBAClE,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACrD,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACxB,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;wBACzD,MAAM;oBACR,CAAC;oBACD,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;oBAC3B,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,CAAC,CAAC;YACb,UAAU,GAAG,SAAS,CAAC;YACvB,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;QAC9B,CAAC;QAED,uEAAuE;QACvE,qEAAqE;QACrE,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;QAC9B,MAAM,YAAY,GAChB,QAAQ,GAAG,CAAC,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,WAAW;YACT,UAAU,CAAC,GAAG,IAAI,kBAAkB,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,YAAY,IAAI,iBAAiB,CAAC;QAClE,cAAc,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;YAC9B,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,YAAY;YACrB,SAAS;YACT,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE,UAAU,CAAC,GAAG;SAC3B,CAAC,CAAC;QACH,yDAAyD;QACzD,IAAI,SAAS,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO;QACzC,UAAU,GAAG,SAAS,CAAC;QACvB,QAAQ,GAAG,YAAY,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,wBAAwB,CAChC;gBACE,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU,CAAC,GAAG;gBAC1B,UAAU,EAAE,WAAW;aACxB,EACD,OAAO,CAAC,KAAK,CACd,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,MAA0B,EAC1B,OAAsB;IAEtB,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAQD,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,KAAyB,CAAC;IAC9B,IAAI,EAAsB,CAAC;IAC3B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,uDAAuD;YACvD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,KAAK,GAAG,KAAK,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,EAAE,GAAG,CAAC,CAAC;gBAC/B,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR;gBACE,0CAA0C;gBAC1C,MAAM;QACV,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CAAC,MAAc;IACvC,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,UAAU,GAAwC;QACtD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAChD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC9C,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KAC7C,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7D,wEAAwE;IACxE,wEAAwE;IACxE,8DAA8D;IAC9D,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAC3C,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC5B,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAsB,EACtB,OAA2B;IAE3B,MAAM,MAAM,GAAG;QACb,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU;KACxD,CAAC;IACF,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;YACtB,MAAM,EAAE,OAAuB;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,GACP,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7D,CAAC,CAAC,OAAO,CAAC,GAAG;QACb,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAChB,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAuB,EAAE,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,wBAAwB,GAAqC;IACjE,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,GAAG;IACpB,qBAAqB,EAAE,GAAG;IAC1B,SAAS,EAAE,GAAG;IACd,kBAAkB,EAAE,GAAG;IACvB,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,GAAG;IACpB,cAAc,EAAE,GAAG;IACnB,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,GAAG;IACnB,sBAAsB,EAAE,GAAG;CAC5B,CAAC;AACF,MAAM,gCAAgC,GAAwB,IAAI,GAAG,CAAC;IACpE,sBAAsB;IACtB,oBAAoB;IACpB,gCAAgC;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEjE;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAC1B,OAAgB,EAChB,MAA4D;IAE5D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,MAAM,MAAM,GACV,MAAM,KAAK,SAAS,IAAI,gCAAgC,CAAC,GAAG,CAAC,MAAM,CAAC;QAClE,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAmB;IACnC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAkB;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook signature verification and typed delivery payloads.
|
|
3
|
+
*
|
|
4
|
+
* The backend signs every webhook delivery exactly like this (source of truth:
|
|
5
|
+
* `backend/src/api_v1/handlers/webhooks/endpoint_security.rs::sign_webhook_payload`):
|
|
6
|
+
*
|
|
7
|
+
* signature = "v1=" + hex( HMAC_SHA256( signing_secret, `${timestamp}.${raw_body}` ) )
|
|
8
|
+
*
|
|
9
|
+
* It is sent on two headers:
|
|
10
|
+
* - `x-0xinsider-timestamp: <unix-seconds>`
|
|
11
|
+
* - `x-0xinsider-signature: v1=<hex>` (may be a comma-separated list)
|
|
12
|
+
*
|
|
13
|
+
* Verification, the receiver side. The backend only signs; the published
|
|
14
|
+
* recipe is the delivery-signing paragraph on POST /api/v1/webhooks in
|
|
15
|
+
* `web/public/api/v1/openapi.json`:
|
|
16
|
+
* 1. Reject if `|now - timestamp| > 300` seconds (replay tolerance).
|
|
17
|
+
* 2. Recompute the expected `v1=<hex>` over `${timestamp}.${rawBody}`.
|
|
18
|
+
* 3. Constant-time compare against each candidate in the header.
|
|
19
|
+
*
|
|
20
|
+
* `rawBody` MUST be the exact bytes received: verify before JSON parsing, since
|
|
21
|
+
* re-serializing changes whitespace/key order and breaks the HMAC.
|
|
22
|
+
*
|
|
23
|
+
* ENDPOINT ACTIVATION (`verifyWebhook`, `POST /api/v1/webhooks/{id}/verify`):
|
|
24
|
+
* the one-time `verification.token` is necessary but not sufficient. That call
|
|
25
|
+
* POSTs a challenge to your webhook url and activates the endpoint only if you
|
|
26
|
+
* answer 2xx within 10 seconds. The challenge body is
|
|
27
|
+
* `{ "type": "webhook.verification", "token": "<verification_token>",
|
|
28
|
+
* "webhook_id": <id> }`, it carries `x-0xinsider-event-type:
|
|
29
|
+
* webhook.verification`, and it is signed with the endpoint's `signing_secret`
|
|
30
|
+
* exactly like a delivery -- so `verifySignature` below validates it unchanged.
|
|
31
|
+
* The challenge follows no redirects and never reads your response body. A
|
|
32
|
+
* non-2xx answer, no answer inside 10 seconds, or a url that does not resolve to
|
|
33
|
+
* a publicly routable address returns 422 and leaves the endpoint
|
|
34
|
+
* `pending_verification`.
|
|
35
|
+
*/
|
|
36
|
+
/** Default replay tolerance; the published contract is 300 seconds. */
|
|
37
|
+
export declare const SIGNATURE_TOLERANCE_SECONDS = 300;
|
|
38
|
+
/** Header carrying the `v1=<hex>` signature. */
|
|
39
|
+
export declare const SIGNATURE_HEADER = "x-0xinsider-signature";
|
|
40
|
+
/** Header carrying the unix-seconds signing timestamp. */
|
|
41
|
+
export declare const TIMESTAMP_HEADER = "x-0xinsider-timestamp";
|
|
42
|
+
export interface VerifySignatureInput {
|
|
43
|
+
/** The endpoint's signing secret (returned on create / rotate-secret/prepare / rotate-secret/activate). */
|
|
44
|
+
secret: string;
|
|
45
|
+
/** The `x-0xinsider-timestamp` value (unix seconds, number or string). */
|
|
46
|
+
timestamp: number | string;
|
|
47
|
+
/** The exact raw request body bytes/string, pre-JSON-parse. */
|
|
48
|
+
body: string | Uint8Array;
|
|
49
|
+
/** The `x-0xinsider-signature` header value (`v1=<hex>`, possibly a list). */
|
|
50
|
+
signature: string;
|
|
51
|
+
/**
|
|
52
|
+
* Replay tolerance in seconds; defaults to `SIGNATURE_TOLERANCE_SECONDS`
|
|
53
|
+
* (300, the published contract). A finite number of at least 0: a payload
|
|
54
|
+
* whose timestamp is more than this many seconds from `nowSeconds`, in
|
|
55
|
+
* either direction, is rejected, and exactly this many seconds away is
|
|
56
|
+
* accepted (the check is `|now - timestamp| > tolerance`). `0` accepts only
|
|
57
|
+
* the current second. `NaN`, `Infinity`, `-Infinity` or a negative value is
|
|
58
|
+
* a configuration error and throws, since each would silently turn the
|
|
59
|
+
* replay window off (#16183): `Math.abs(x) > NaN` is never true, and
|
|
60
|
+
* `> Infinity` never is either.
|
|
61
|
+
*/
|
|
62
|
+
toleranceSeconds?: number;
|
|
63
|
+
/** Reference "now" in unix seconds; defaults to `Date.now()/1000`. */
|
|
64
|
+
nowSeconds?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Recompute the canonical signature for a payload. Returns `v1=<hex>`.
|
|
68
|
+
* Exposed so callers can sign in tests; matches the backend byte-for-byte.
|
|
69
|
+
*/
|
|
70
|
+
export declare function computeSignature(secret: string, timestamp: number | string, body: string | Uint8Array): string;
|
|
71
|
+
/**
|
|
72
|
+
* Verify a webhook signature. Returns `true` only when the timestamp is within
|
|
73
|
+
* tolerance AND a candidate signature constant-time-matches the recomputed one.
|
|
74
|
+
* Never throws on a bad signature or a malformed timestamp (those return
|
|
75
|
+
* `false`); throws only on receiver misconfiguration: a missing/empty secret,
|
|
76
|
+
* or a `toleranceSeconds` that is not a finite number of at least 0 (#16183).
|
|
77
|
+
* The two are told apart on purpose: a `false` is the sender's problem and is
|
|
78
|
+
* answered with a 4xx, a throw is the receiver's own bug and should reach a
|
|
79
|
+
* log, not be mistaken for a forged delivery.
|
|
80
|
+
*/
|
|
81
|
+
export declare function verifySignature(input: VerifySignatureInput): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Webhook event types. Source of truth:
|
|
84
|
+
* `web/public/api/v1/openapi.json` -> components.schemas.WebhookEventType.enum.
|
|
85
|
+
* `large_trades_inserted`, `whale_trades_inserted`, `wallet_grade_changed`,
|
|
86
|
+
* `suspicious_trade_flagged`, `insider_radar_flag_raised`,
|
|
87
|
+
* `sharp_money_flow_detected`, and `smart_money_flow_detected` are Pro-only:
|
|
88
|
+
* they deliver only to API keys on an active Pro subscription.
|
|
89
|
+
*
|
|
90
|
+
* Some entries are two spellings of ONE event, not two events: either one
|
|
91
|
+
* subscribes, and an endpoint receives its deliveries under the spelling it
|
|
92
|
+
* registered. The canonical spelling is listed first of each pair --
|
|
93
|
+
* `large_trades_inserted` over `whale_trades_inserted` and `trader_synced`
|
|
94
|
+
* over `whale_trader_synced` (#16304), `suspicious_trade_flagged` over
|
|
95
|
+
* `insider_radar_flag_raised` (#16301), and `sharp_money_flow_detected` over
|
|
96
|
+
* `smart_money_flow_detected` (#16308). No deprecated spelling is ever
|
|
97
|
+
* removed.
|
|
98
|
+
*/
|
|
99
|
+
export declare const WEBHOOK_EVENT_TYPES: readonly ["large_trades_inserted", "whale_trades_inserted", "live_sports_updated", "trader_synced", "whale_trader_synced", "large_positions_updated", "wallet_grade_changed", "suspicious_trade_flagged", "insider_radar_flag_raised", "sharp_money_flow_detected", "smart_money_flow_detected", "export_job_ready", "export_job_failed", "export_job_expired", "export_job_cancelled"];
|
|
100
|
+
export type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];
|
|
101
|
+
/**
|
|
102
|
+
* Common delivery envelope every webhook POST body carries. Source of truth:
|
|
103
|
+
* the `enqueue_webhook_event` call sites in the backend
|
|
104
|
+
* (`{ id, type, created_at, data }`).
|
|
105
|
+
*/
|
|
106
|
+
export interface WebhookEventEnvelope<TType extends WebhookEventType = WebhookEventType, TData = unknown> {
|
|
107
|
+
/** Stable event id; identical across retries of the same logical event. */
|
|
108
|
+
id: string;
|
|
109
|
+
type: TType;
|
|
110
|
+
/** ISO-8601 timestamp of when the event was enqueued. */
|
|
111
|
+
created_at: string;
|
|
112
|
+
data: TData;
|
|
113
|
+
}
|
|
114
|
+
/** `whale_trades_inserted` data (Pro-only): a batch of new whale trades was ingested. */
|
|
115
|
+
export interface WhaleTradesInsertedData {
|
|
116
|
+
count: number;
|
|
117
|
+
}
|
|
118
|
+
/** One side's score line inside a `live_sports_updated` pulse. */
|
|
119
|
+
export interface LiveSportsScoreEntry {
|
|
120
|
+
team: string;
|
|
121
|
+
score: string;
|
|
122
|
+
/** Esports series only: this side's current-map score. Absent on other sports. */
|
|
123
|
+
map_score?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* `live_sports_updated` data: one bounded pulse for one live game.
|
|
127
|
+
*
|
|
128
|
+
* A pulse fires when a material field moved since this game's previous
|
|
129
|
+
* delivered pulse (`scores`, `status`, `period`, `live`, `ended`), at most once
|
|
130
|
+
* per game per 20 seconds. A `live` or `ended` transition is exempt from that
|
|
131
|
+
* interval, so a game going live or final is never coalesced away; the game
|
|
132
|
+
* clock alone never fires a pulse. Suppressed frames are folded into the next
|
|
133
|
+
* pulse's `changed` and its body carries the current state, so you see every
|
|
134
|
+
* field that moved but not every intermediate value.
|
|
135
|
+
*/
|
|
136
|
+
export interface LiveSportsUpdatedData {
|
|
137
|
+
/** The Polymarket event slug this game trades under. */
|
|
138
|
+
event_slug: string;
|
|
139
|
+
/** Provider game id, or `null` when the frame carried none. */
|
|
140
|
+
game_id: string | null;
|
|
141
|
+
/** League abbreviation, or `null`. */
|
|
142
|
+
league: string | null;
|
|
143
|
+
/**
|
|
144
|
+
* Durable per-game pulse ordinal, increasing by one per delivered pulse.
|
|
145
|
+
* Deliveries are not ordered, so drop a pulse whose version you already saw.
|
|
146
|
+
*/
|
|
147
|
+
version: number;
|
|
148
|
+
/** Material fields that moved since this game's previous delivered pulse. */
|
|
149
|
+
changed: Array<"scores" | "status" | "period" | "live" | "ended">;
|
|
150
|
+
/** Provider frame time (ISO 8601), or `null` when the frame carried none. */
|
|
151
|
+
observed_at: string | null;
|
|
152
|
+
/** When the pulse was admitted (ISO 8601). */
|
|
153
|
+
published_at: string;
|
|
154
|
+
status: string | null;
|
|
155
|
+
period: string | null;
|
|
156
|
+
/** Game clock. Not a material field: it never fires a pulse on its own. */
|
|
157
|
+
clock: string | null;
|
|
158
|
+
live: boolean | null;
|
|
159
|
+
ended: boolean;
|
|
160
|
+
scores: LiveSportsScoreEntry[];
|
|
161
|
+
/** Esports `BoN` series token, or `null` on every other sport. */
|
|
162
|
+
series_format: string | null;
|
|
163
|
+
/** Public game page; re-read it after a gap instead of replaying pulses. */
|
|
164
|
+
snapshot_url: string;
|
|
165
|
+
}
|
|
166
|
+
/** `whale_trader_synced` data: a tracked trader finished a sync pass. */
|
|
167
|
+
export interface WhaleTraderSyncedData {
|
|
168
|
+
trader_id: number;
|
|
169
|
+
wallet: string;
|
|
170
|
+
}
|
|
171
|
+
/** `large_positions_updated` data. */
|
|
172
|
+
export interface LargePositionsUpdatedData {
|
|
173
|
+
count: number;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* `wallet_grade_changed` data (Pro-only): a tracked wallet's grade moved.
|
|
177
|
+
* Source: `backend/crates/sync/src/periodic/heavy_pipeline.rs`.
|
|
178
|
+
*/
|
|
179
|
+
export interface WalletGradeChangedData {
|
|
180
|
+
wallet: string;
|
|
181
|
+
trader_id: number;
|
|
182
|
+
old_grade: string;
|
|
183
|
+
new_grade: string;
|
|
184
|
+
/** Direction of the grade move, e.g. "up" / "down". */
|
|
185
|
+
direction: string;
|
|
186
|
+
skill_index: number;
|
|
187
|
+
final_score: number;
|
|
188
|
+
date: string;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* `suspicious_trade_flagged` data (Pro-only): a suspicion threshold was
|
|
192
|
+
* crossed on a fresh fill. Source: `backend/src/polymarket_rtds_ingest/flushing.rs`.
|
|
193
|
+
*
|
|
194
|
+
* Delivered identically under the deprecated spelling
|
|
195
|
+
* `insider_radar_flag_raised` (#16301) to an endpoint that registered that
|
|
196
|
+
* spelling; the payload is the same.
|
|
197
|
+
*/
|
|
198
|
+
export interface SuspiciousTradeFlaggedData {
|
|
199
|
+
trade_id: string;
|
|
200
|
+
wallet: string;
|
|
201
|
+
trader_id: number;
|
|
202
|
+
condition_id: string;
|
|
203
|
+
suspicion_score: number;
|
|
204
|
+
track: string;
|
|
205
|
+
/** Outcome side the flagged fill took. */
|
|
206
|
+
side: string;
|
|
207
|
+
size: number;
|
|
208
|
+
price: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* @deprecated Use `SuspiciousTradeFlaggedData`; renamed in #16301. The two
|
|
212
|
+
* event spellings are one event with one payload, so this is an alias.
|
|
213
|
+
*/
|
|
214
|
+
export type InsiderRadarFlagRaisedData = SuspiciousTradeFlaggedData;
|
|
215
|
+
/**
|
|
216
|
+
* `sharp_money_flow_detected` payload (Pro-only). Fires when a scheduled
|
|
217
|
+
* scanner detects ranked-trader net flow crossing a threshold on a market.
|
|
218
|
+
*
|
|
219
|
+
* One payload for both spellings of the event: the deprecated
|
|
220
|
+
* `smart_money_flow_detected` delivers the same object (#16308).
|
|
221
|
+
*/
|
|
222
|
+
export interface SharpMoneyFlowDetectedData {
|
|
223
|
+
condition_id: string;
|
|
224
|
+
/** Signed net YES/NO exposure from ranked traders. */
|
|
225
|
+
net_flow_usd: number;
|
|
226
|
+
abs_net_flow_usd: number;
|
|
227
|
+
/** Side the net flow leans: "yes" or "no". */
|
|
228
|
+
dominant_side: string;
|
|
229
|
+
/** Minimum trader grade included: "S", "A", "B", "C", "D", or "F". */
|
|
230
|
+
grade_floor: string;
|
|
231
|
+
whale_trade_count: number;
|
|
232
|
+
/** Detection window, e.g. "24h". */
|
|
233
|
+
window: string;
|
|
234
|
+
}
|
|
235
|
+
/** `export_job_ready` data: the owner's async export can be downloaded. */
|
|
236
|
+
export interface ExportJobReadyData {
|
|
237
|
+
job_id: number;
|
|
238
|
+
status: "ready";
|
|
239
|
+
format: string;
|
|
240
|
+
next_action: "download";
|
|
241
|
+
total_trades: number | null;
|
|
242
|
+
processed_trades: number | null;
|
|
243
|
+
file_size: number | null;
|
|
244
|
+
data_as_of: string | null;
|
|
245
|
+
}
|
|
246
|
+
/** `export_job_failed` data: the owner's async export reached a terminal failure. */
|
|
247
|
+
export interface ExportJobFailedData {
|
|
248
|
+
job_id: number;
|
|
249
|
+
status: "failed";
|
|
250
|
+
format: string;
|
|
251
|
+
next_action: "resubmit";
|
|
252
|
+
failure_reason: string;
|
|
253
|
+
}
|
|
254
|
+
/** `export_job_expired` data: the owner's ready export passed retention. */
|
|
255
|
+
export interface ExportJobExpiredData {
|
|
256
|
+
job_id: number;
|
|
257
|
+
status: "expired";
|
|
258
|
+
format: string;
|
|
259
|
+
next_action: "resubmit";
|
|
260
|
+
}
|
|
261
|
+
/** `export_job_cancelled` data: the owner's export stopped because its owner cancelled it. */
|
|
262
|
+
export interface ExportJobCancelledData {
|
|
263
|
+
job_id: number;
|
|
264
|
+
status: "cancelled";
|
|
265
|
+
format: string;
|
|
266
|
+
next_action: "resubmit";
|
|
267
|
+
}
|
|
268
|
+
export type WhaleTradesInsertedEvent = WebhookEventEnvelope<"whale_trades_inserted", WhaleTradesInsertedData>;
|
|
269
|
+
export type LiveSportsUpdatedEvent = WebhookEventEnvelope<"live_sports_updated", LiveSportsUpdatedData>;
|
|
270
|
+
export type WhaleTraderSyncedEvent = WebhookEventEnvelope<"whale_trader_synced", WhaleTraderSyncedData>;
|
|
271
|
+
export type LargePositionsUpdatedEvent = WebhookEventEnvelope<"large_positions_updated", LargePositionsUpdatedData>;
|
|
272
|
+
export type WalletGradeChangedEvent = WebhookEventEnvelope<"wallet_grade_changed", WalletGradeChangedData>;
|
|
273
|
+
export type SuspiciousTradeFlaggedEvent = WebhookEventEnvelope<"suspicious_trade_flagged", SuspiciousTradeFlaggedData>;
|
|
274
|
+
/**
|
|
275
|
+
* @deprecated Use `SuspiciousTradeFlaggedEvent`; renamed in #16301. This stays
|
|
276
|
+
* a distinct envelope rather than an alias of it because the delivered `type`
|
|
277
|
+
* discriminant is the spelling the endpoint registered: an endpoint subscribed
|
|
278
|
+
* to `insider_radar_flag_raised` keeps receiving that literal, so narrowing on
|
|
279
|
+
* it keeps working.
|
|
280
|
+
*/
|
|
281
|
+
export type InsiderRadarFlagRaisedEvent = WebhookEventEnvelope<"insider_radar_flag_raised", SuspiciousTradeFlaggedData>;
|
|
282
|
+
/**
|
|
283
|
+
* @deprecated Use `SharpMoneyFlowDetectedData`; renamed in #16308. The two
|
|
284
|
+
* event spellings are one event with one payload, so this is an alias.
|
|
285
|
+
*/
|
|
286
|
+
export type SmartMoneyFlowDetectedData = SharpMoneyFlowDetectedData;
|
|
287
|
+
export type SharpMoneyFlowDetectedEvent = WebhookEventEnvelope<"sharp_money_flow_detected", SharpMoneyFlowDetectedData>;
|
|
288
|
+
/**
|
|
289
|
+
* @deprecated Use `SharpMoneyFlowDetectedEvent`; renamed in #16308. This stays
|
|
290
|
+
* a distinct envelope rather than an alias of it because the delivered `type`
|
|
291
|
+
* discriminant is the spelling the endpoint registered: an endpoint subscribed
|
|
292
|
+
* to `smart_money_flow_detected` keeps receiving that literal, so narrowing on
|
|
293
|
+
* it keeps working.
|
|
294
|
+
*/
|
|
295
|
+
export type SmartMoneyFlowDetectedEvent = WebhookEventEnvelope<"smart_money_flow_detected", SharpMoneyFlowDetectedData>;
|
|
296
|
+
export type ExportJobReadyEvent = WebhookEventEnvelope<"export_job_ready", ExportJobReadyData>;
|
|
297
|
+
export type ExportJobFailedEvent = WebhookEventEnvelope<"export_job_failed", ExportJobFailedData>;
|
|
298
|
+
export type ExportJobExpiredEvent = WebhookEventEnvelope<"export_job_expired", ExportJobExpiredData>;
|
|
299
|
+
export type ExportJobCancelledEvent = WebhookEventEnvelope<"export_job_cancelled", ExportJobCancelledData>;
|
|
300
|
+
/**
|
|
301
|
+
* Discriminated union over every typed webhook delivery payload.
|
|
302
|
+
*
|
|
303
|
+
* `SuspiciousTradeFlaggedEvent` and `InsiderRadarFlagRaisedEvent` are both
|
|
304
|
+
* members because the same event is delivered under whichever spelling the
|
|
305
|
+
* endpoint registered (#16301); the `data` shape is identical. So are
|
|
306
|
+
* `SharpMoneyFlowDetectedEvent` and `SmartMoneyFlowDetectedEvent` (#16308).
|
|
307
|
+
*/
|
|
308
|
+
export type WebhookEvent = WhaleTradesInsertedEvent | LiveSportsUpdatedEvent | WhaleTraderSyncedEvent | LargePositionsUpdatedEvent | WalletGradeChangedEvent | SuspiciousTradeFlaggedEvent | InsiderRadarFlagRaisedEvent | SharpMoneyFlowDetectedEvent | SmartMoneyFlowDetectedEvent | ExportJobReadyEvent | ExportJobFailedEvent | ExportJobExpiredEvent | ExportJobCancelledEvent;
|
|
309
|
+
/**
|
|
310
|
+
* Parse a verified raw body into the typed delivery envelope. Call only AFTER
|
|
311
|
+
* `verifySignature` passes (parsing first would let an unverified payload in).
|
|
312
|
+
*/
|
|
313
|
+
export declare function parseWebhookEvent(body: string): WebhookEvent;
|
|
314
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/webhooks.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook signature verification and typed delivery payloads.
|
|
3
|
+
*
|
|
4
|
+
* The backend signs every webhook delivery exactly like this (source of truth:
|
|
5
|
+
* `backend/src/api_v1/handlers/webhooks/endpoint_security.rs::sign_webhook_payload`):
|
|
6
|
+
*
|
|
7
|
+
* signature = "v1=" + hex( HMAC_SHA256( signing_secret, `${timestamp}.${raw_body}` ) )
|
|
8
|
+
*
|
|
9
|
+
* It is sent on two headers:
|
|
10
|
+
* - `x-0xinsider-timestamp: <unix-seconds>`
|
|
11
|
+
* - `x-0xinsider-signature: v1=<hex>` (may be a comma-separated list)
|
|
12
|
+
*
|
|
13
|
+
* Verification, the receiver side. The backend only signs; the published
|
|
14
|
+
* recipe is the delivery-signing paragraph on POST /api/v1/webhooks in
|
|
15
|
+
* `web/public/api/v1/openapi.json`:
|
|
16
|
+
* 1. Reject if `|now - timestamp| > 300` seconds (replay tolerance).
|
|
17
|
+
* 2. Recompute the expected `v1=<hex>` over `${timestamp}.${rawBody}`.
|
|
18
|
+
* 3. Constant-time compare against each candidate in the header.
|
|
19
|
+
*
|
|
20
|
+
* `rawBody` MUST be the exact bytes received: verify before JSON parsing, since
|
|
21
|
+
* re-serializing changes whitespace/key order and breaks the HMAC.
|
|
22
|
+
*
|
|
23
|
+
* ENDPOINT ACTIVATION (`verifyWebhook`, `POST /api/v1/webhooks/{id}/verify`):
|
|
24
|
+
* the one-time `verification.token` is necessary but not sufficient. That call
|
|
25
|
+
* POSTs a challenge to your webhook url and activates the endpoint only if you
|
|
26
|
+
* answer 2xx within 10 seconds. The challenge body is
|
|
27
|
+
* `{ "type": "webhook.verification", "token": "<verification_token>",
|
|
28
|
+
* "webhook_id": <id> }`, it carries `x-0xinsider-event-type:
|
|
29
|
+
* webhook.verification`, and it is signed with the endpoint's `signing_secret`
|
|
30
|
+
* exactly like a delivery -- so `verifySignature` below validates it unchanged.
|
|
31
|
+
* The challenge follows no redirects and never reads your response body. A
|
|
32
|
+
* non-2xx answer, no answer inside 10 seconds, or a url that does not resolve to
|
|
33
|
+
* a publicly routable address returns 422 and leaves the endpoint
|
|
34
|
+
* `pending_verification`.
|
|
35
|
+
*/
|
|
36
|
+
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
37
|
+
/** Default replay tolerance; the published contract is 300 seconds. */
|
|
38
|
+
export const SIGNATURE_TOLERANCE_SECONDS = 300;
|
|
39
|
+
/** Header carrying the `v1=<hex>` signature. */
|
|
40
|
+
export const SIGNATURE_HEADER = "x-0xinsider-signature";
|
|
41
|
+
/** Header carrying the unix-seconds signing timestamp. */
|
|
42
|
+
export const TIMESTAMP_HEADER = "x-0xinsider-timestamp";
|
|
43
|
+
/**
|
|
44
|
+
* Recompute the canonical signature for a payload. Returns `v1=<hex>`.
|
|
45
|
+
* Exposed so callers can sign in tests; matches the backend byte-for-byte.
|
|
46
|
+
*/
|
|
47
|
+
export function computeSignature(secret, timestamp, body) {
|
|
48
|
+
const hmac = createHmac("sha256", secret);
|
|
49
|
+
hmac.update(String(timestamp));
|
|
50
|
+
hmac.update(".");
|
|
51
|
+
hmac.update(typeof body === "string" ? Buffer.from(body, "utf-8") : body);
|
|
52
|
+
return `v1=${hmac.digest("hex")}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Verify a webhook signature. Returns `true` only when the timestamp is within
|
|
56
|
+
* tolerance AND a candidate signature constant-time-matches the recomputed one.
|
|
57
|
+
* Never throws on a bad signature or a malformed timestamp (those return
|
|
58
|
+
* `false`); throws only on receiver misconfiguration: a missing/empty secret,
|
|
59
|
+
* or a `toleranceSeconds` that is not a finite number of at least 0 (#16183).
|
|
60
|
+
* The two are told apart on purpose: a `false` is the sender's problem and is
|
|
61
|
+
* answered with a 4xx, a throw is the receiver's own bug and should reach a
|
|
62
|
+
* log, not be mistaken for a forged delivery.
|
|
63
|
+
*/
|
|
64
|
+
export function verifySignature(input) {
|
|
65
|
+
if (!input.secret) {
|
|
66
|
+
throw new Error("verifySignature requires a non-empty signing secret");
|
|
67
|
+
}
|
|
68
|
+
const tolerance = input.toleranceSeconds ?? SIGNATURE_TOLERANCE_SECONDS;
|
|
69
|
+
// Fail closed on a tolerance that cannot bound anything. `Math.abs(now - ts)
|
|
70
|
+
// > NaN` is false for every age, and so is `> Infinity`, so either would
|
|
71
|
+
// admit a correctly signed payload of any age; a negative tolerance would
|
|
72
|
+
// reject everything, which is a misconfiguration too, not a policy.
|
|
73
|
+
if (typeof tolerance !== "number" || !Number.isFinite(tolerance) || tolerance < 0) {
|
|
74
|
+
throw new Error(`verifySignature toleranceSeconds must be a finite number of at least 0, got ${String(tolerance)}`);
|
|
75
|
+
}
|
|
76
|
+
const now = input.nowSeconds ?? Math.floor(Date.now() / 1000);
|
|
77
|
+
// Guard a caller-injected non-finite `now` (e.g. NaN): a non-finite reference
|
|
78
|
+
// time would make `Math.abs(now - ts) > tolerance` false and silently skip the
|
|
79
|
+
// replay-window check, so reject outright rather than verify on the HMAC alone.
|
|
80
|
+
if (!Number.isFinite(now)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const ts = Number(input.timestamp);
|
|
84
|
+
if (!Number.isFinite(ts)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
if (Math.abs(now - ts) > tolerance) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const expected = computeSignature(input.secret, ts, input.body);
|
|
91
|
+
const expectedBuf = Buffer.from(expected, "utf-8");
|
|
92
|
+
// The header may carry multiple comma-separated candidate signatures.
|
|
93
|
+
return input.signature
|
|
94
|
+
.split(",")
|
|
95
|
+
.map((part) => part.trim())
|
|
96
|
+
.some((candidate) => constantTimeEqual(candidate, expectedBuf));
|
|
97
|
+
}
|
|
98
|
+
function constantTimeEqual(candidate, expected) {
|
|
99
|
+
const candidateBuf = Buffer.from(candidate, "utf-8");
|
|
100
|
+
// timingSafeEqual throws on length mismatch; the length check itself is not
|
|
101
|
+
// secret (signature length is public), so guard first.
|
|
102
|
+
if (candidateBuf.length !== expected.length) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return timingSafeEqual(candidateBuf, expected);
|
|
106
|
+
}
|
|
107
|
+
// --- Typed webhook payloads ---
|
|
108
|
+
/**
|
|
109
|
+
* Webhook event types. Source of truth:
|
|
110
|
+
* `web/public/api/v1/openapi.json` -> components.schemas.WebhookEventType.enum.
|
|
111
|
+
* `large_trades_inserted`, `whale_trades_inserted`, `wallet_grade_changed`,
|
|
112
|
+
* `suspicious_trade_flagged`, `insider_radar_flag_raised`,
|
|
113
|
+
* `sharp_money_flow_detected`, and `smart_money_flow_detected` are Pro-only:
|
|
114
|
+
* they deliver only to API keys on an active Pro subscription.
|
|
115
|
+
*
|
|
116
|
+
* Some entries are two spellings of ONE event, not two events: either one
|
|
117
|
+
* subscribes, and an endpoint receives its deliveries under the spelling it
|
|
118
|
+
* registered. The canonical spelling is listed first of each pair --
|
|
119
|
+
* `large_trades_inserted` over `whale_trades_inserted` and `trader_synced`
|
|
120
|
+
* over `whale_trader_synced` (#16304), `suspicious_trade_flagged` over
|
|
121
|
+
* `insider_radar_flag_raised` (#16301), and `sharp_money_flow_detected` over
|
|
122
|
+
* `smart_money_flow_detected` (#16308). No deprecated spelling is ever
|
|
123
|
+
* removed.
|
|
124
|
+
*/
|
|
125
|
+
export const WEBHOOK_EVENT_TYPES = [
|
|
126
|
+
"large_trades_inserted",
|
|
127
|
+
"whale_trades_inserted",
|
|
128
|
+
"live_sports_updated",
|
|
129
|
+
"trader_synced",
|
|
130
|
+
"whale_trader_synced",
|
|
131
|
+
"large_positions_updated",
|
|
132
|
+
"wallet_grade_changed",
|
|
133
|
+
"suspicious_trade_flagged",
|
|
134
|
+
"insider_radar_flag_raised",
|
|
135
|
+
// Pro-only. `sharp_money_flow_detected` is the canonical spelling since
|
|
136
|
+
// #16308 ("sharp money" is the pinned product term);
|
|
137
|
+
// `smart_money_flow_detected` is its deprecated twin, kept live, and stays
|
|
138
|
+
// the `type` an endpoint that registered it receives.
|
|
139
|
+
"sharp_money_flow_detected",
|
|
140
|
+
"smart_money_flow_detected",
|
|
141
|
+
"export_job_ready",
|
|
142
|
+
"export_job_failed",
|
|
143
|
+
"export_job_expired",
|
|
144
|
+
"export_job_cancelled",
|
|
145
|
+
];
|
|
146
|
+
/**
|
|
147
|
+
* Parse a verified raw body into the typed delivery envelope. Call only AFTER
|
|
148
|
+
* `verifySignature` passes (parsing first would let an unverified payload in).
|
|
149
|
+
*/
|
|
150
|
+
export function parseWebhookEvent(body) {
|
|
151
|
+
return JSON.parse(body);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@0xinsider/sdk",
|
|
3
|
+
"version": "0.14.0-bootstrap.0",
|
|
4
|
+
"description": "Official TypeScript SDK for the 0xinsider API - analytics for Polymarket sports and esports markets (REST, cursor pagination, SSE stream, webhook verification)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsc --watch",
|
|
17
|
+
"clean": "rm -rf dist",
|
|
18
|
+
"generate": "node scripts/generate.mjs",
|
|
19
|
+
"check": "node scripts/check-drift.mjs --spec openapi.json",
|
|
20
|
+
"check:live": "node scripts/check-drift.mjs",
|
|
21
|
+
"check:examples": "tsc --ignoreConfig --noEmit --strict --module nodenext --moduleResolution nodenext --target es2022 --skipLibCheck --types node examples/sdk-list-s-grade-wallets.ts",
|
|
22
|
+
"pretest": "npm run build",
|
|
23
|
+
"test": "node --test test/*.test.mjs",
|
|
24
|
+
"test:sandbox": "OXINSIDER_SANDBOX_TESTS=1 node --test test/sandbox.test.mjs",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"0xinsider",
|
|
29
|
+
"prediction-markets",
|
|
30
|
+
"polymarket",
|
|
31
|
+
"sdk",
|
|
32
|
+
"api-client",
|
|
33
|
+
"sports-analytics",
|
|
34
|
+
"esports",
|
|
35
|
+
"large-trades",
|
|
36
|
+
"webhooks",
|
|
37
|
+
"sse"
|
|
38
|
+
],
|
|
39
|
+
"author": "0xinsider",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/0xinsider/0xinsider-node.git"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/0xinsider/0xinsider-node/issues"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://0xinsider.com/developers",
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=18"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public"
|
|
54
|
+
},
|
|
55
|
+
"files": [
|
|
56
|
+
"dist",
|
|
57
|
+
"README.md",
|
|
58
|
+
"LICENSE"
|
|
59
|
+
],
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^26.6.2",
|
|
62
|
+
"typescript": "^7.0.2"
|
|
63
|
+
}
|
|
64
|
+
}
|