{"version":3,"sources":["../../../src/repositories/realm/walletRepository.ts","../../../src/repositories/realm/contractRepository.ts","../../../src/repositories/realm/intentRepository.ts","../../../src/repositories/realm/virtualTxRepository.ts","../../../src/repositories/realm/schemas.ts"],"names":["serializeVtxo","isVtxoSpent","isVtxoForScript","serializeUtxo","serializeAssets","scriptFromArkAddress","deserializeVtxo","deserializeUtxo","deserializeAssets","assertIntentIdUnique","intentMatchesFilter","intentPageBounds","isTerminalIntentState","mergeChainedTxType"],"mappings":";;;;;;;;;AAyBO,IAAM,wBAAN,MAAwD;AAAA,EAG3D,YAA6B,KAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA,EAAmB;AAAA,EAAnB,KAAA;AAAA,EAFpB,OAAA,GAAU,CAAA;AAAA;AAAA,EAMnB,MAAc,UAAA,GAA4B;AAAA,EAE1C;AAAA,EAEA,OAAO,MAAA,CAAO,YAAY,CAAA,GAAmB;AAAA,EAE7C;AAAA;AAAA,EAIA,MAAM,KAAA,GAAuB;AACzB,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC/C,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC/C,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAC,CAAA;AACtD,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAC,CAAA;AAAA,IAC1D,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIA,MAAM,SAAS,OAAA,EAAiD;AAC5D,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,iBAAiB,OAAO,CAAA;AAC/E,IAAA,OAAO,CAAC,GAAG,OAAO,CAAA,CAAE,IAAI,kBAAkB,CAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,SAAA,CAAU,OAAA,EAAiB,KAAA,EAA6C;AAC1E,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,QAAA,MAAM,CAAA,GAAIA,gCAAc,IAAI,CAAA;AAC5B,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,UACP,SAAA;AAAA,UACA;AAAA,YACI,IAAI,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,CAAA;AAAA,YACvB,OAAA;AAAA,YACA,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,SAAS,CAAA,CAAE,OAAA;AAAA,YACX,SAAA,EAAW,EAAE,oBAAA,CAAqB,EAAA;AAAA,YAClC,QAAA,EAAU,EAAE,oBAAA,CAAqB,CAAA;AAAA,YACjC,QAAA,EAAU,EAAE,mBAAA,CAAoB,EAAA;AAAA,YAChC,OAAA,EAAS,EAAE,mBAAA,CAAoB,CAAA;AAAA,YAC/B,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,MAAM,CAAA;AAAA,YACnC,iBAAA,EAAmB,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,aAAa,CAAA;AAAA,YACjD,WACI,OAAO,CAAA,CAAE,cAAc,QAAA,GACjB,CAAA,CAAE,YACF,CAAA,CAAE,SAAA,YAAqB,OACrB,CAAA,CAAE,SAAA,CAAU,aAAY,GACxB,IAAI,KAAK,CAAA,CAAE,SAAS,EAAE,WAAA,EAAY;AAAA,YAC9C,UAAA,EAAY,EAAE,UAAA,IAAc,KAAA;AAAA,YAC5B,OAAA,EAAS,CAAA,CAAE,OAAA,KAAY,MAAA,GAAY,OAAO,CAAA,CAAE,OAAA;AAAA,YAC5C,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA;AAAA,YACtB,SAAA,EAAW,EAAE,SAAA,IAAa,IAAA;AAAA,YAC1B,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA;AAAA,YACtB,kBAAkB,CAAA,CAAE,YAAA,GAAe,KAAK,SAAA,CAAU,CAAA,CAAE,YAAY,CAAA,GAAI,IAAA;AAAA,YACpE,YAAY,CAAA,CAAE,MAAA,GAAS,KAAK,SAAA,CAAU,CAAA,CAAE,MAAM,CAAA,GAAI,IAAA;AAAA,YAClD,MAAA,EAAQ,EAAE,MAAA,IAAU;AAAA,WACxB;AAAA,UACA;AAAA,SACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,YAAY,OAAA,EAAgC;AAC9C,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,iBAAiB,OAAO,CAAA;AAChF,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAgD;AACpE,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,gBAAgB,MAAM,CAAA;AAC7E,IAAA,OAAO,CAAC,GAAG,OAAO,CAAA,CAAE,IAAI,kBAAkB,CAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,kBAAA,CACF,OAAA,EACA,OAAA,EAC8B;AAC9B,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACnD,IAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AACjC,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAA8B,EAAC;AACrC,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,EAAA,EAAI;AACxC,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAI,EAAE,CAAA;AACpC,MAAA,MAAM,YAAA,GAAe,CAAA,CAAA,EAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,KAAA,KAAU,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAA;AACpF,MAAA,MAAM,QAAQ,OAAA,EAAS,WAAA,GACjB,CAAA,EAAG,YAAY,wCAAwC,KAAA,CAAM,MAAM,CAAA,sCAAA,EAAyC,KAAA,CAAM,SAAS,CAAC,CAAA,0CAAA,EAA6C,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,CAAA,CAAA,GACzL,YAAA;AACN,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,KAAA,EAAO,GAAG,KAAA,EAAO,KAAA,EAAO,EAAE,CAAA;AACjF,MAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACvB,QAAA,MAAM,IAAA,GAAO,mBAAmB,GAAG,CAAA;AACnC,QAAA,IAAI,CAAC,SAAS,WAAA,IAAe,CAACC,8BAAY,IAAI,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAAA,MACnE;AAAA,IACJ;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,MAAM,kBAAA,CAAmB,GAAA,EAAwB,KAAA,EAA6C;AAC1F,IAAA,IAAI,CAAC,IAAI,OAAA,EAAS;AACd,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC/D;AACA,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,MAAA,IAAI,CAACC,iCAAA,CAAgB,IAAA,EAAM,GAAA,CAAI,MAAM,CAAA,EAAG;AACpC,QAAA,MAAM,IAAI,KAAA;AAAA,UACN,CAAA,KAAA,EAAQ,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,2BAAA,EAA8B,GAAA,CAAI,MAAM,CAAA,MAAA,EAAS,IAAA,CAAK,MAAM,CAAA;AAAA,SAC9F;AAAA,MACJ;AAAA,IACJ;AACA,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAM,qBAAqB,MAAA,EAA+B;AACtD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,gBAAgB,MAAM,CAAA;AAC9E,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIA,MAAM,SAAS,OAAA,EAA0C;AACrD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,iBAAiB,OAAO,CAAA;AAC/E,IAAA,OAAO,CAAC,GAAG,OAAO,CAAA,CAAE,IAAI,kBAAkB,CAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,SAAA,CAAU,OAAA,EAAiB,KAAA,EAAsC;AACnE,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,QAAA,MAAM,CAAA,GAAIC,gCAAc,IAAI,CAAA;AAC5B,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,UACP,SAAA;AAAA,UACA;AAAA,YACI,IAAI,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,CAAA;AAAA,YACvB,OAAA;AAAA,YACA,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,SAAS,CAAA,CAAE,OAAA;AAAA,YACX,SAAA,EAAW,EAAE,oBAAA,CAAqB,EAAA;AAAA,YAClC,QAAA,EAAU,EAAE,oBAAA,CAAqB,CAAA;AAAA,YACjC,QAAA,EAAU,EAAE,mBAAA,CAAoB,EAAA;AAAA,YAChC,OAAA,EAAS,EAAE,mBAAA,CAAoB,CAAA;AAAA,YAC/B,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,MAAM,CAAA;AAAA,YACnC,kBAAkB,CAAA,CAAE,YAAA,GAAe,KAAK,SAAA,CAAU,CAAA,CAAE,YAAY,CAAA,GAAI;AAAA,WACxE;AAAA,UACA;AAAA,SACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,YAAY,OAAA,EAAgC;AAC9C,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,iBAAiB,OAAO,CAAA;AAChF,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIA,MAAM,sBAAsB,OAAA,EAA4C;AACpE,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAA,CAAE,QAAA,CAAS,iBAAiB,OAAO,CAAA;AACtF,IAAA,MAAM,MAAM,CAAC,GAAG,OAAO,CAAA,CAAE,IAAI,gBAAgB,CAAA;AAC7C,IAAA,GAAA,CAAI,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,SAAA,GAAY,EAAE,SAAS,CAAA;AAC5C,IAAA,OAAO,GAAA;AAAA,EACX;AAAA,EAEA,MAAM,gBAAA,CAAiB,OAAA,EAAiB,GAAA,EAAsC;AAC1E,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AAClB,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,UACP,gBAAA;AAAA,UACA;AAAA,YACI,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,GAAA,CAAI,YAAY,CAAA,CAAA,EAAI,EAAA,CAAG,GAAA,CAAI,cAAc,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,OAAO,CAAA,CAAA;AAAA,YAChF,OAAA;AAAA,YACA,YAAA,EAAc,GAAG,GAAA,CAAI,YAAA;AAAA,YACrB,cAAA,EAAgB,GAAG,GAAA,CAAI,cAAA;AAAA,YACvB,OAAA,EAAS,GAAG,GAAA,CAAI,OAAA;AAAA,YAChB,MAAM,EAAA,CAAG,IAAA;AAAA,YACT,QAAQ,EAAA,CAAG,MAAA;AAAA,YACX,SAAS,EAAA,CAAG,OAAA;AAAA,YACZ,WAAW,EAAA,CAAG,SAAA;AAAA,YACd,UAAA,EAAY,GAAG,MAAA,GAAS,IAAA,CAAK,UAAUC,iCAAA,CAAgB,EAAA,CAAG,MAAM,CAAC,CAAA,GAAI;AAAA,WACzE;AAAA,UACA;AAAA,SACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,mBAAmB,OAAA,EAAgC;AACrD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CACjB,OAAA,CAAQ,gBAAgB,CAAA,CACxB,QAAA,CAAS,iBAAiB,OAAO,CAAA;AACtC,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIA,MAAM,cAAA,GAA8C;AAChD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAChB,OAAA,CAA2B,gBAAgB,CAAA,CAC3C,QAAA,CAAS,aAAa,OAAO,CAAA;AAClC,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,OAAO,CAAA;AACzB,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,IAAA,MAAM,GAAA,GAAM,MAAM,CAAC,CAAA;AACnB,IAAA,MAAM,QAAqB,EAAC;AAC5B,IAAA,IAAI,IAAI,YAAA,EAAc;AAClB,MAAA,KAAA,CAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,YAAY,CAAA;AAAA,IAChD;AACA,IAAA,KAAA,CAAM,YAAA,GAAe,IAAI,YAAA,IAAgB,MAAA;AACzC,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EAEA,MAAM,gBAAgB,KAAA,EAAmC;AACrD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,QACP,gBAAA;AAAA,QACA;AAAA,UACI,GAAA,EAAK,OAAA;AAAA,UACL,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,cAAc,KAAA,CAAM,QAAA,GAAW,KAAK,SAAA,CAAU,KAAA,CAAM,QAAQ,CAAA,GAAI;AAAA,SACpE;AAAA,QACA;AAAA,OACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AACJ;AAWA,SAAS,mBAAmB,GAAA,EAA+B;AACvD,EAAA,MAAM,UAAA,GAAa;AAAA,IACf,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,MAClB,IAAI,GAAA,CAAI,SAAA;AAAA,MACR,GAAG,GAAA,CAAI;AAAA,KACX;AAAA,IACA,mBAAA,EAAqB;AAAA,MACjB,IAAI,GAAA,CAAI,QAAA;AAAA,MACR,GAAG,GAAA,CAAI;AAAA,KACX;AAAA,IACA,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AAAA,IACjC,aAAA,EAAe,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,iBAAiB,CAAA;AAAA,IAC/C,SAAA,EAAW,IAAI,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AAAA,IACjC,YAAY,GAAA,CAAI,UAAA;AAAA,IAChB,OAAA,EAAS,GAAA,CAAI,OAAA,KAAY,IAAA,GAAO,SAAY,GAAA,CAAI,OAAA;AAAA,IAChD,OAAA,EAAS,IAAI,OAAA,IAAW,MAAA;AAAA,IACxB,SAAA,EAAW,IAAI,SAAA,IAAa,MAAA;AAAA,IAC5B,OAAA,EAAS,IAAI,OAAA,IAAW,MAAA;AAAA,IACxB,cAAc,GAAA,CAAI,gBAAA,GAAmB,KAAK,KAAA,CAAM,GAAA,CAAI,gBAAgB,CAAA,GAAI,MAAA;AAAA,IACxE,QAAQ,GAAA,CAAI,UAAA,GAAa,KAAK,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA,GAAI,MAAA;AAAA;AAAA;AAAA;AAAA,IAItD,MAAA,EAAQ,GAAA,CAAI,MAAA,IAAUC,sCAAA,CAAqB,IAAI,OAAO;AAAA,GAC1D;AAEA,EAAA,OAAOC,kCAAgB,UAAU,CAAA;AACrC;AAGA,SAAS,mBAAmB,GAAA,EAAwB;AAChD,EAAA,MAAM,UAAA,GAAa;AAAA,IACf,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,MAClB,IAAI,GAAA,CAAI,SAAA;AAAA,MACR,GAAG,GAAA,CAAI;AAAA,KACX;AAAA,IACA,mBAAA,EAAqB;AAAA,MACjB,IAAI,GAAA,CAAI,QAAA;AAAA,MACR,GAAG,GAAA,CAAI;AAAA,KACX;AAAA,IACA,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AAAA,IACjC,cAAc,GAAA,CAAI,gBAAA,GAAmB,KAAK,KAAA,CAAM,GAAA,CAAI,gBAAgB,CAAA,GAAI;AAAA,GAC5E;AAEA,EAAA,OAAOC,kCAAgB,UAAU,CAAA;AACrC;AAGA,SAAS,iBAAiB,GAAA,EAA0B;AAChD,EAAA,MAAM,EAAA,GAAqB;AAAA,IACvB,GAAA,EAAK;AAAA,MACD,cAAc,GAAA,CAAI,YAAA;AAAA,MAClB,gBAAgB,GAAA,CAAI,cAAA;AAAA,MACpB,SAAS,GAAA,CAAI;AAAA,KACjB;AAAA,IACA,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,QAAQ,GAAA,CAAI,MAAA;AAAA,IACZ,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,WAAW,GAAA,CAAI;AAAA,GACnB;AACA,EAAA,IAAI,IAAI,UAAA,EAAY;AAChB,IAAA,EAAA,CAAG,SAASC,mCAAA,CAAkB,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAU,CAAC,CAAA;AAAA,EAC5D;AACA,EAAA,OAAO,EAAA;AACX;;;AC9VO,IAAM,0BAAN,MAA4D;AAAA,EAG/D,YAA6B,KAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA,EAAmB;AAAA,EAAnB,KAAA;AAAA,EAFpB,OAAA,GAAU,CAAA;AAAA;AAAA,EAMnB,MAAc,UAAA,GAA4B;AAAA,EAE1C;AAAA,EAEA,OAAO,MAAA,CAAO,YAAY,CAAA,GAAmB;AAAA,EAE7C;AAAA;AAAA,EAIA,MAAM,KAAA,GAAuB;AACzB,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAC,CAAA;AAAA,IACvD,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIA,MAAM,aAAa,MAAA,EAA8C;AAC7D,IAAA,MAAM,KAAK,UAAA,EAAW;AAEtB,IAAA,IAAI,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA;AAE9C,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,MAAM,cAAwB,EAAC;AAC/B,MAAA,MAAM,aAAwB,EAAC;AAE/B,MAAA,IAAI,QAAA,GAAW,CAAA;AACf,MAAA,QAAA,GAAW,IAAA,CAAK,kBAAA;AAAA,QACZ,WAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA,CAAO,MAAA;AAAA,QACP;AAAA,OACJ;AACA,MAAA,QAAA,GAAW,IAAA,CAAK,kBAAA;AAAA,QACZ,WAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA,CAAO,KAAA;AAAA,QACP;AAAA,OACJ;AACA,MAAA,QAAA,GAAW,IAAA,CAAK,kBAAA;AAAA,QACZ,WAAA;AAAA,QACA,UAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA,CAAO,IAAA;AAAA,QACP;AAAA,OACJ;AACA,MAAA,QAAA,GAAW,KAAK,iBAAA,CAAkB,WAAA,EAAa,UAAA,EAAY,MAAA,CAAO,OAAO,QAAQ,CAAA;AAEjF,MAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AACxB,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AACtC,QAAA,OAAA,GAAU,OAAA,CAAQ,QAAA,CAAS,KAAA,EAAO,GAAG,UAAU,CAAA;AAAA,MACnD;AAAA,IACJ;AAEA,IAAA,OAAO,CAAC,GAAG,OAAO,CAAA,CAAE,IAAI,sBAAsB,CAAA;AAAA,EAClD;AAAA,EAEA,MAAM,aAAa,QAAA,EAAmC;AAClD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,QACP,aAAA;AAAA,QACA;AAAA,UACI,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,SAAS,QAAA,CAAS,OAAA;AAAA,UAClB,MAAM,QAAA,CAAS,IAAA;AAAA,UACf,OAAO,QAAA,CAAS,KAAA;AAAA,UAChB,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA;AAAA,UAC1C,WAAW,QAAA,CAAS,SAAA;AAAA,UACpB,KAAA,EAAO,SAAS,KAAA,IAAS,IAAA;AAAA,UACzB,cAAc,QAAA,CAAS,QAAA,GAAW,KAAK,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAA,GAAI,IAAA;AAAA,UACtE,KAAA,EAAO,SAAS,KAAA,IAAS;AAAA,SAC7B;AAAA,QACA;AAAA,OACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,eAAe,MAAA,EAA+B;AAChD,IAAA,MAAM,KAAK,UAAA,EAAW;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,CAAE,QAAA,CAAS,gBAAgB,MAAM,CAAA;AAClF,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACL;AAAA;AAAA,EAIQ,kBAAA,CACJ,KAAA,EACA,IAAA,EACA,MAAA,EACA,OACA,QAAA,EACM;AACN,IAAA,IAAI,KAAA,KAAU,QAAW,OAAO,QAAA;AAEhC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,QAAA;AAC/B,MAAA,MAAM,UAAA,GAAa,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnC,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,QAAA,GAAW,CAAC,CAAA,CAAA;AAAA,MACxC,CAAC,CAAA;AACD,MAAA,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,UAAA,CAAW,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAG,CAAA;AACzC,MAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAClB,MAAA,OAAO,WAAW,KAAA,CAAM,MAAA;AAAA,IAC5B,CAAA,MAAO;AACH,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,QAAQ,CAAA,CAAE,CAAA;AACtC,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,MAAA,OAAO,QAAA,GAAW,CAAA;AAAA,IACtB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,iBAAA,CACJ,KAAA,EACA,IAAA,EACA,KAAA,EACA,QAAA,EACM;AACN,IAAA,IAAI,KAAA,KAAU,QAAW,OAAO,QAAA;AAEhC,IAAA,MAAM,SAAS,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA;AACpD,IAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,QAAA;AAEhC,IAAA,MAAM,UAAA,GAAa,OAAO,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM,CAAA,UAAA,EAAa,QAAA,GAAW,CAAC,CAAA,CAAE,CAAA;AACnE,IAAA,IAAI,OAAO,QAAA,CAAS,SAAS,CAAA,EAAG,UAAA,CAAW,KAAK,eAAe,CAAA;AAC/D,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,UAAA,CAAW,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAG,CAAA;AACzC,IAAA,IAAA,CAAK,IAAA,CAAK,GAAG,MAAM,CAAA;AACnB,IAAA,OAAO,WAAW,MAAA,CAAO,MAAA;AAAA,EAC7B;AACJ;AAKA,SAAS,uBAAuB,GAAA,EAAoB;AAChD,EAAA,MAAM,QAAA,GAAqB;AAAA,IACvB,QAAQ,GAAA,CAAI,MAAA;AAAA,IACZ,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AAAA,IACjC,WAAW,GAAA,CAAI;AAAA,GACnB;AAEA,EAAA,IAAI,GAAA,CAAI,KAAA,KAAU,IAAA,IAAQ,GAAA,CAAI,UAAU,MAAA,EAAW;AAC/C,IAAA,QAAA,CAAS,QAAQ,GAAA,CAAI,KAAA;AAAA,EACzB;AACA,EAAA,IAAI,GAAA,CAAI,YAAA,KAAiB,IAAA,IAAQ,GAAA,CAAI,iBAAiB,MAAA,EAAW;AAC7D,IAAA,QAAA,CAAS,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,YAAY,CAAA;AAAA,EACnD;AACA,EAAA,IAAI,GAAA,CAAI,KAAA,KAAU,IAAA,IAAQ,GAAA,CAAI,UAAU,MAAA,EAAW;AAC/C,IAAA,QAAA,CAAS,QAAQ,GAAA,CAAI,KAAA;AAAA,EACzB;AAEA,EAAA,OAAO,QAAA;AACX;;;ACzKA,SAAS,SAAS,CAAA,EAAmB;AACjC,EAAA,OAAO;AAAA,IACH,YAAY,CAAA,CAAE,UAAA;AAAA,IACd,QAAA,EAAU,EAAE,QAAA,IAAY,MAAA;AAAA,IACxB,OAAO,CAAA,CAAE,KAAA;AAAA,IACT,SAAA,EAAW,EAAE,SAAA,IAAa,MAAA;AAAA,IAC1B,UAAA,EAAY,EAAE,UAAA,IAAc,MAAA;AAAA,IAC5B,WAAW,CAAA,CAAE,SAAA;AAAA,IACb,WAAW,CAAA,CAAE,SAAA;AAAA,IACb,eAAe,CAAA,CAAE,aAAA;AAAA,IACjB,sBAAsB,CAAA,CAAE,oBAAA;AAAA,IACxB,aAAa,CAAA,CAAE,WAAA;AAAA,IACf,oBAAoB,CAAA,CAAE,kBAAA;AAAA,IACtB,OAAA,EAAS,EAAE,OAAA,IAAW,MAAA;AAAA,IACtB,uBAAA,EAAyB,EAAE,uBAAA,IAA2B,MAAA;AAAA,IACtD,kBAAA,EAAoB,EAAE,kBAAA,IAAsB,MAAA;AAAA,IAC5C,eAAA,EAAiB,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,mBAAmB,CAAA;AAAA,IACjD,gBAAA,EAAkB,EAAE,gBAAA,IAAoB,MAAA;AAAA,IACxC,WAAA,EAAa,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,eAAe;AAAA,GAC7C;AACJ;AAEO,IAAM,wBAAN,MAAwD;AAAA,EAE3D,YAA6B,KAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA,EAAmB;AAAA,EAAnB,KAAA;AAAA,EADpB,OAAA,GAAU,CAAA;AAAA,EAGnB,MAAM,KAAA,GAAuB;AACzB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAC,CAAA;AAAA,IACrD,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,WAAW,MAAA,EAAkC;AAC/C,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AACzB,QAAA,MAAM,OAAA,GAAU;AAAA,UACZ,GAAG,KAAK,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,CAAE,QAAA,CAAS,gBAAA,EAAkB,MAAA,CAAO,QAAQ;AAAA,SACjF,CAAE,IAAI,QAAQ,CAAA;AACd,QAAAC,sCAAA,CAAqB,QAAQ,OAAO,CAAA;AAAA,MACxC;AACA,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,QACP,WAAA;AAAA,QACA;AAAA,UACI,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,QAAA,EAAU,OAAO,QAAA,IAAY,IAAA;AAAA,UAC7B,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,SAAA,EAAW,OAAO,SAAA,IAAa,IAAA;AAAA,UAC/B,UAAA,EAAY,OAAO,UAAA,IAAc,IAAA;AAAA,UACjC,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,UACpB,eAAe,MAAA,CAAO,aAAA;AAAA,UACtB,sBAAsB,MAAA,CAAO,oBAAA;AAAA,UAC7B,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,oBAAoB,MAAA,CAAO,kBAAA;AAAA,UAC3B,OAAA,EAAS,OAAO,OAAA,IAAW,IAAA;AAAA,UAC3B,uBAAA,EAAyB,OAAO,uBAAA,IAA2B,IAAA;AAAA,UAC3D,kBAAA,EAAoB,OAAO,kBAAA,IAAsB,IAAA;AAAA,UACjD,mBAAA,EAAqB,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,eAAe,CAAA;AAAA,UAC1D,gBAAA,EAAkB,OAAO,gBAAA,IAAoB,IAAA;AAAA,UAC7C,eAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,WAAW;AAAA,SACtD;AAAA,QACA;AAAA,OACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,WAAW,MAAA,EAA6C;AAC1D,IAAA,MAAM,GAAA,GAAM,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,QAAQ,WAAW,CAAC,CAAA,CAC1C,GAAA,CAAI,QAAQ,CAAA,CACZ,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,UAAA,CAAW,aAAA,CAAc,CAAA,CAAE,UAAU,CAAC,CAAA;AACzF,IAAA,MAAM,GAAA,GAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,CAAC,MAAMC,qCAAA,CAAoB,CAAA,EAAG,MAAM,CAAC,CAAA,GAAI,GAAA;AACzE,IAAA,MAAM,EAAE,IAAA,EAAM,GAAA,KAAQC,kCAAA,CAAiB,MAAA,EAAQ,IAAI,MAAM,CAAA;AACzD,IAAA,OAAO,GAAA,CAAI,KAAA,CAAM,IAAA,EAAM,GAAG,CAAA;AAAA,EAC9B;AAAA,EAEA,MAAM,sBAAA,GAA8C;AAChD,IAAA,MAAM,MAAkB,EAAC;AACzB,IAAA,KAAA,MAAW,CAAA,IAAK,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,QAAQ,WAAW,CAAC,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC7D,MAAA,IAAI,CAACC,wCAAsB,CAAA,CAAE,KAAK,GAAG,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,CAAE,WAAW,CAAA;AAClE,IAAA,OAAO,GAAA;AAAA,EACX;AAAA,EAEA,OAAO,MAAA,CAAO,YAAY,CAAA,GAAmB;AAAA,EAAC;AAClD;;;ACvFA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAgB,CAAA,EAAG,EAAE,IAAI,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,CAAA;AACpD,IAAM,QAAA,GAAW,CAAC,CAAA,KAAkB,CAAA,EAAG,CAAA,CAAE,QAAQ,CAAA,CAAA,EAAI,CAAA,CAAE,QAAQ,CAAA,CAAA,EAAI,CAAA,CAAE,QAAQ,CAAA,CAAA;AAG7E,SAAS,KAAK,CAAA,EAAmB;AAC7B,EAAA,OAAO;AAAA,IACH,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,IAAA,EAAM,EAAE,IAAA,IAAQ,IAAA;AAAA,IAChB,SAAA,EAAW,EAAE,SAAA,IAAa,IAAA;AAAA,IAC1B,MAAO,CAAA,CAAE,IAAA,IAAA,CAAA;AAAA,GACb;AACJ;AAEO,IAAM,2BAAN,MAA8D;AAAA,EAEjE,YAA6B,KAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA,EAAmB;AAAA,EAAnB,KAAA;AAAA,EADpB,OAAA,GAAU,CAAA;AAAA,EAGnB,MAAM,KAAA,GAAuB;AACzB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAC,CAAA;AACpD,MAAA,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,iBAAiB,GAAA,EAAiC;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACjB,QAAA,MAAM,IAAA,GAAO;AAAA,UACT,GAAG,KAAK,KAAA,CAAM,OAAA,CAAmB,cAAc,CAAA,CAAE,QAAA,CAAS,YAAA,EAAc,CAAA,CAAE,IAAI;AAAA,SAClF,CAAE,GAAG,CAAC,CAAA;AACN,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,UACP,cAAA;AAAA,UACA;AAAA,YACI,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM,CAAA,CAAE,IAAA,IAAQ,IAAA,EAAM,IAAA,IAAQ,IAAA;AAAA,YAC9B,SAAA,EAAW,CAAA,CAAE,SAAA,IAAa,IAAA,EAAM,SAAA,IAAa,IAAA;AAAA,YAC7C,IAAA,EAAMC,oCAAA,CAAmB,CAAA,CAAE,IAAA,EAAM,MAAM,IAAI;AAAA,WAC/C;AAAA,UACA;AAAA,SACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,aAAa,IAAA,EAAyC;AACxD,IAAA,MAAM,CAAA,GAAI,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,CAAE,QAAA,CAAS,YAAA,EAAc,IAAI,CAAC,CAAA;AAC7E,IAAA,OAAO,EAAE,MAAA,GAAS,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,IAAA;AAAA,EACnC;AAAA,EAEA,MAAM,SAAA,CAAU,IAAA,EAAgB,MAAA,EAAqC;AACjE,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,QACP,IAAA,CAAK,MAAM,OAAA,CAAQ,eAAe,EAAE,QAAA,CAAS,eAAA,EAAiB,OAAA,CAAQ,IAAI,CAAC;AAAA,OAC/E;AACA,MAAA,KAAA,MAAW,CAAA,IAAK,MAAA;AACZ,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,UACP,eAAA;AAAA,UACA;AAAA,YACI,EAAA,EAAI,SAAS,CAAC,CAAA;AAAA,YACd,SAAS,CAAA,EAAG,CAAA,CAAE,QAAQ,CAAA,CAAA,EAAI,EAAE,QAAQ,CAAA,CAAA;AAAA,YACpC,UAAU,CAAA,CAAE,QAAA;AAAA,YACZ,UAAU,CAAA,CAAE,QAAA;AAAA,YACZ,aAAa,CAAA,CAAE,WAAA;AAAA,YACf,UAAU,CAAA,CAAE;AAAA,WAChB;AAAA,UACA;AAAA,SACJ;AAAA,IACR,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,UAAU,IAAA,EAAsC;AAClD,IAAA,MAAM,IAAA,GAAO;AAAA,MACT,GAAG,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,eAAe,EAAE,QAAA,CAAS,eAAA,EAAiB,OAAA,CAAQ,IAAI,CAAC;AAAA;AAAA,KAElF;AACA,IAAA,IAAA,CAAK,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,QAAA,GAAW,EAAE,QAAQ,CAAA;AAC3C,IAAA,MAAM,MAAmB,EAAC;AAC1B,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AAClB,MAAA,MAAM,CAAA,GAAI,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,CAAE,QAAA,CAAS,YAAA,EAAc,CAAA,CAAE,WAAW,CAAC,CAAA;AACtF,MAAA,IAAI,CAAA,CAAE,QAAQ,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,IACrC;AACA,IAAA,OAAO,GAAA;AAAA,EACX;AAAA,EAEA,MAAM,UAAU,IAAA,EAAkC;AAC9C,IAAA,OACI,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,QAAQ,eAAe,CAAA,CAAE,QAAA,CAAS,eAAA,EAAiB,OAAA,CAAQ,IAAI,CAAC,CAAC,EAC3E,MAAA,GAAS,CAAA;AAAA,EAEtB;AAAA,EAEA,MAAM,kBAAkB,IAAA,EAA+B;AACnD,IAAA,IAAA,CAAK,KAAA,CAAM,MAAM,MAAM;AACnB,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CACnB,OAAA,CAAQ,eAAe,EACvB,QAAA,CAAS,eAAA,EAAiB,OAAA,CAAQ,IAAI,CAAC,CAAA;AAM5C,MAAA,MAAM,YAAA,GAAe;AAAA,QACjB,GAAG,IAAI,GAAA;AAAA;AAAA,UAEH,CAAC,GAAG,UAAU,CAAA,CAAE,IAAI,CAAC,CAAA,KAAW,EAAE,WAAqB;AAAA;AAC3D,OACJ;AACA,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,UAAU,CAAA;AAC5B,MAAA,KAAA,MAAW,eAAe,YAAA,EAAc;AACpC,QAAA,MAAM,QAAA,GAAW;AAAA,UACb,GAAG,KAAK,KAAA,CACH,OAAA,CAAQ,eAAe,CAAA,CACvB,QAAA,CAAS,qBAAqB,WAAW;AAAA,SAClD;AACA,QAAA,IAAI,SAAS,MAAA,KAAW,CAAA;AACpB,UAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,YACP,KAAK,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,CAAE,QAAA,CAAS,cAAc,WAAW;AAAA,WACzE;AAAA,MACR;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,OAAO,MAAA,CAAO,YAAY,CAAA,GAAmB;AAAA,EAAC;AAClD;;;ACxHO,IAAM,aAAA,GAAgB;AAAA,EACzB,IAAA,EAAM,SAAA;AAAA,EACN,UAAA,EAAY,IAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,EAAA,EAAI,QAAA;AAAA;AAAA,IACJ,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACzC,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAS,QAAA;AAAA;AAAA,IACT,SAAA,EAAW,QAAA;AAAA,IACX,QAAA,EAAU,QAAA;AAAA,IACV,QAAA,EAAU,QAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,gBAAA,EAAkB,SAAA;AAAA,IAClB,UAAA,EAAY,QAAA;AAAA,IACZ,iBAAA,EAAmB,QAAA;AAAA,IACnB,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,QAAA;AAAA;AAAA,IACX,UAAA,EAAY,MAAA;AAAA,IACZ,OAAA,EAAS,OAAA;AAAA,IACT,UAAA,EAAY,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKZ,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA;AAAK;AAEhD,CAAA;AAEO,IAAM,aAAA,GAAgB;AAAA,EACzB,IAAA,EAAM,SAAA;AAAA,EACN,UAAA,EAAY,IAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,EAAA,EAAI,QAAA;AAAA;AAAA,IACJ,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACzC,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAS,QAAA;AAAA;AAAA,IACT,SAAA,EAAW,QAAA;AAAA,IACX,QAAA,EAAU,QAAA;AAAA,IACV,QAAA,EAAU,QAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,gBAAA,EAAkB,SAAA;AAAA,IAClB,UAAA,EAAY;AAAA;AAEpB,CAAA;AAEO,IAAM,oBAAA,GAAuB;AAAA,EAChC,IAAA,EAAM,gBAAA;AAAA,EACN,UAAA,EAAY,IAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,EAAA,EAAI,QAAA;AAAA;AAAA,IACJ,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACzC,YAAA,EAAc,QAAA;AAAA,IACd,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS,QAAA;AAAA,IACT,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,SAAA,EAAW,KAAA;AAAA,IACX,UAAA,EAAY;AAAA;AAEpB,CAAA;AAEO,IAAM,oBAAA,GAAuB;AAAA,EAChC,IAAA,EAAM,gBAAA;AAAA,EACN,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,GAAA,EAAK,QAAA;AAAA,IACL,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc;AAAA;AAEtB,CAAA;AAEO,IAAM,iBAAA,GAAoB;AAAA,EAC7B,IAAA,EAAM,aAAA;AAAA,EACN,UAAA,EAAY,QAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS,QAAA;AAAA,IACT,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACtC,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACvC,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,YAAA,EAAc,SAAA;AAAA,IACd,OAAO,EAAE,IAAA,EAAM,UAAU,QAAA,EAAU,IAAA,EAAM,SAAS,IAAA;AAAK;AAE/D,CAAA;AAEO,IAAM,eAAA,GAAkB;AAAA,EAC3B,IAAA,EAAM,WAAA;AAAA,EACN,UAAA,EAAY,YAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IACvC,SAAA,EAAW,MAAA;AAAA,IACX,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,SAAA,EAAW,KAAA;AAAA,IACX,aAAA,EAAe,QAAA;AAAA,IACf,oBAAA,EAAsB,QAAA;AAAA,IACtB,WAAA,EAAa,QAAA;AAAA,IACb,kBAAA,EAAoB,QAAA;AAAA,IACpB,OAAA,EAAS,SAAA;AAAA,IACT,uBAAA,EAAyB,SAAA;AAAA,IACzB,kBAAA,EAAoB,SAAA;AAAA,IACpB,mBAAA,EAAqB,QAAA;AAAA,IACrB,gBAAA,EAAkB,SAAA;AAAA,IAClB,eAAA,EAAiB;AAAA;AAEzB,CAAA;AAEO,IAAM,kBAAA,GAAqB;AAAA,EAC9B,IAAA,EAAM,cAAA;AAAA,EACN,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,SAAA,EAAW,MAAA;AAAA,IACX,IAAA,EAAM;AAAA;AAEd,CAAA;AAEO,IAAM,mBAAA,GAAsB;AAAA,EAC/B,IAAA,EAAM,eAAA;AAAA,EACN,UAAA,EAAY,IAAA;AAAA,EACZ,UAAA,EAAY;AAAA,IACR,EAAA,EAAI,QAAA;AAAA;AAAA,IACJ,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA;AAAA,IACzC,QAAA,EAAU,QAAA;AAAA,IACV,QAAA,EAAU,KAAA;AAAA,IACV,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,IAC7C,QAAA,EAAU;AAAA;AAElB,CAAA;AAMO,IAAM,eAAA,GAAkB;AAAA,EAC3B,aAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACJ;AAeO,IAAM,2BAAA,GAA8B;AAAA,EACvC,eAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACJ;AAiCO,IAAM,wBAAA,GAA2B;AAYjC,SAAS,qBAAA,CAAsB,UAAe,QAAA,EAAqB;AACtE,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,SAAS,CAAA;AAC3C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACjB,MAAA,OAAA,CAAQ,MAAA,GAASR,sCAAA,CAAqB,OAAA,CAAQ,OAAO,CAAA;AAAA,IACzD;AAAA,EACJ;AAOA,EAAA,MAAM,eAAA,GACF,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAU,MAAM,CAAA,IAC9B,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAwB,CAAA,CAAE,SAAS,cAAc,CAAA;AAC3E,EAAA,IAAI,eAAA,EAAiB;AACjB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAA;AAC9C,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAA;AAC9C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACpC,MAAA,IAAI,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,IAAQ,QAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA,IAAO,IAAA,EAAM;AACjD,QAAA,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,GAAO,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AACJ","file":"index.cjs","sourcesContent":["import { ArkTransaction, ExtendedCoin, ExtendedVirtualCoin } from \"../../wallet\";\nimport { WalletRepository, WalletState, VtxoRepositoryKey } from \"../walletRepository\";\nimport {\n    serializeVtxo,\n    serializeUtxo,\n    deserializeVtxo,\n    deserializeUtxo,\n    serializeAssets,\n    deserializeAssets,\n    SerializedTapLeaf,\n} from \"../serialization\";\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\nimport { isVtxoForScript } from \"../../contracts/vtxoOwnership\";\nimport { isVtxoSpent } from \"../../wallet/vtxo\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of WalletRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmWalletRepository implements WalletRepository {\n    readonly version = 1 as const;\n\n    constructor(private readonly realm: RealmLike) {}\n\n    // ── Lifecycle ──────────────────────────────────────────────────────\n\n    private async ensureInit(): Promise<void> {\n        // Realm handles schema on open — nothing to initialise.\n    }\n\n    async [Symbol.asyncDispose](): Promise<void> {\n        // no-op — consumer owns the Realm lifecycle\n    }\n\n    // ── Clear ──────────────────────────────────────────────────────────\n\n    async clear(): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            this.realm.delete(this.realm.objects(\"ArkVtxo\"));\n            this.realm.delete(this.realm.objects(\"ArkUtxo\"));\n            this.realm.delete(this.realm.objects(\"ArkTransaction\"));\n            this.realm.delete(this.realm.objects(\"ArkWalletState\"));\n        });\n    }\n\n    // ── VTXO management ────────────────────────────────────────────────\n\n    async getVtxos(address: string): Promise<ExtendedVirtualCoin[]> {\n        await this.ensureInit();\n        const results = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n        return [...results].map(vtxoObjectToDomain);\n    }\n\n    async saveVtxos(address: string, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            for (const vtxo of vtxos) {\n                const s = serializeVtxo(vtxo);\n                this.realm.create(\n                    \"ArkVtxo\",\n                    {\n                        pk: `${s.txid}:${s.vout}`,\n                        address,\n                        txid: s.txid,\n                        vout: s.vout,\n                        value: s.value,\n                        tapTree: s.tapTree,\n                        forfeitCb: s.forfeitTapLeafScript.cb,\n                        forfeitS: s.forfeitTapLeafScript.s,\n                        intentCb: s.intentTapLeafScript.cb,\n                        intentS: s.intentTapLeafScript.s,\n                        statusJson: JSON.stringify(s.status),\n                        virtualStatusJson: JSON.stringify(s.virtualStatus),\n                        createdAt:\n                            typeof s.createdAt === \"string\"\n                                ? s.createdAt\n                                : s.createdAt instanceof Date\n                                  ? s.createdAt.toISOString()\n                                  : new Date(s.createdAt).toISOString(),\n                        isUnrolled: s.isUnrolled ?? false,\n                        isSpent: s.isSpent === undefined ? null : s.isSpent,\n                        spentBy: s.spentBy ?? null,\n                        settledBy: s.settledBy ?? null,\n                        arkTxId: s.arkTxId ?? null,\n                        extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n                        assetsJson: s.assets ? JSON.stringify(s.assets) : null,\n                        script: s.script ?? null,\n                    },\n                    \"modified\",\n                );\n            }\n        });\n    }\n\n    async deleteVtxos(address: string): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n            this.realm.delete(toDelete);\n        });\n    }\n\n    async getVtxosForScript(script: string): Promise<ExtendedVirtualCoin[]> {\n        await this.ensureInit();\n        const results = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n        return [...results].map(vtxoObjectToDomain);\n    }\n\n    async getVtxosForScripts(\n        scripts: string[],\n        options?: { unspentOnly?: boolean },\n    ): Promise<ExtendedVirtualCoin[]> {\n        const unique = [...new Set(scripts)].filter(Boolean);\n        if (unique.length === 0) return [];\n        await this.ensureInit();\n        const rows: ExtendedVirtualCoin[] = [];\n        for (let i = 0; i < unique.length; i += 64) {\n            const chunk = unique.slice(i, i + 64);\n            const scriptsQuery = `(${chunk.map((_, index) => `script == $${index}`).join(\" OR \")})`;\n            const query = options?.unspentOnly\n                ? `${scriptsQuery} AND (isSpent == null OR isSpent == $${chunk.length}) AND (spentBy == null OR spentBy == $${chunk.length + 1}) AND (settledBy == null OR settledBy == $${chunk.length + 1})`\n                : scriptsQuery;\n            const results = this.realm.objects(\"ArkVtxo\").filtered(query, ...chunk, false, \"\");\n            for (const row of results) {\n                const vtxo = vtxoObjectToDomain(row);\n                if (!options?.unspentOnly || !isVtxoSpent(vtxo)) rows.push(vtxo);\n            }\n        }\n        return rows;\n    }\n\n    async saveVtxosForScript(key: VtxoRepositoryKey, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n        if (!key.address) {\n            throw new Error(\"RealmWalletRepository requires an address\");\n        }\n        for (const vtxo of vtxos) {\n            if (!isVtxoForScript(vtxo, key.script)) {\n                throw new Error(\n                    `VTXO ${vtxo.txid}:${vtxo.vout} script mismatch: expected ${key.script}, got ${vtxo.script}`,\n                );\n            }\n        }\n        return this.saveVtxos(key.address, vtxos);\n    }\n\n    async deleteVtxosForScript(script: string): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n            this.realm.delete(toDelete);\n        });\n    }\n\n    // ── UTXO management ────────────────────────────────────────────────\n\n    async getUtxos(address: string): Promise<ExtendedCoin[]> {\n        await this.ensureInit();\n        const results = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n        return [...results].map(utxoObjectToDomain);\n    }\n\n    async saveUtxos(address: string, utxos: ExtendedCoin[]): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            for (const utxo of utxos) {\n                const s = serializeUtxo(utxo);\n                this.realm.create(\n                    \"ArkUtxo\",\n                    {\n                        pk: `${s.txid}:${s.vout}`,\n                        address,\n                        txid: s.txid,\n                        vout: s.vout,\n                        value: s.value,\n                        tapTree: s.tapTree,\n                        forfeitCb: s.forfeitTapLeafScript.cb,\n                        forfeitS: s.forfeitTapLeafScript.s,\n                        intentCb: s.intentTapLeafScript.cb,\n                        intentS: s.intentTapLeafScript.s,\n                        statusJson: JSON.stringify(s.status),\n                        extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n                    },\n                    \"modified\",\n                );\n            }\n        });\n    }\n\n    async deleteUtxos(address: string): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            const toDelete = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n            this.realm.delete(toDelete);\n        });\n    }\n\n    // ── Transaction history ────────────────────────────────────────────\n\n    async getTransactionHistory(address: string): Promise<ArkTransaction[]> {\n        await this.ensureInit();\n        const results = this.realm.objects(\"ArkTransaction\").filtered(\"address == $0\", address);\n        const txs = [...results].map(txObjectToDomain);\n        txs.sort((a, b) => a.createdAt - b.createdAt);\n        return txs;\n    }\n\n    async saveTransactions(address: string, txs: ArkTransaction[]): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            for (const tx of txs) {\n                this.realm.create(\n                    \"ArkTransaction\",\n                    {\n                        pk: `${address}:${tx.key.boardingTxid}:${tx.key.commitmentTxid}:${tx.key.arkTxid}`,\n                        address,\n                        boardingTxid: tx.key.boardingTxid,\n                        commitmentTxid: tx.key.commitmentTxid,\n                        arkTxid: tx.key.arkTxid,\n                        type: tx.type,\n                        amount: tx.amount,\n                        settled: tx.settled,\n                        createdAt: tx.createdAt,\n                        assetsJson: tx.assets ? JSON.stringify(serializeAssets(tx.assets)) : null,\n                    },\n                    \"modified\",\n                );\n            }\n        });\n    }\n\n    async deleteTransactions(address: string): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            const toDelete = this.realm\n                .objects(\"ArkTransaction\")\n                .filtered(\"address == $0\", address);\n            this.realm.delete(toDelete);\n        });\n    }\n\n    // ── Wallet state ───────────────────────────────────────────────────\n\n    async getWalletState(): Promise<WalletState | null> {\n        await this.ensureInit();\n        const results = this.realm\n            .objects<WalletStateObject>(\"ArkWalletState\")\n            .filtered(\"key == $0\", \"state\");\n        const items = [...results];\n        if (items.length === 0) return null;\n\n        const obj = items[0];\n        const state: WalletState = {};\n        if (obj.settingsJson) {\n            state.settings = JSON.parse(obj.settingsJson);\n        }\n        state.lastSyncTime = obj.lastSyncTime ?? undefined;\n        return state;\n    }\n\n    async saveWalletState(state: WalletState): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            this.realm.create(\n                \"ArkWalletState\",\n                {\n                    key: \"state\",\n                    lastSyncTime: state.lastSyncTime,\n                    settingsJson: state.settings ? JSON.stringify(state.settings) : null,\n                },\n                \"modified\",\n            );\n        });\n    }\n}\n\ninterface WalletStateObject {\n    key: string;\n    lastSyncTime: number | null;\n    settingsJson: string | null;\n}\n\n// ── Realm object → Domain converters ─────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction vtxoObjectToDomain(obj: any): ExtendedVirtualCoin {\n    const serialized = {\n        txid: obj.txid,\n        vout: obj.vout,\n        value: obj.value,\n        tapTree: obj.tapTree,\n        forfeitTapLeafScript: {\n            cb: obj.forfeitCb,\n            s: obj.forfeitS,\n        } as SerializedTapLeaf,\n        intentTapLeafScript: {\n            cb: obj.intentCb,\n            s: obj.intentS,\n        } as SerializedTapLeaf,\n        status: JSON.parse(obj.statusJson),\n        virtualStatus: JSON.parse(obj.virtualStatusJson),\n        createdAt: new Date(obj.createdAt),\n        isUnrolled: obj.isUnrolled,\n        isSpent: obj.isSpent === null ? undefined : obj.isSpent,\n        spentBy: obj.spentBy ?? undefined,\n        settledBy: obj.settledBy ?? undefined,\n        arkTxId: obj.arkTxId ?? undefined,\n        extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n        assets: obj.assetsJson ? JSON.parse(obj.assetsJson) : undefined,\n        // Post-migration every row has `script`, but the backfill is\n        // idempotent: derive from `address` if the legacy column is still\n        // null (e.g. the migration hasn't run yet on this handle).\n        script: obj.script ?? scriptFromArkAddress(obj.address),\n    };\n\n    return deserializeVtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction utxoObjectToDomain(obj: any): ExtendedCoin {\n    const serialized = {\n        txid: obj.txid,\n        vout: obj.vout,\n        value: obj.value,\n        tapTree: obj.tapTree,\n        forfeitTapLeafScript: {\n            cb: obj.forfeitCb,\n            s: obj.forfeitS,\n        } as SerializedTapLeaf,\n        intentTapLeafScript: {\n            cb: obj.intentCb,\n            s: obj.intentS,\n        } as SerializedTapLeaf,\n        status: JSON.parse(obj.statusJson),\n        extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n    };\n\n    return deserializeUtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction txObjectToDomain(obj: any): ArkTransaction {\n    const tx: ArkTransaction = {\n        key: {\n            boardingTxid: obj.boardingTxid,\n            commitmentTxid: obj.commitmentTxid,\n            arkTxid: obj.arkTxid,\n        },\n        type: obj.type as ArkTransaction[\"type\"],\n        amount: obj.amount,\n        settled: obj.settled,\n        createdAt: obj.createdAt,\n    };\n    if (obj.assetsJson) {\n        tx.assets = deserializeAssets(JSON.parse(obj.assetsJson));\n    }\n    return tx;\n}\n","import { Contract, ContractState, ContractWatchState } from \"../../contracts/types\";\nimport { ContractFilter, ContractRepository } from \"../contractRepository\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of ContractRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmContractRepository implements ContractRepository {\n    readonly version = 2 as const;\n\n    constructor(private readonly realm: RealmLike) {}\n\n    // ── Lifecycle ──────────────────────────────────────────────────────\n\n    private async ensureInit(): Promise<void> {\n        // Realm handles schema on open — nothing to initialise.\n    }\n\n    async [Symbol.asyncDispose](): Promise<void> {\n        // no-op — consumer owns the Realm lifecycle\n    }\n\n    // ── Clear ──────────────────────────────────────────────────────────\n\n    async clear(): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            this.realm.delete(this.realm.objects(\"ArkContract\"));\n        });\n    }\n\n    // ── Contract management ────────────────────────────────────────────\n\n    async getContracts(filter?: ContractFilter): Promise<Contract[]> {\n        await this.ensureInit();\n\n        let results = this.realm.objects(\"ArkContract\");\n\n        if (filter) {\n            const filterParts: string[] = [];\n            const filterArgs: unknown[] = [];\n\n            let argIndex = 0;\n            argIndex = this.addFilterCondition(\n                filterParts,\n                filterArgs,\n                \"script\",\n                filter.script,\n                argIndex,\n            );\n            argIndex = this.addFilterCondition(\n                filterParts,\n                filterArgs,\n                \"state\",\n                filter.state,\n                argIndex,\n            );\n            argIndex = this.addFilterCondition(\n                filterParts,\n                filterArgs,\n                \"type\",\n                filter.type,\n                argIndex,\n            );\n            argIndex = this.addWatchCondition(filterParts, filterArgs, filter.watch, argIndex);\n\n            if (filterParts.length > 0) {\n                const query = filterParts.join(\" AND \");\n                results = results.filtered(query, ...filterArgs);\n            }\n        }\n\n        return [...results].map(contractObjectToDomain);\n    }\n\n    async saveContract(contract: Contract): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            this.realm.create(\n                \"ArkContract\",\n                {\n                    script: contract.script,\n                    address: contract.address,\n                    type: contract.type,\n                    state: contract.state,\n                    paramsJson: JSON.stringify(contract.params),\n                    createdAt: contract.createdAt,\n                    label: contract.label ?? null,\n                    metadataJson: contract.metadata ? JSON.stringify(contract.metadata) : null,\n                    watch: contract.watch ?? null,\n                },\n                \"modified\",\n            );\n        });\n    }\n\n    async deleteContract(script: string): Promise<void> {\n        await this.ensureInit();\n        this.realm.write(() => {\n            const toDelete = this.realm.objects(\"ArkContract\").filtered(\"script == $0\", script);\n            this.realm.delete(toDelete);\n        });\n    }\n\n    // ── Helpers ─────────────────────────────────────────────────────────\n\n    private addFilterCondition(\n        parts: string[],\n        args: unknown[],\n        column: string,\n        value: string | string[] | undefined,\n        argIndex: number,\n    ): number {\n        if (value === undefined) return argIndex;\n\n        if (Array.isArray(value)) {\n            if (value.length === 0) return argIndex;\n            const conditions = value.map((_, i) => {\n                return `${column} == $${argIndex + i}`;\n            });\n            parts.push(`(${conditions.join(\" OR \")})`);\n            args.push(...value);\n            return argIndex + value.length;\n        } else {\n            parts.push(`${column} == $${argIndex}`);\n            args.push(value);\n            return argIndex + 1;\n        }\n    }\n\n    /**\n     * Same as {@link addFilterCondition}, except a row predating the\n     * property stores null and must match `\"watched\"`.\n     */\n    private addWatchCondition(\n        parts: string[],\n        args: unknown[],\n        value: ContractWatchState | ContractWatchState[] | undefined,\n        argIndex: number,\n    ): number {\n        if (value === undefined) return argIndex;\n\n        const wanted = Array.isArray(value) ? value : [value];\n        if (wanted.length === 0) return argIndex;\n\n        const conditions = wanted.map((_, i) => `watch == $${argIndex + i}`);\n        if (wanted.includes(\"watched\")) conditions.push(\"watch == null\");\n        parts.push(`(${conditions.join(\" OR \")})`);\n        args.push(...wanted);\n        return argIndex + wanted.length;\n    }\n}\n\n// ── Realm object → Domain converter ──────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction contractObjectToDomain(obj: any): Contract {\n    const contract: Contract = {\n        script: obj.script,\n        address: obj.address,\n        type: obj.type,\n        state: obj.state as ContractState,\n        params: JSON.parse(obj.paramsJson),\n        createdAt: obj.createdAt,\n    };\n\n    if (obj.label !== null && obj.label !== undefined) {\n        contract.label = obj.label;\n    }\n    if (obj.metadataJson !== null && obj.metadataJson !== undefined) {\n        contract.metadata = JSON.parse(obj.metadataJson);\n    }\n    if (obj.watch !== null && obj.watch !== undefined) {\n        contract.watch = obj.watch as ContractWatchState;\n    }\n\n    return contract;\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n    ArkIntent,\n    ArkIntentState,\n    assertIntentIdUnique,\n    IntentFilter,\n    IntentRepository,\n    intentMatchesFilter,\n    intentPageBounds,\n    isTerminalIntentState,\n} from \"../intentRepository\";\nimport { RealmLike } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toIntent(o: any): ArkIntent {\n    return {\n        intentTxId: o.intentTxId,\n        intentId: o.intentId ?? undefined,\n        state: o.state as ArkIntentState,\n        validFrom: o.validFrom ?? undefined,\n        validUntil: o.validUntil ?? undefined,\n        createdAt: o.createdAt,\n        updatedAt: o.updatedAt,\n        registerProof: o.registerProof,\n        registerProofMessage: o.registerProofMessage,\n        deleteProof: o.deleteProof,\n        deleteProofMessage: o.deleteProofMessage,\n        batchId: o.batchId ?? undefined,\n        commitmentTransactionId: o.commitmentTransactionId ?? undefined,\n        cancellationReason: o.cancellationReason ?? undefined,\n        partialForfeits: JSON.parse(o.partialForfeitsJson),\n        signerDescriptor: o.signerDescriptor ?? undefined,\n        intentVtxos: JSON.parse(o.intentVtxosJson),\n    };\n}\n\nexport class RealmIntentRepository implements IntentRepository {\n    readonly version = 1 as const;\n    constructor(private readonly realm: RealmLike) {}\n\n    async clear(): Promise<void> {\n        this.realm.write(() => {\n            this.realm.delete(this.realm.objects(\"ArkIntent\"));\n        });\n    }\n\n    async saveIntent(intent: ArkIntent): Promise<void> {\n        this.realm.write(() => {\n            if (intent.intentId != null) {\n                const clashes = [\n                    ...this.realm.objects(\"ArkIntent\").filtered(\"intentId == $0\", intent.intentId),\n                ].map(toIntent);\n                assertIntentIdUnique(intent, clashes);\n            }\n            this.realm.create(\n                \"ArkIntent\",\n                {\n                    intentTxId: intent.intentTxId,\n                    intentId: intent.intentId ?? null,\n                    state: intent.state,\n                    validFrom: intent.validFrom ?? null,\n                    validUntil: intent.validUntil ?? null,\n                    createdAt: intent.createdAt,\n                    updatedAt: Date.now(),\n                    registerProof: intent.registerProof,\n                    registerProofMessage: intent.registerProofMessage,\n                    deleteProof: intent.deleteProof,\n                    deleteProofMessage: intent.deleteProofMessage,\n                    batchId: intent.batchId ?? null,\n                    commitmentTransactionId: intent.commitmentTransactionId ?? null,\n                    cancellationReason: intent.cancellationReason ?? null,\n                    partialForfeitsJson: JSON.stringify(intent.partialForfeits),\n                    signerDescriptor: intent.signerDescriptor ?? null,\n                    intentVtxosJson: JSON.stringify(intent.intentVtxos),\n                },\n                \"modified\",\n            );\n        });\n    }\n\n    async getIntents(filter?: IntentFilter): Promise<ArkIntent[]> {\n        const all = [...this.realm.objects(\"ArkIntent\")]\n            .map(toIntent)\n            .sort((a, b) => a.createdAt - b.createdAt || a.intentTxId.localeCompare(b.intentTxId));\n        const out = filter ? all.filter((i) => intentMatchesFilter(i, filter)) : all;\n        const { skip, end } = intentPageBounds(filter, out.length);\n        return out.slice(skip, end);\n    }\n\n    async getLockedVtxoOutpoints(): Promise<Outpoint[]> {\n        const out: Outpoint[] = [];\n        for (const o of [...this.realm.objects(\"ArkIntent\")].map(toIntent))\n            if (!isTerminalIntentState(o.state)) out.push(...o.intentVtxos);\n        return out;\n    }\n\n    async [Symbol.asyncDispose](): Promise<void> {}\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n    ChainedTxType,\n    mergeChainedTxType,\n    VirtualTx,\n    VirtualTxRepository,\n    VtxoBranch,\n} from \"../virtualTxRepository\";\nimport { RealmLike } from \"./types\";\n\nconst vtxoKey = (o: Outpoint) => `${o.txid}:${o.vout}`;\nconst branchPk = (b: VtxoBranch) => `${b.vtxoTxid}:${b.vtxoVout}:${b.position}`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toTx(o: any): VirtualTx {\n    return {\n        txid: o.txid,\n        psbt: o.psbt ?? null,\n        expiresAt: o.expiresAt ?? null,\n        type: (o.type ?? ChainedTxType.Unspecified) as ChainedTxType,\n    };\n}\n\nexport class RealmVirtualTxRepository implements VirtualTxRepository {\n    readonly version = 1 as const;\n    constructor(private readonly realm: RealmLike) {}\n\n    async clear(): Promise<void> {\n        this.realm.write(() => {\n            this.realm.delete(this.realm.objects(\"ArkVirtualTx\"));\n            this.realm.delete(this.realm.objects(\"ArkVtxoBranch\"));\n        });\n    }\n\n    async upsertVirtualTxs(txs: VirtualTx[]): Promise<void> {\n        this.realm.write(() => {\n            for (const t of txs) {\n                const prev = [\n                    ...this.realm.objects<VirtualTx>(\"ArkVirtualTx\").filtered(\"txid == $0\", t.txid),\n                ].at(0);\n                this.realm.create(\n                    \"ArkVirtualTx\",\n                    {\n                        txid: t.txid,\n                        psbt: t.psbt ?? prev?.psbt ?? null,\n                        expiresAt: t.expiresAt ?? prev?.expiresAt ?? null,\n                        type: mergeChainedTxType(t.type, prev?.type),\n                    },\n                    \"modified\",\n                );\n            }\n        });\n    }\n\n    async getVirtualTx(txid: string): Promise<VirtualTx | null> {\n        const r = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", txid)];\n        return r.length ? toTx(r[0]) : null;\n    }\n\n    async setBranch(vtxo: Outpoint, branch: VtxoBranch[]): Promise<void> {\n        this.realm.write(() => {\n            this.realm.delete(\n                this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n            );\n            for (const b of branch)\n                this.realm.create(\n                    \"ArkVtxoBranch\",\n                    {\n                        pk: branchPk(b),\n                        vtxoKey: `${b.vtxoTxid}:${b.vtxoVout}`,\n                        vtxoTxid: b.vtxoTxid,\n                        vtxoVout: b.vtxoVout,\n                        virtualTxid: b.virtualTxid,\n                        position: b.position,\n                    },\n                    \"modified\",\n                );\n        });\n    }\n\n    async getBranch(vtxo: Outpoint): Promise<VirtualTx[]> {\n        const rows = [\n            ...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        ] as any[];\n        rows.sort((a, b) => a.position - b.position);\n        const out: VirtualTx[] = [];\n        for (const b of rows) {\n            const t = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", b.virtualTxid)];\n            if (t.length) out.push(toTx(t[0]));\n        }\n        return out;\n    }\n\n    async hasBranch(vtxo: Outpoint): Promise<boolean> {\n        return (\n            [...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo))]\n                .length > 0\n        );\n    }\n\n    async pruneForSpentVtxo(vtxo: Outpoint): Promise<void> {\n        this.realm.write(() => {\n            const branchRows = this.realm\n                .objects(\"ArkVtxoBranch\")\n                .filtered(\"vtxoKey == $0\", vtxoKey(vtxo));\n            // Snapshot the referenced txids into plain strings BEFORE deleting.\n            // Real Realm invalidates deleted objects, so reading `virtualTxid`\n            // off them after `delete` throws (\"Accessing object which has been\n            // invalidated\") — which would roll back the whole write() and make\n            // prune a permanent no-op on React Native.\n            const virtualTxids = [\n                ...new Set(\n                    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                    [...branchRows].map((e: any) => e.virtualTxid as string),\n                ),\n            ];\n            this.realm.delete(branchRows);\n            for (const virtualTxid of virtualTxids) {\n                const stillRef = [\n                    ...this.realm\n                        .objects(\"ArkVtxoBranch\")\n                        .filtered(\"virtualTxid == $0\", virtualTxid),\n                ];\n                if (stillRef.length === 0)\n                    this.realm.delete(\n                        this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", virtualTxid),\n                    );\n            }\n        });\n    }\n\n    async [Symbol.asyncDispose](): Promise<void> {}\n}\n","/**\n * Realm object schemas for the Arkade wallet.\n *\n * All schema names are prefixed with \"Ark\" to avoid collisions with\n * other Realm schemas in the consuming application.\n *\n * Since `realm` is a peer dependency (not installed in this package),\n * schemas are defined as plain JS objects conforming to Realm's\n * ObjectSchema shape.\n */\n\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\n\nexport const ArkVtxoSchema = {\n    name: \"ArkVtxo\",\n    primaryKey: \"pk\",\n    properties: {\n        pk: \"string\", // composite: `${txid}:${vout}`\n        address: { type: \"string\", indexed: true },\n        txid: \"string\",\n        vout: \"int\",\n        value: \"int\",\n        tapTree: \"string\", // hex-encoded\n        forfeitCb: \"string\",\n        forfeitS: \"string\",\n        intentCb: \"string\",\n        intentS: \"string\",\n        extraWitnessJson: \"string?\",\n        statusJson: \"string\",\n        virtualStatusJson: \"string\",\n        spentBy: \"string?\",\n        settledBy: \"string?\",\n        arkTxId: \"string?\",\n        createdAt: \"string\", // ISO 8601\n        isUnrolled: \"bool\",\n        isSpent: \"bool?\",\n        assetsJson: \"string?\",\n        // scriptPubKey (hex) locking this VTXO, indexed so contract-scoped\n        // queries can resolve ownership without touching address mapping.\n        // Required as of schema v2; legacy rows are backfilled from `address`\n        // during migration (see `runArkRealmMigrations`).\n        script: { type: \"string\", indexed: true },\n    },\n} as const;\n\nexport const ArkUtxoSchema = {\n    name: \"ArkUtxo\",\n    primaryKey: \"pk\",\n    properties: {\n        pk: \"string\", // composite: `${txid}:${vout}`\n        address: { type: \"string\", indexed: true },\n        txid: \"string\",\n        vout: \"int\",\n        value: \"int\",\n        tapTree: \"string\", // hex-encoded\n        forfeitCb: \"string\",\n        forfeitS: \"string\",\n        intentCb: \"string\",\n        intentS: \"string\",\n        extraWitnessJson: \"string?\",\n        statusJson: \"string\",\n    },\n} as const;\n\nexport const ArkTransactionSchema = {\n    name: \"ArkTransaction\",\n    primaryKey: \"pk\",\n    properties: {\n        pk: \"string\", // composite: `${address}:${boardingTxid}:${commitmentTxid}:${arkTxid}`\n        address: { type: \"string\", indexed: true },\n        boardingTxid: \"string\",\n        commitmentTxid: \"string\",\n        arkTxid: \"string\",\n        type: \"string\",\n        amount: \"int\",\n        settled: \"bool\",\n        createdAt: \"int\",\n        assetsJson: \"string?\",\n    },\n} as const;\n\nexport const ArkWalletStateSchema = {\n    name: \"ArkWalletState\",\n    primaryKey: \"key\",\n    properties: {\n        key: \"string\",\n        lastSyncTime: \"int?\",\n        settingsJson: \"string?\",\n    },\n} as const;\n\nexport const ArkContractSchema = {\n    name: \"ArkContract\",\n    primaryKey: \"script\",\n    properties: {\n        script: \"string\",\n        address: \"string\",\n        type: { type: \"string\", indexed: true },\n        state: { type: \"string\", indexed: true },\n        paramsJson: \"string\",\n        createdAt: \"int\",\n        expiresAt: \"int?\",\n        label: \"string?\",\n        metadataJson: \"string?\",\n        watch: { type: \"string\", optional: true, indexed: true },\n    },\n} as const;\n\nexport const ArkIntentSchema = {\n    name: \"ArkIntent\",\n    primaryKey: \"intentTxId\",\n    properties: {\n        intentTxId: \"string\",\n        intentId: \"string?\",\n        state: { type: \"string\", indexed: true },\n        validFrom: \"int?\",\n        validUntil: \"int?\",\n        createdAt: \"int\",\n        updatedAt: \"int\",\n        registerProof: \"string\",\n        registerProofMessage: \"string\",\n        deleteProof: \"string\",\n        deleteProofMessage: \"string\",\n        batchId: \"string?\",\n        commitmentTransactionId: \"string?\",\n        cancellationReason: \"string?\",\n        partialForfeitsJson: \"string\",\n        signerDescriptor: \"string?\",\n        intentVtxosJson: \"string\",\n    },\n} as const;\n\nexport const ArkVirtualTxSchema = {\n    name: \"ArkVirtualTx\",\n    primaryKey: \"txid\",\n    properties: {\n        txid: \"string\",\n        psbt: \"string?\",\n        expiresAt: \"int?\",\n        type: \"int\",\n    },\n} as const;\n\nexport const ArkVtxoBranchSchema = {\n    name: \"ArkVtxoBranch\",\n    primaryKey: \"pk\",\n    properties: {\n        pk: \"string\", // `${vtxoTxid}:${vtxoVout}:${position}`\n        vtxoKey: { type: \"string\", indexed: true }, // `${vtxoTxid}:${vtxoVout}`\n        vtxoTxid: \"string\",\n        vtxoVout: \"int\",\n        virtualTxid: { type: \"string\", indexed: true },\n        position: \"int\",\n    },\n} as const;\n\n/**\n * All Realm schemas needed by the Arkade wallet repositories.\n * Pass this array to your Realm configuration's `schema` property.\n */\nexport const ArkRealmSchemas = [\n    ArkVtxoSchema,\n    ArkUtxoSchema,\n    ArkTransactionSchema,\n    ArkWalletStateSchema,\n    ArkContractSchema,\n];\n\n/**\n * @experimental Schemas for the inert intent/virtualtx persistence layer.\n *\n * Deliberately kept OUT of {@link ArkRealmSchemas} and {@link\n * ARK_REALM_SCHEMA_VERSION} so upgrading the SDK never migrates an existing\n * consumer's Realm. A consumer opting in must register these schemas and bump\n * their own `schemaVersion` themselves:\n *\n * ```ts\n * schema: [...ArkRealmSchemas, ...ArkExperimentalRealmSchemas],\n * schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION + 1, yourSchemaVersion),\n * ```\n */\nexport const ArkExperimentalRealmSchemas = [\n    ArkIntentSchema,\n    ArkVirtualTxSchema,\n    ArkVtxoBranchSchema,\n];\n\n/**\n * Current Realm schema version for the Arkade wallet.\n *\n * Consumers opening Realm must pass a `schemaVersion` at least this high so\n * legacy databases get migrated; merge it with your own app's version:\n *\n * ```ts\n * await Realm.open({\n *     schema: [...ArkRealmSchemas, ...yourSchemas],\n *     schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION, yourSchemaVersion),\n *     onMigration: (oldRealm, newRealm) => {\n *         runArkRealmMigrations(oldRealm, newRealm);\n *         // your own migrations\n *     },\n * });\n * ```\n *\n * History:\n *   - v1: initial ArkVtxo/ArkUtxo/... schemas, `script` nullable.\n *   - v2: ArkVtxo.script becomes required; NULL values are backfilled from\n *     the owning Ark address during migration.\n *   - v3: ArkContract.watch added (nullable). No data migration: a row\n *     without one reads as `watched`, which is the coverage every\n *     existing contract has today.\n *\n * The intent/virtualtx schemas ({@link ArkExperimentalRealmSchemas}) are NOT\n * counted here: they are experimental and inert, so they never move the\n * advertised version on their own. `runArkRealmMigrations` still carries the\n * intent-schema migration steps (guarded per-schema) for consumers who opt in\n * and bump their own version.\n */\nexport const ARK_REALM_SCHEMA_VERSION = 3;\n\n/**\n * Run every Arkade schema migration applicable to the open Realm.\n *\n * Designed to be composed with the consumer's own migrations inside a single\n * `onMigration` callback. Each migration step does a per-row check so it\n * remains idempotent and independent of the app's global `schemaVersion` —\n * a consumer whose app is already at version 10 can still trigger the\n * Arkade v1→v2 script backfill when the row has never been populated.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function runArkRealmMigrations(oldRealm: any, newRealm: any): void {\n    const newVtxos = newRealm.objects(\"ArkVtxo\");\n    for (let i = 0; i < newVtxos.length; i++) {\n        const newVtxo = newVtxos[i];\n        if (!newVtxo.script) {\n            newVtxo.script = scriptFromArkAddress(newVtxo.address);\n        }\n    }\n\n    // v3 → v4: ArkVirtualTx.hex was renamed to psbt (both hold the same\n    // serialized tx payload). A rename is drop-old + add-new, so the value\n    // would be lost unless we copy it across. Guard on the old schema actually\n    // defining ArkVirtualTx — a v1/v2 realm never had it, and reading objects\n    // of an unknown type throws.\n    const oldHasVirtualTx =\n        Array.isArray(oldRealm?.schema) &&\n        oldRealm.schema.some((s: { name: string }) => s.name === \"ArkVirtualTx\");\n    if (oldHasVirtualTx) {\n        const oldTxs = oldRealm.objects(\"ArkVirtualTx\");\n        const newTxs = newRealm.objects(\"ArkVirtualTx\");\n        for (let i = 0; i < newTxs.length; i++) {\n            if (newTxs[i].psbt == null && oldTxs[i].hex != null) {\n                newTxs[i].psbt = oldTxs[i].hex;\n            }\n        }\n    }\n}\n"]}