@metamask/snaps-sdk
Version:
A library containing the core functionality for building MetaMask Snaps
1 lines • 46 kB
Source Map (JSON)
{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/jsx/validation.ts"],"names":[],"mappings":";;;;AAOA,uDAe+B;AAC/B,2CAOyB;AAoDzB,uDAAwC;AAExC,sDAMsB;AACtB,8CAKkB;AAElB;;GAEG;AACU,QAAA,SAAS,GAAkB,IAAA,qBAAS,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC;AAExE;;GAEG;AACU,QAAA,mBAAmB,GAA4B,QAAQ,CAAC;IACnE,IAAA,oBAAM,GAAE;CACT,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAAiC,IAAA,oBAAM,EAAC;IAChE,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,KAAK,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC;IACnC,GAAG,EAAE,IAAA,sBAAQ,EAAC,iBAAS,CAAC;CACzB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,QAAQ,CACf,MAA4B;IAE5B,MAAM,cAAc,GAA2B,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAA,mBAAK,EAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CACf,OAAoC;IAKpC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;IAC9E,OAAO,QAAQ,CACb,IAAA,sBAAQ,EACN,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAA,qBAAO,GAAE,CAAC;QACnB,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,CACH,CAIF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAClB,MAAY;IAEZ,OAAO,IAAA,sBAAQ,EACb,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAA,qBAAO,GAAE,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACsD,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,OAAO,CACd,IAAU,EACV,QAAe,EAAW;IAE1B,OAAO,IAAA,oBAAM,EAAC;QACZ,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAkC;QACpD,KAAK,EAAE,IAAA,oBAAM,EAAC,KAAK,CAAC;QACpB,GAAG,EAAE,IAAA,sBAAQ,EAAC,iBAAS,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,yBAAyB,CAGhC,IAAU,EAAE,QAAkB;IAC9B,OAAO,IAAA,oBAAM,EAAC;QACZ,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAkC;QACpD,KAAK,EAAE,IAAA,0BAAc,EAAC,QAAQ,CAAC;QAC/B,GAAG,EAAE,IAAA,sBAAQ,EAAC,iBAAS,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAG,IAAA,qBAAS,EAAC;IAC1C,IAAA,mBAAO,EAAC,MAAM,CAAC;IACf,IAAA,mBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAO,EAAC,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,WAAW,GAA2B,OAAO,CAAC,OAAO,EAAE;IAClE,GAAG,EAAE,IAAA,eAAG,GAAE;IACV,GAAG,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACvB,YAAY,EAAE,IAAA,sBAAQ,EAAC,0BAAkB,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,cAAc,GAAgC,IAAA,qBAAS,EAC3D,MAAM,CAAC,MAAM,CAAC,qBAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAQ,CAC5D,CAAC;AAEF;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,IAAA,sBAAQ,EACb,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC,CAAC,CACtE;IACD,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAC/D,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,YAAY,GAA4B,OAAO,CAAC,QAAQ,EAAE;IACrE,QAAQ,EAAE,QAAQ,CAAC,CAAC,2BAAmB,EAAE,mBAAW,EAAE,kBAAU,CAAC,CAAC;IAClE,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACxB,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC7B,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC5B,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;CACzB,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,cAAc,GAA8B,OAAO,CAAC,UAAU,EAAE;IAC3E,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC5B,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,uBAAuB,GAAG,IAAA,oBAAM,EAAC;IAC5C,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,WAAW,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC/B,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EACxC,+BAAuB,EACvB,IAAA,oBAAM,EAAC;IACL,IAAI,EAAE,IAAA,mBAAO,EAAC,MAAM,CAAC;CACtB,CAAC,CACH,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAA,oBAAM,EAC5C,+BAAuB,EACvB,IAAA,oBAAM,EAAC;IACL,IAAI,EAAE,IAAA,mBAAO,EAAC,UAAU,CAAC;CAC1B,CAAC,CACH,CAAC;AAEF;;GAEG;AACU,QAAA,sBAAsB,GAAG,IAAA,oBAAM,EAC1C,+BAAuB,EACvB,IAAA,oBAAM,EAAC;IACL,IAAI,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC;IACvB,GAAG,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACvB,GAAG,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACvB,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;CACzB,CAAC,CACH,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA2B,yBAAyB,CAC1E,OAAO,EACP,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,IAAA,qBAAa,EAAC,KAAK,CAAC,IAAI,IAAA,mBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACvD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,4BAAoB,CAAC;YAC9B,KAAK,UAAU;gBACb,OAAO,gCAAwB,CAAC;YAClC,KAAK,QAAQ;gBACX,OAAO,8BAAsB,CAAC;YAChC;gBACE,OAAO,+BAAuB,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,+BAAuB,CAAC;AACjC,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAAkC,OAAO,CACtE,cAAc,EACd;IACE,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,OAAO,EAAE,yBAAiB;IAC1B,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,WAAW,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC/B,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC7B,aAAa,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CACnC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAA4B,OAAO,CAAC,QAAQ,EAAE;IACrE,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,QAAQ,EAAE,IAAA,oBAAM,GAAE;IAClB,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,cAAc,GAA8B,OAAO,CAAC,UAAU,EAAE;IAC3E,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,oBAAY,CAAC,CAAC;IAClC,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,EAAE;IACxE,OAAO,EAAE,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,gCAAwB,CAAC;QAClC,CAAC;QACD,OAAO,2BAAmB,CAAC;IAC7B,CAAC,CAAC;IACF,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC7B,WAAW,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAChC,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,KAAK,EAAE,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,qBAAa,CAAC;QACvB,CAAC;QACD,OAAO,IAAA,oBAAM,GAAE,CAAC;IAClB,CAAC,CAAC;IACF,WAAW,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC/B,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;CAC1B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,oBAAoB,GAAoC,OAAO,CAC1E,gBAAgB,EAChB;IACE,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,QAAQ,EAAE,kBAAU;IACpB,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAA8B,OAAO,CAAC,UAAU,EAAE;IAC3E,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,4BAAoB,CAAC,CAAC;IAC1C,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,mBAAmB,GAAmC,OAAO,CACxE,eAAe,EACf;IACE,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,SAAS,EAAE,iEAAyD;IACpE,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,8BAAsB,CAAC,CAG/C;IACD,KAAK,EAAE,IAAA,sBAAQ,EAAC,gCAAwB,CAAC;IACzC,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA2B,OAAO,CAAC,OAAO,EAAE;IAClE,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,QAAQ,EAAE,IAAA,oBAAM,GAAE;IAClB,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,gBAAgB,GAAgC,OAAO,CAClE,YAAY,EACZ;IACE,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,mBAAW,CAAC,CAAC;IACjC,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,eAAe,GAA+B,OAAO,CAChE,WAAW,EACX;IACE,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,MAAM,EAAE,IAAA,qBAAS,EAAC,CAAC,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;IAC5B,QAAQ,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC9B,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,mEAAmE;IACnE,WAAW,CAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,sBAAc,CAAC,CAAC;IACvC,mBAAW;CACmC,CAAC;AAEjD;;GAEG;AACH,MAAM,eAAe,GAAG;IACtB,mBAAW;IACX,mEAAmE;IACnE,WAAW,CAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,sBAAc,CAAC,CAAC;CACO,CAAC;AAEjD;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,mEAAmE;IACnE,WAAW,CAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,sBAAc,CAAC,CAAC;IACvC,mBAAW;IACX,mEAAmE;IACnE,WAAW,CAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,sBAAc,CAAC,CAAC;CAC8B,CAAC;AAExE;;GAEG;AACH,MAAM,oBAAoB,GAAG;IAC3B,2BAAmB;IACnB,0BAAkB;IAClB,mBAAW;IACX,sBAAc;IACd,wBAAgB;IAChB,uBAAe;IACf,sBAAc;IACd,sBAAc;CAUf,CAAC;AAEF;;;GAGG;AACU,QAAA,qBAAqB,GAAG,IAAA,qBAAS,EAAC;IAC7C,GAAG,oBAAoB;IACvB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,cAAc;CAClB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAA,mBAAK,EAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,KAAK;YAC7B,CAAC,CAAC,IAAA,mBAAK,EAAC,cAAc,CAAC;YACvB,CAAC,CAAC,IAAA,mBAAK,EAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAA,sBAAU,EAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC,CAaA,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA2B,OAAO,CAAC,OAAO,EAAE;IAClE,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,QAAQ,EAAE,QAAQ,CAAC;QACjB,IAAA,oBAAM,GAAE;QACR,mEAAmE;QACnE,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,oBAAY,CAEtB;KACF,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,YAAY,GAA4B,OAAO,CAAC,QAAQ,EAAE;IACrE,QAAQ,EAAE,QAAQ,CAAC;QACjB,IAAA,oBAAM,GAAE;QACR,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,kBAAU,CAEpB;KACF,CAAC;CACH,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAwC,IAAA,sBAAU,EAC7E,CAAC,kBAAU,EAAE,oBAAY,CAAC,CAC3B,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,2BAAmB;IAC5B,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACzE,CAA2C,CAAC;AAEhC,QAAA,iBAAiB,GAAG,QAAQ;AACvC,mEAAmE;AACnE,CAAC,IAAA,kBAAI,EAAC,GAAG,EAAE,CAAC,sBAAc,CAAC,CAAC,CACiC,CAAC;AAEhE;;GAEG;AACU,QAAA,SAAS,GAAyB,OAAO,CAAC,KAAK,EAAE;IAC5D,QAAQ,EAAE,yBAAiB;IAC3B,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,YAAY,CAAC,EAAE,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5E,SAAS,EAAE,IAAA,sBAAQ,EACjB,IAAA,qBAAS,EAAC;QACR,IAAA,mBAAO,EAAC,OAAO,CAAC;QAChB,IAAA,mBAAO,EAAC,QAAQ,CAAC;QACjB,IAAA,mBAAO,EAAC,KAAK,CAAC;QACd,IAAA,mBAAO,EAAC,eAAe,CAAC;QACxB,IAAA,mBAAO,EAAC,cAAc,CAAC;KACxB,CAAC,CACH;IACD,cAAc,EAAE,IAAA,sBAAQ,EACtB,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,IAAA,mBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CACjE;IACD,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,eAAe,GAAG,yBAAiB,CAAC;AAEjD;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,QAAQ,EAAE,uBAAe;IACzB,IAAI,EAAE,IAAA,oBAAM,GAAE;CACf,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,IAAA,oBAAM,EAAC,oBAAY,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;IACxE,IACE,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;QACxC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;QACzC,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAClD,CAAC,KAAK,EAAE,EAAE,CACR,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS;YAC1B,KAAK,KAAK,IAAI,CACjB,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,uCAAuC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,EAAE;IACxE,QAAQ,EAAE,yBAAiB;IAC3B,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,YAAY,CAAC,EAAE,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5E,SAAS,EAAE,IAAA,sBAAQ,EACjB,IAAA,qBAAS,EAAC;QACR,IAAA,mBAAO,EAAC,OAAO,CAAC;QAChB,IAAA,mBAAO,EAAC,QAAQ,CAAC;QACjB,IAAA,mBAAO,EAAC,KAAK,CAAC;QACd,IAAA,mBAAO,EAAC,eAAe,CAAC;QACxB,IAAA,mBAAO,EAAC,cAAc,CAAC;KACxB,CAAC,CACH;CACF,CAAC,CAAC;AAEH;;;GAGG;AAEU,QAAA,iBAAiB,GAAG,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,mBAAK,EAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,YAAY,GAA4B,OAAO,CAAC,QAAQ,EAAE;IACrE,QAAQ,EAAE,yBAAiB;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,cAAc,GAA8B,OAAO,CAAC,UAAU,EAAE;IAC3E,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC/B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1E;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,EAAE;IACxE,QAAQ,EAAE,2BAAmB;IAC7B,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,QAAQ,EAAE,QAAQ,CAAC;QACjB,wBAAgB;QAChB,IAAA,oBAAM,GAAE;QACR,kBAAU;QACV,mBAAW;QACX,qBAAa;KACd,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,cAAc,GAA8B,OAAO,CAAC,UAAU,EAAE;IAC3E,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC;IAC7C,YAAY,EAAE,IAAA,sBAAQ,EAAC,0BAAkB,CAAC;CAC3C,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,UAAU,GAA0B,OAAO,CAAC,MAAM,EAAE;IAC/D,QAAQ,EAAE,QAAQ,CAAC;QACjB,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,IAAA,oBAAM,GAAE,CAAC;YAClB,CAAC;YACD,OAAO,IAAA,sBAAU,EAAC;gBAChB,kBAAU;gBACV,oBAAY;gBACZ,kBAAU;gBACV,kBAAU;gBACV,sBAAc;aACf,CAAC,CAAC;QACL,CAAC,CAAC;KACH,CAAC;IACF,SAAS,EAAE,IAAA,sBAAQ,EACjB,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,IAAA,mBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CACjE;IACD,KAAK,EAAE,IAAA,sBAAQ,EACb,IAAA,qBAAS,EAAC;QACR,IAAA,mBAAO,EAAC,SAAS,CAAC;QAClB,IAAA,mBAAO,EAAC,aAAa,CAAC;QACtB,IAAA,mBAAO,EAAC,OAAO,CAAC;QAChB,IAAA,mBAAO,EAAC,OAAO,CAAC;QAChB,IAAA,mBAAO,EAAC,SAAS,CAAC;QAClB,IAAA,mBAAO,EAAC,SAAS,CAAC;KACnB,CAAC,CACH;IACD,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,UAAU,EAAE,IAAA,sBAAQ,EAClB,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,IAAA,mBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CACpE;CACF,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,WAAW,GAA2B,OAAO,CAAC,OAAO,EAAE;IAClE,KAAK,EAAE,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAA,oBAAM,GAAE,CAAC;QAClB,CAAC;QAED,OAAO,kBAAU,CAAC;IACpB,CAAC,CAAC;IACF,KAAK,EAAE,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAA,oBAAM,GAAE,CAAC;QAClB,CAAC;QAED,OAAO,kBAAU,CAAC;IACpB,CAAC,CAAC;CACH,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,kBAAkB,GAAG,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;IACzD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAA,qBAAO,GAAE,CAAC;IACnB,CAAC;IACD,OAAO,IAAA,sBAAU,EAAC;QAChB,kBAAU;QACV,kBAAU;QACV,oBAAY;QACZ,kBAAU;QACV,mBAAW;QACX,kBAAU;KACX,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,oBAAoB,GAAG,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAA,oBAAM,GAAE,CAAC;IAClB,CAAC;IACD,OAAO,IAAA,sBAAU,EAAC;QAChB,kBAAU;QACV,kBAAU;QACV,oBAAY;QACZ,kBAAU;QACV,kBAAU;KACX,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,EAAE;IACxE,QAAQ,EAAE,IAAA,sBAAQ,EAAC,0BAAkB,CAAC;IACtC,OAAO,EAAE,4BAAoB;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,YAAY,GAA4B,OAAO,CAAC,QAAQ,EAAE;IACrE,QAAQ,EAAE,QAAQ,CAAC;QACjB,kBAAU;QACV,kBAAU;QACV,kBAAU;QACV,oBAAY;QACZ,kBAAU;QACV,oBAAY;QACZ,sBAAc;KACf,CAAC;IACF,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,QAAQ,EAAE,IAAA,mBAAK,EAAC;QACd,IAAA,mBAAO,EAAC,QAAQ,CAAC;QACjB,IAAA,mBAAO,EAAC,MAAM,CAAC;QACf,IAAA,mBAAO,EAAC,SAAS,CAAC;QAClB,IAAA,mBAAO,EAAC,SAAS,CAAC;KACnB,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,SAAS,GAAyB,OAAO,CAAC,KAAK,EAAE;IAC5D,KAAK,EAAE,IAAA,oBAAM,GAAE;IACf,QAAQ,EAAE,IAAA,sBAAU,EAAC;QACnB,qBAAa;QACb,mBAAW;QACX,kBAAU;QACV,mBAAW;QACX,kBAAU;QACV,sBAAc;KACf,CAAC;IACF,OAAO,EAAE,IAAA,sBAAQ,EACf,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CACzE;IACD,OAAO,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa,GAA6B,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1E;;;;GAIG;AACU,QAAA,cAAc,GAAG,IAAA,sBAAU,EAAC;IACvC,qBAAa;IACb,2BAAmB;IACnB,0BAAkB;IAClB,kBAAU;IACV,iBAAS;IACT,oBAAY;IACZ,sBAAc;IACd,qBAAa;IACb,sBAAc;IACd,wBAAgB;IAChB,mBAAW;IACX,uBAAe;IACf,kBAAU;IACV,qBAAa;IACb,mBAAW;IACX,mBAAW;IACX,oBAAY;IACZ,kBAAU;IACV,iBAAS;IACT,qBAAa;IACb,kBAAU;IACV,qBAAa;IACb,sBAAc;IACd,kBAAU;IACV,kBAAU;IACV,sBAAc;IACd,qBAAa;IACb,oBAAY;IACZ,oBAAY;IACZ,sBAAc;CACf,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,eAAe,GAA+B,OAAO,CAChE,WAAW,EACX;IACE,QAAQ,EAAE,IAAA,0BAAc,EAAC,CAAC,KAAK,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAA,mBAAK,EAAC,CAAC,sBAAc,EAAE,oBAAY,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,sBAAc,CAAC;IACxB,CAAC,CAGA;IACD,eAAe,EAAE,IAAA,sBAAQ,EACvB,IAAA,qBAAS,EAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAO,EAAC,aAAa,CAAC,CAAC,CAAC,CACxD;CACF,CACF,CAAC;AAEF;;;GAGG;AACU,QAAA,oBAAoB,GAAG,IAAA,sBAAU,EAAC;IAC7C,sBAAc;IACd,uBAAe;CAChB,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,gBAAgB,GAAyB,IAAA,sBAAU,EAAC;IAC/D,2BAAmB;IACnB,0BAAkB;IAClB,oBAAY;IACZ,mBAAW;IACX,uBAAe;IACf,mBAAW;IACX,kBAAU;IACV,kBAAU;IACV,oBAAY;IACZ,qBAAa;IACb,iBAAS;IACT,sBAAc;IACd,qBAAa;IACb,qBAAa;IACb,mBAAW;IACX,kBAAU;IACV,iBAAS;IACT,qBAAa;IACb,kBAAU;IACV,sBAAc;IACd,oBAAY;IACZ,wBAAgB;IAChB,mBAAW;IACX,mBAAW;IACX,qBAAa;IACb,sBAAc;IACd,oBAAY;IACZ,uBAAe;IACf,kBAAU;IACV,kBAAU;IACV,sBAAc;IACd,4BAAoB;IACpB,qBAAa;IACb,oBAAY;IACZ,oBAAY;IACZ,sBAAc;CACf,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,IAAA,gBAAE,EAAC,KAAK,EAAE,wBAAgB,CAAC,CAAC;AACrC,CAAC;AAFD,oCAEC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,IAAA,qBAAa,EAAC,KAAK,CAAC;QACpB,IAAA,mBAAW,EAAC,KAAK,EAAE,MAAM,CAAC;QAC1B,IAAA,mBAAW,EAAC,KAAK,EAAE,OAAO,CAAC;QAC3B,IAAA,mBAAW,EAAC,KAAK,EAAE,KAAK,CAAC,CAC1B,CAAC;AACJ,CAAC;AAPD,gDAOC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,4EAA4E;IAC5E,0EAA0E;IAC1E,2DAA2D;IAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CACpD,KAAK,CACN,qFAAqF,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAXD,4CAWC","sourcesContent":["import type {\n AnyStruct,\n Infer,\n InferStructTuple,\n ObjectSchema,\n Struct,\n} from '@metamask/superstruct';\nimport {\n is,\n boolean,\n optional,\n array,\n lazy,\n nullable,\n number,\n object,\n record,\n string,\n tuple,\n refine,\n assign,\n union,\n} from '@metamask/superstruct';\nimport {\n CaipAccountIdStruct,\n CaipChainIdStruct,\n hasProperty,\n HexChecksumAddressStruct,\n isPlainObject,\n JsonStruct,\n} from '@metamask/utils';\n\nimport type {\n GenericSnapChildren,\n GenericSnapElement,\n JsonObject,\n Key,\n Nestable,\n SnapElement,\n SnapsChildren,\n StringElement,\n} from './component';\nimport type {\n AssetSelectorElement,\n AvatarElement,\n SkeletonElement,\n AddressElement,\n AddressInputElement,\n BoldElement,\n BoxElement,\n ButtonElement,\n CheckboxElement,\n CardElement,\n CopyableElement,\n DividerElement,\n DropdownElement,\n OptionElement,\n RadioElement,\n RadioGroupElement,\n FieldElement,\n FormElement,\n HeadingElement,\n ImageElement,\n InputElement,\n ItalicElement,\n JSXElement,\n LinkElement,\n RowElement,\n SpinnerElement,\n StandardFormattingElement,\n TextElement,\n TooltipElement,\n ValueElement,\n FileInputElement,\n ContainerElement,\n FooterElement,\n IconElement,\n SectionElement,\n SelectorElement,\n SelectorOptionElement,\n BannerElement,\n} from './components';\nimport { IconName } from './components';\nimport type { Describe } from '../internals';\nimport {\n literal,\n nullUnion,\n selectiveUnion,\n svg,\n typedUnion,\n} from '../internals';\nimport {\n NonEip155AssetTypeStruct,\n NonEip155ChainIdStruct,\n NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct,\n type EmptyObject,\n} from '../types';\n\n/**\n * A struct for the {@link Key} type.\n */\nexport const KeyStruct: Describe<Key> = nullUnion([string(), number()]);\n\n/**\n * A struct for the {@link StringElement} type.\n */\nexport const StringElementStruct: Describe<StringElement> = children([\n string(),\n]);\n\n/**\n * A struct for the {@link GenericSnapElement} type.\n */\nexport const ElementStruct: Describe<GenericSnapElement> = object({\n type: string(),\n props: record(string(), JsonStruct),\n key: nullable(KeyStruct),\n});\n\n/**\n * A helper function for creating a struct for a {@link Nestable} type.\n *\n * @param struct - The struct for the type to test.\n * @returns The struct for the nestable type.\n */\nfunction nestable<Type, Schema>(\n struct: Struct<Type, Schema>,\n): Struct<Nestable<Type>, any> {\n const nestableStruct: Struct<Nestable<Type>> = selectiveUnion((value) => {\n if (Array.isArray(value)) {\n return array(lazy(() => nestableStruct));\n }\n return struct;\n });\n\n return nestableStruct;\n}\n\n/**\n * A helper function for creating a struct which allows children of a specific\n * type, as well as `null` and `boolean`.\n *\n * @param structs - The structs to allow as children.\n * @returns The struct for the children.\n */\nfunction children<Head extends AnyStruct, Tail extends AnyStruct[]>(\n structs: [head: Head, ...tail: Tail],\n): Struct<\n Nestable<Infer<Head> | InferStructTuple<Tail>[number] | boolean | null>,\n null\n> {\n const potentialUnion = structs.length === 1 ? structs[0] : nullUnion(structs);\n return nestable(\n nullable(\n selectiveUnion((value) => {\n if (typeof value === 'boolean') {\n return boolean();\n }\n return potentialUnion;\n }),\n ),\n ) as unknown as Struct<\n Nestable<Infer<Head> | InferStructTuple<Tail>[number] | boolean | null>,\n null\n >;\n}\n\n/**\n * A helper function for creating a struct which allows a single child of a specific\n * type, as well as `null` and `boolean`.\n *\n * @param struct - The struct to allow as a single child.\n * @returns The struct for the children.\n */\nfunction singleChild<Type extends AnyStruct>(\n struct: Type,\n): Struct<Infer<Type> | boolean | null, null> {\n return nullable(\n selectiveUnion((value) => {\n if (typeof value === 'boolean') {\n return boolean();\n }\n\n return struct;\n }),\n ) as unknown as Struct<Infer<Type> | boolean | null, null>;\n}\n\n/**\n * A helper function for creating a struct for a JSX element.\n *\n * @param name - The name of the element.\n * @param props - The props of the element.\n * @returns The struct for the element.\n */\nfunction element<Name extends string, Props extends ObjectSchema = EmptyObject>(\n name: Name,\n props: Props = {} as Props,\n) {\n return object({\n type: literal(name) as unknown as Struct<Name, Name>,\n props: object(props),\n key: nullable(KeyStruct),\n });\n}\n\n/**\n * A helper function for creating a struct for a JSX element with selective props.\n *\n * @param name - The name of the element.\n * @param selector - The selector function choosing the struct to validate with.\n * @returns The struct for the element.\n */\nfunction elementWithSelectiveProps<\n Name extends string,\n Selector extends (value: any) => AnyStruct,\n>(name: Name, selector: Selector) {\n return object({\n type: literal(name) as unknown as Struct<Name, Name>,\n props: selectiveUnion(selector),\n key: nullable(KeyStruct),\n });\n}\n\n/**\n * Shared struct used to validate border radius values used by various Snaps components.\n */\nexport const BorderRadiusStruct = nullUnion([\n literal('none'),\n literal('medium'),\n literal('full'),\n]);\n\n/**\n * A struct for the {@link ImageElement} type.\n */\nexport const ImageStruct: Describe<ImageElement> = element('Image', {\n src: svg(),\n alt: optional(string()),\n borderRadius: optional(BorderRadiusStruct),\n});\n\nconst IconNameStruct: Struct<`${IconName}`, null> = nullUnion(\n Object.values(IconName).map((name) => literal(name)) as any,\n);\n\n/**\n * A struct for the {@link IconElement} type.\n */\nexport const IconStruct: Describe<IconElement> = element('Icon', {\n name: IconNameStruct,\n color: optional(\n nullUnion([literal('default'), literal('primary'), literal('muted')]),\n ),\n size: optional(nullUnion([literal('md'), literal('inherit')])),\n});\n\n/**\n * A struct for the {@link ButtonElement} type.\n */\nexport const ButtonStruct: Describe<ButtonElement> = element('Button', {\n children: children([StringElementStruct, ImageStruct, IconStruct]),\n name: optional(string()),\n type: optional(nullUnion([literal('button'), literal('submit')])),\n variant: optional(nullUnion([literal('primary'), literal('destructive')])),\n size: optional(nullUnion([literal('sm'), literal('md')])),\n disabled: optional(boolean()),\n loading: optional(boolean()),\n form: optional(string()),\n});\n\n/**\n * A struct for the {@link CheckboxElement} type.\n */\nexport const CheckboxStruct: Describe<CheckboxElement> = element('Checkbox', {\n name: string(),\n checked: optional(boolean()),\n label: optional(string()),\n variant: optional(nullUnion([literal('default'), literal('toggle')])),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the generic input element props.\n */\nexport const GenericInputPropsStruct = object({\n name: string(),\n value: optional(string()),\n placeholder: optional(string()),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the text type input props.\n */\nexport const TextInputPropsStruct = assign(\n GenericInputPropsStruct,\n object({\n type: literal('text'),\n }),\n);\n\n/**\n * A struct for the password type input props.\n */\nexport const PasswordInputPropsStruct = assign(\n GenericInputPropsStruct,\n object({\n type: literal('password'),\n }),\n);\n\n/**\n * A struct for the number type input props.\n */\nexport const NumberInputPropsStruct = assign(\n GenericInputPropsStruct,\n object({\n type: literal('number'),\n min: optional(number()),\n max: optional(number()),\n step: optional(number()),\n }),\n);\n\n/**\n * A struct for the {@link InputElement} type.\n */\nexport const InputStruct: Describe<InputElement> = elementWithSelectiveProps(\n 'Input',\n (value) => {\n if (isPlainObject(value) && hasProperty(value, 'type')) {\n switch (value.type) {\n case 'text':\n return TextInputPropsStruct;\n case 'password':\n return PasswordInputPropsStruct;\n case 'number':\n return NumberInputPropsStruct;\n default:\n return GenericInputPropsStruct;\n }\n }\n return GenericInputPropsStruct;\n },\n);\n\n/**\n * A struct for the {@link AddressInputElement} type.\n */\nexport const AddressInputStruct: Describe<AddressInputElement> = element(\n 'AddressInput',\n {\n name: string(),\n chainId: CaipChainIdStruct,\n value: optional(string()),\n placeholder: optional(string()),\n disabled: optional(boolean()),\n displayAvatar: optional(boolean()),\n },\n);\n\n/**\n * A struct for the {@link OptionElement} type.\n */\nexport const OptionStruct: Describe<OptionElement> = element('Option', {\n value: string(),\n children: string(),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the {@link DropdownElement} type.\n */\nexport const DropdownStruct: Describe<DropdownElement> = element('Dropdown', {\n name: string(),\n value: optional(string()),\n children: children([OptionStruct]),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the {@link AddressElement} type.\n */\nexport const AddressStruct: Describe<AddressElement> = element('Address', {\n address: selectiveUnion((value) => {\n if (typeof value === 'string' && value.startsWith('0x')) {\n return HexChecksumAddressStruct;\n }\n return CaipAccountIdStruct;\n }),\n truncate: optional(boolean()),\n displayName: optional(boolean()),\n avatar: optional(boolean()),\n});\n\n/**\n * A struct for the {@link CardElement} type.\n */\nexport const CardStruct: Describe<CardElement> = element('Card', {\n image: optional(string()),\n title: selectiveUnion((value) => {\n if (typeof value === 'object') {\n return AddressStruct;\n }\n return string();\n }),\n description: optional(string()),\n value: string(),\n extra: optional(string()),\n});\n\n/**\n * A struct for the {@link SelectorOptionElement} type.\n */\nexport const SelectorOptionStruct: Describe<SelectorOptionElement> = element(\n 'SelectorOption',\n {\n value: string(),\n children: CardStruct,\n disabled: optional(boolean()),\n },\n);\n\n/**\n * A struct for the {@link SelectorElement} type.\n */\nexport const SelectorStruct: Describe<SelectorElement> = element('Selector', {\n name: string(),\n title: string(),\n value: optional(string()),\n children: children([SelectorOptionStruct]),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the {@link AssetSelectorElement} type.\n */\nexport const AssetSelectorStruct: Describe<AssetSelectorElement> = element(\n 'AssetSelector',\n {\n name: string(),\n addresses: NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct,\n chainIds: optional(array(NonEip155ChainIdStruct)) as unknown as Struct<\n Infer<typeof NonEip155ChainIdStruct>[] | undefined,\n null\n >,\n value: optional(NonEip155AssetTypeStruct),\n disabled: optional(boolean()),\n },\n);\n\n/**\n * A struct for the {@link RadioElement} type.\n */\nexport const RadioStruct: Describe<RadioElement> = element('Radio', {\n value: string(),\n children: string(),\n disabled: optional(boolean()),\n});\n\n/**\n * A struct for the {@link RadioGroupElement} type.\n */\nexport const RadioGroupStruct: Describe<RadioGroupElement> = element(\n 'RadioGroup',\n {\n name: string(),\n value: optional(string()),\n children: children([RadioStruct]),\n disabled: optional(boolean()),\n },\n);\n\n/**\n * A struct for the {@link FileInputElement} type.\n */\nexport const FileInputStruct: Describe<FileInputElement> = element(\n 'FileInput',\n {\n name: string(),\n accept: nullUnion([optional(array(string()))]),\n compact: optional(boolean()),\n disabled: optional(boolean()),\n },\n);\n\n/**\n * A subset of JSX elements that represent the tuple Box + Input of the Field children.\n */\nconst BOX_INPUT_LEFT = [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n singleChild(lazy(() => BoxChildStruct)),\n InputStruct,\n] as [typeof BoxChildStruct, typeof InputStruct];\n\n/**\n * A subset of JSX elements that represent the tuple Input + Box of the Field children.\n */\nconst BOX_INPUT_RIGHT = [\n InputStruct,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n singleChild(lazy(() => BoxChildStruct)),\n] as [typeof InputStruct, typeof BoxChildStruct];\n\n/**\n * A subset of JSX elements that represent the tuple Box + Input + Box of the Field children.\n */\nconst BOX_INPUT_BOTH = [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n singleChild(lazy(() => BoxChildStruct)),\n InputStruct,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n singleChild(lazy(() => BoxChildStruct)),\n] as [typeof BoxChildStruct, typeof InputStruct, typeof BoxChildStruct];\n\n/**\n * A subset of JSX elements that are allowed as single children of the Field component.\n */\nconst FIELD_CHILDREN_ARRAY = [\n AssetSelectorStruct,\n AddressInputStruct,\n InputStruct,\n DropdownStruct,\n RadioGroupStruct,\n FileInputStruct,\n CheckboxStruct,\n SelectorStruct,\n] as [\n typeof AssetSelectorStruct,\n typeof AddressInputStruct,\n typeof InputStruct,\n typeof DropdownStruct,\n typeof RadioGroupStruct,\n typeof FileInputStruct,\n typeof CheckboxStruct,\n typeof SelectorStruct,\n];\n\n/**\n * A union of the allowed children of the Field component.\n * This is mainly used in the simulator for validation purposes.\n */\nexport const FieldChildUnionStruct = nullUnion([\n ...FIELD_CHILDREN_ARRAY,\n ...BOX_INPUT_LEFT,\n ...BOX_INPUT_RIGHT,\n ...BOX_INPUT_BOTH,\n]);\n\n/**\n * A subset of JSX elements that are allowed as children of the Field component.\n */\nconst FieldChildStruct = selectiveUnion((value) => {\n const isArray = Array.isArray(value);\n if (isArray && value.length === 3) {\n return tuple(BOX_INPUT_BOTH);\n }\n\n if (isArray && value.length === 2) {\n return value[0]?.type === 'Box'\n ? tuple(BOX_INPUT_LEFT)\n : tuple(BOX_INPUT_RIGHT);\n }\n\n return typedUnion(FIELD_CHILDREN_ARRAY);\n}) as unknown as Struct<\n | [InputElement, GenericSnapChildren]\n | [GenericSnapChildren, InputElement]\n | [GenericSnapChildren, InputElement, GenericSnapChildren]\n | DropdownElement\n | RadioGroupElement\n | FileInputElement\n | InputElement\n | CheckboxElement\n | SelectorElement\n | AssetSelectorElement\n | AddressInputElement,\n null\n>;\n\n/**\n * A struct for the {@link FieldElement} type.\n */\nexport const FieldStruct: Describe<FieldElement> = element('Field', {\n label: optional(string()),\n error: optional(string()),\n children: FieldChildStruct,\n});\n\n/**\n * A struct for the {@link BoldElement} type.\n */\nexport const BoldStruct: Describe<BoldElement> = element('Bold', {\n children: children([\n string(),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n lazy(() => ItalicStruct) as unknown as Struct<\n SnapElement<JsonObject, 'Italic'>\n >,\n ]),\n});\n\n/**\n * A struct for the {@link ItalicElement} type.\n */\nexport const ItalicStruct: Describe<ItalicElement> = element('Italic', {\n children: children([\n string(),\n lazy(() => BoldStruct) as unknown as Struct<\n SnapElement<JsonObject, 'Bold'>\n >,\n ]),\n});\n\nexport const FormattingStruct: Describe<StandardFormattingElement> = typedUnion(\n [BoldStruct, ItalicStruct],\n);\n\n/**\n * A struct for the {@link AvatarElement} type.\n */\nexport const AvatarStruct = element('Avatar', {\n address: CaipAccountIdStruct,\n size: optional(nullUnion([literal('sm'), literal('md'), literal('lg')])),\n}) as unknown as Struct<AvatarElement, null>;\n\nexport const BoxChildrenStruct = children(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n [lazy(() => BoxChildStruct)],\n) as unknown as Struct<SnapsChildren<GenericSnapElement>, null>;\n\n/**\n * A struct for the {@link BoxElement} type.\n */\nexport const BoxStruct: Describe<BoxElement> = element('Box', {\n children: BoxChildrenStruct,\n direction: optional(nullUnion([literal('horizontal'), literal('vertical')])),\n alignment: optional(\n nullUnion([\n literal('start'),\n literal('center'),\n literal('end'),\n literal('space-between'),\n literal('space-around'),\n ]),\n ),\n crossAlignment: optional(\n nullUnion([literal('start'), literal('center'), literal('end')]),\n ),\n center: optional(boolean()),\n});\n\n/**\n * A subset of JSX elements that are allowed as children of the Form component.\n */\nexport const FormChildStruct = BoxChildrenStruct;\n\n/**\n * A struct for the {@link FormElement} type.\n */\nexport const FormStruct: Describe<FormElement> = element('Form', {\n children: FormChildStruct,\n name: string(),\n});\n\nconst FooterButtonStruct = refine(ButtonStruct, 'FooterButton', (value) => {\n if (\n typeof value.props.children === 'string' ||\n typeof value.props.children === 'boolean' ||\n value.props.children === null\n ) {\n return true;\n }\n\n if (Array.isArray(value.props.children)) {\n const hasNonTextElements = value.props.children.some(\n (child) =>\n typeof child !== 'string' &&\n typeof child !== 'boolean' &&\n child !== null,\n );\n\n if (!hasNonTextElements) {\n return true;\n }\n }\n\n return 'Footer buttons may only contain text.';\n});\n\n/**\n * A struct for the {@link SectionElement} type.\n */\nexport const SectionStruct: Describe<SectionElement> = element('Section', {\n children: BoxChildrenStruct,\n direction: optional(nullUnion([literal('horizontal'), literal('vertical')])),\n alignment: optional(\n nullUnion([\n literal('start'),\n literal('center'),\n literal('end'),\n literal('space-between'),\n literal('space-around'),\n ]),\n ),\n});\n\n/**\n * A subset of JSX elements that are allowed as children of the Footer component.\n * This set should include a single button or a tuple of two buttons.\n */\n\nexport const FooterChildStruct = selectiveUnion((value) => {\n if (Array.isArray(value)) {\n return tuple([FooterButtonStruct, FooterButtonStruct]);\n }\n return FooterButtonStruct;\n});\n\n/**\n * A struct for the {@link FooterElement} type.\n */\nexport const FooterStruct: Describe<FooterElement> = element('Footer', {\n children: FooterChildStruct,\n});\n\n/**\n * A struct for the {@link CopyableElement} type.\n */\nexport const CopyableStruct: Describe<CopyableElement> = element('Copyable', {\n value: string(),\n sensitive: optional(boolean()),\n});\n\n/**\n * A struct for the {@link DividerElement} type.\n */\nexport const DividerStruct: Describe<DividerElement> = element('Divider');\n\n/**\n * A struct for the {@link HeadingElement} type.\n */\nexport const HeadingStruct: Describe<HeadingElement> = element('Heading', {\n children: StringElementStruct,\n size: optional(nullUnion([literal('sm'), literal('md'), literal('lg')])),\n});\n\n/**\n * A struct for the {@link LinkElement} type.\n */\nexport const LinkStruct: Describe<LinkElement> = element('Link', {\n href: string(),\n children: children([\n FormattingStruct,\n string(),\n IconStruct,\n ImageStruct,\n AddressStruct,\n ]),\n});\n\n/**\n * A struct for the {@link SkeletonElement} type.\n */\nexport const SkeletonStruct: Describe<SkeletonElement> = element('Skeleton', {\n width: optional(union([number(), string()])),\n height: optional(union([number(), string()])),\n borderRadius: optional(BorderRadiusStruct),\n});\n\n/**\n * A struct for the {@link TextElement} type.\n */\nexport const TextStruct: Describe<TextElement> = element('Text', {\n children: children([\n selectiveUnion((value) => {\n if (typeof value === 'string') {\n return string();\n }\n return typedUnion([\n BoldStruct,\n ItalicStruct,\n LinkStruct,\n IconStruct,\n SkeletonStruct,\n ]);\n }),\n ]),\n alignment: optional(\n nullUnion([literal('start'), literal('center'), literal('end')]),\n ),\n color: optional(\n nullUnion([\n literal('default'),\n literal('alternative'),\n literal('muted'),\n literal('error'),\n literal('success'),\n literal('warning'),\n ]),\n ),\n size: optional(nullUnion([literal('sm'), literal('md')])),\n fontWeight: optional(\n nullUnion([literal('regular'), literal('medium'), literal('bold')]),\n ),\n});\n\n/**\n * A struct for the {@link ValueElement} type.\n */\nexport const ValueStruct: Describe<ValueElement> = element('Value', {\n value: selectiveUnion((value) => {\n if (typeof value === 'string') {\n return string();\n }\n\n return TextStruct;\n }),\n extra: selectiveUnion((value) => {\n if (typeof value === 'string') {\n return string();\n }\n\n return TextStruct;\n }),\n});\n\n/**\n * A subset of JSX elements that are allowed as children of the Tooltip component.\n * This set should include all text components and the Image.\n */\nexport const TooltipChildStruct = selectiveUnion((value) => {\n if (typeof value === 'boolean') {\n return boolean();\n }\n return typedUnion([\n TextStruct,\n BoldStruct,\n ItalicStruct,\n LinkStruct,\n ImageStruct,\n IconStruct,\n ]);\n});\n\n/**\n * A subset of JSX elements that are allowed as content of the Tooltip component.\n * This set should include all text components.\n */\nexport const TooltipContentStruct = selectiveUnion((value) => {\n if (typeof value === 'string') {\n return string();\n }\n return typedUnion([\n TextStruct,\n BoldStruct,\n ItalicStruct,\n LinkStruct,\n IconStruct,\n ]);\n});\n\n/**\n * A struct for the {@link TooltipElement} type.\n */\nexport const TooltipStruct: Describe<TooltipElement> = element('Tooltip', {\n children: nullable(TooltipChildStruct),\n content: TooltipContentStruct,\n});\n\n/**\n * A struct for the {@link BannerElement} type.\n */\nexport const BannerStruct: Describe<BannerElement> = element('Banner', {\n children: children([\n TextStruct,\n LinkStruct,\n IconStruct,\n ButtonStruct,\n BoldStruct,\n ItalicStruct,\n SkeletonStruct,\n ]),\n title: string(),\n severity: union([\n literal('danger'),\n literal('info'),\n literal('success'),\n literal('warning'),\n ]),\n});\n\n/**\n * A struct for the {@link RowElement} type.\n */\nexport const RowStruct: Describe<RowElement> = element('Row', {\n label: string(),\n children: typedUnion([\n AddressStruct,\n ImageStruct,\n TextStruct,\n ValueStruct,\n LinkStruct,\n SkeletonStruct,\n ]),\n variant: optional(\n nullUnion([literal('default'), literal('warning'), literal('critical')]),\n ),\n tooltip: optional(string()),\n});\n\n/**\n * A struct for the {@link SpinnerElement} type.\n */\nexport const SpinnerStruct: Describe<SpinnerElement> = element('Spinner');\n\n/**\n * A subset of JSX elements that are allowed as children of the Box component.\n * This set includes all components, except components that need to be nested in\n * another component (e.g., Field must be contained in a Form).\n */\nexport const BoxChildStruct = typedUnion([\n AddressStruct,\n AssetSelectorStruct,\n AddressInputStruct,\n BoldStruct,\n BoxStruct,\n ButtonStruct,\n CopyableStruct,\n DividerStruct,\n DropdownStruct,\n RadioGroupStruct,\n FieldStruct,\n FileInputStruct,\n FormStruct,\n HeadingStruct,\n InputStruct,\n ImageStruct,\n ItalicStruct,\n LinkStruct,\n RowStruct,\n SpinnerStruct,\n TextStruct,\n TooltipStruct,\n CheckboxStruct,\n CardStruct,\n IconStruct,\n SelectorStruct,\n SectionStruct,\n AvatarStruct,\n BannerStruct,\n SkeletonStruct,\n]);\n\n/**\n * A struct for the {@link ContainerElement} type.\n */\nexport const ContainerStruct: Describe<ContainerElement> = element(\n 'Container',\n {\n children: selectiveUnion((value) => {\n if (Array.isArray(value)) {\n return tuple([BoxChildStruct, FooterStruct]);\n }\n return BoxChildStruct;\n }) as unknown as Struct<\n [GenericSnapElement, FooterElement] | GenericSnapElement,\n null\n >,\n backgroundColor: optional(\n nullUnion([literal('default'), literal('alternative')]),\n ),\n },\n);\n\n/**\n * For now, the allowed JSX elements at the root are the same as the allowed\n * children of the Box component.\n */\nexport const RootJSXElementStruct = typedUnion([\n BoxChildStruct,\n ContainerStruct,\n]);\n\n/**\n * A struct for the {@link JSXElement} type.\n */\nexport const JSXElementStruct: Describe<JSXElement> = typedUnion([\n AssetSelectorStruct,\n AddressInputStruct,\n ButtonStruct,\n InputStruct,\n FileInputStruct,\n FieldStruct,\n FormStruct,\n BoldStruct,\n ItalicStruct,\n AddressStruct,\n BoxStruct,\n CopyableStruct,\n DividerStruct,\n HeadingStruct,\n ImageStruct,\n LinkStruct,\n RowStruct,\n SpinnerStruct,\n TextStruct,\n DropdownStruct,\n OptionStruct,\n RadioGroupStruct,\n RadioStruct,\n ValueStruct,\n TooltipStruct,\n CheckboxStruct,\n FooterStruct,\n ContainerStruct,\n CardStruct,\n IconStruct,\n SelectorStruct,\n SelectorOptionStruct,\n SectionStruct,\n AvatarStruct,\n BannerStruct,\n SkeletonStruct,\n]);\n\n/**\n * Check if a value is a JSX element.\n *\n * @param value - The value to check.\n * @returns True if the value is a JSX element, false otherwise.\n */\nexport function isJSXElement(value: unknown): value is JSXElement {\n return is(value, JSXElementStruct);\n}\n\n/**\n * Check if a value is a JSX element, without validating all of its contents.\n * This is useful when you want to validate the structure of a value, but not\n * all the children.\n *\n * This should only be used when you are sure that the value is safe to use,\n * i.e., after using {@link isJSXElement}.\n *\n * @param value - The value to check.\n * @returns True if the value is a JSX element, false otherwise.\n */\nexport function isJSXElementUnsafe(value: unknown): value is JSXElement {\n return (\n isPlainObject(value) &&\n hasProperty(value, 'type') &&\n hasProperty(value, 'props') &&\n hasProperty(value, 'key')\n );\n}\n\n/**\n * Assert that a value is a JSX element.\n *\n * @param value - The value to check.\n * @throws If the value is not a JSX element.\n */\nexport function assertJSXElement(value: unknown): asserts value is JSXElement {\n // TODO: We should use the error parsing utils from `snaps-utils` to improve\n // the error messages. It currently includes colours and potentially other\n // formatting that we might not want to include in the SDK.\n if (!isJSXElement(value)) {\n throw new Error(\n `Expected a JSX element, but received ${JSON.stringify(\n value,\n )}. Please refer to the documentation for the supported JSX elements and their props.`,\n );\n }\n}\n"]}