@ledgerhq/device-signer-kit-solana 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
  2. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
  3. package/lib/cjs/api/index.js +1 -1
  4. package/lib/cjs/api/index.js.map +3 -3
  5. package/lib/cjs/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js +1 -1
  6. package/lib/cjs/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js.map +2 -2
  7. package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.test.js +1 -1
  8. package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.test.js.map +2 -2
  9. package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.js +1 -1
  10. package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.js.map +2 -2
  11. package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.test.js +1 -1
  12. package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.test.js.map +2 -2
  13. package/lib/cjs/internal/app-binder/clear-sign/requirements/records.js +1 -1
  14. package/lib/cjs/internal/app-binder/clear-sign/requirements/records.js.map +3 -3
  15. package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js +1 -1
  16. package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js.map +2 -2
  17. package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js +1 -1
  18. package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js.map +2 -2
  19. package/lib/cjs/internal/app-binder/command/ProvideAltResolutionCommand.js.map +1 -1
  20. package/lib/cjs/internal/app-binder/command/ProvideEnumVariantCommand.js.map +1 -1
  21. package/lib/cjs/internal/app-binder/command/ProvideInstructionInfoCommand.js.map +2 -2
  22. package/lib/cjs/internal/app-binder/command/ProvideInstructionSubstructureCommand.js.map +1 -1
  23. package/lib/cjs/internal/app-binder/command/ProvideTokenAccountStateCommand.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +2 -0
  25. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +7 -0
  26. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +2 -0
  27. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +7 -0
  28. package/lib/cjs/internal/app-binder/command/utils/Errors.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/utils/Errors.js.map +3 -3
  30. package/lib/cjs/internal/app-binder/command/utils/apduChunking.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/utils/apduChunking.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/command/utils/apduChunking.test.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/utils/apduChunking.test.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  35. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +2 -2
  36. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js +2 -0
  37. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js.map +7 -0
  38. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js +2 -0
  39. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js.map +7 -0
  40. package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.js +1 -1
  41. package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js +1 -1
  43. package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js.map +2 -2
  44. package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.js +1 -1
  45. package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js.map +2 -2
  48. package/lib/cjs/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.js +1 -1
  50. package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.js.map +2 -2
  51. package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js +1 -1
  52. package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.js +1 -1
  54. package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js +1 -1
  56. package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js.map +2 -2
  57. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js +1 -1
  58. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js.map +3 -3
  59. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js +1 -1
  60. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +3 -3
  61. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js +1 -1
  62. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js.map +3 -3
  63. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js +1 -1
  64. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js.map +2 -2
  65. package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.js +1 -1
  66. package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.js.map +3 -3
  67. package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js +1 -1
  68. package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js.map +3 -3
  69. package/lib/cjs/package.json +2 -2
  70. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
  71. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
  72. package/lib/esm/api/index.js +1 -1
  73. package/lib/esm/api/index.js.map +3 -3
  74. package/lib/esm/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js +1 -1
  75. package/lib/esm/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js.map +2 -2
  76. package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.test.js +1 -1
  77. package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.test.js.map +2 -2
  78. package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.js +1 -1
  79. package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.js.map +2 -2
  80. package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.test.js +1 -1
  81. package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.test.js.map +2 -2
  82. package/lib/esm/internal/app-binder/clear-sign/requirements/records.js +1 -1
  83. package/lib/esm/internal/app-binder/clear-sign/requirements/records.js.map +3 -3
  84. package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js +1 -1
  85. package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js.map +3 -3
  86. package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js +1 -1
  87. package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js.map +3 -3
  88. package/lib/esm/internal/app-binder/command/ProvideAltResolutionCommand.js.map +1 -1
  89. package/lib/esm/internal/app-binder/command/ProvideEnumVariantCommand.js.map +1 -1
  90. package/lib/esm/internal/app-binder/command/ProvideInstructionInfoCommand.js.map +2 -2
  91. package/lib/esm/internal/app-binder/command/ProvideInstructionSubstructureCommand.js.map +1 -1
  92. package/lib/esm/internal/app-binder/command/ProvideTokenAccountStateCommand.js.map +2 -2
  93. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +2 -0
  94. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +7 -0
  95. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +2 -0
  96. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +7 -0
  97. package/lib/esm/internal/app-binder/command/utils/Errors.js +1 -1
  98. package/lib/esm/internal/app-binder/command/utils/Errors.js.map +3 -3
  99. package/lib/esm/internal/app-binder/command/utils/apduChunking.js +1 -1
  100. package/lib/esm/internal/app-binder/command/utils/apduChunking.js.map +3 -3
  101. package/lib/esm/internal/app-binder/command/utils/apduChunking.test.js +1 -1
  102. package/lib/esm/internal/app-binder/command/utils/apduChunking.test.js.map +3 -3
  103. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  104. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +2 -2
  105. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js +2 -0
  106. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js.map +7 -0
  107. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js +2 -0
  108. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js.map +7 -0
  109. package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.js +1 -1
  110. package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.js.map +3 -3
  111. package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js +1 -1
  112. package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js.map +2 -2
  113. package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.js +1 -1
  114. package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.js.map +3 -3
  115. package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js +1 -1
  116. package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js.map +2 -2
  117. package/lib/esm/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.js.map +2 -2
  118. package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.js +1 -1
  119. package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.js.map +3 -3
  120. package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js +1 -1
  121. package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js.map +2 -2
  122. package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.js +1 -1
  123. package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.js.map +3 -3
  124. package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js +1 -1
  125. package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js.map +2 -2
  126. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js +1 -1
  127. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js.map +3 -3
  128. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js +1 -1
  129. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +3 -3
  130. package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js +1 -1
  131. package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js.map +3 -3
  132. package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js +1 -1
  133. package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js.map +2 -2
  134. package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.js +1 -1
  135. package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.js.map +3 -3
  136. package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js +1 -1
  137. package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js.map +3 -3
  138. package/lib/esm/package.json +2 -2
  139. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts +2 -0
  140. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts.map +1 -0
  141. package/lib/types/api/index.d.ts +3 -1
  142. package/lib/types/api/index.d.ts.map +1 -1
  143. package/lib/types/internal/app-binder/clear-sign/requirements/fromCal.d.ts.map +1 -1
  144. package/lib/types/internal/app-binder/clear-sign/requirements/records.d.ts +7 -0
  145. package/lib/types/internal/app-binder/clear-sign/requirements/records.d.ts.map +1 -1
  146. package/lib/types/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.d.ts +6 -1
  147. package/lib/types/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.d.ts.map +1 -1
  148. package/lib/types/internal/app-binder/command/ProvideAltResolutionCommand.d.ts +2 -2
  149. package/lib/types/internal/app-binder/command/ProvideEnumVariantCommand.d.ts +2 -2
  150. package/lib/types/internal/app-binder/command/ProvideInstructionInfoCommand.d.ts +3 -4
  151. package/lib/types/internal/app-binder/command/ProvideInstructionInfoCommand.d.ts.map +1 -1
  152. package/lib/types/internal/app-binder/command/ProvideInstructionSubstructureCommand.d.ts +3 -3
  153. package/lib/types/internal/app-binder/command/ProvideTokenAccountStateCommand.d.ts +1 -2
  154. package/lib/types/internal/app-binder/command/ProvideTokenAccountStateCommand.d.ts.map +1 -1
  155. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +32 -0
  156. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -0
  157. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.test.d.ts +2 -0
  158. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.test.d.ts.map +1 -0
  159. package/lib/types/internal/app-binder/command/utils/Errors.d.ts +0 -10
  160. package/lib/types/internal/app-binder/command/utils/Errors.d.ts.map +1 -1
  161. package/lib/types/internal/app-binder/command/utils/apduChunking.d.ts +0 -14
  162. package/lib/types/internal/app-binder/command/utils/apduChunking.d.ts.map +1 -1
  163. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
  164. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.d.ts +9 -0
  165. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.d.ts.map +1 -0
  166. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.d.ts +2 -0
  167. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.d.ts.map +1 -0
  168. package/lib/types/internal/app-binder/task/ProvideGenericClearSignContextTask.d.ts +7 -0
  169. package/lib/types/internal/app-binder/task/ProvideGenericClearSignContextTask.d.ts.map +1 -1
  170. package/lib/types/internal/app-binder/task/context-providers/provideAltResolutionContext.d.ts.map +1 -1
  171. package/lib/types/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.d.ts +2 -3
  172. package/lib/types/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.d.ts.map +1 -1
  173. package/lib/types/internal/app-binder/task/context-providers/provideEnumVariantContext.d.ts.map +1 -1
  174. package/lib/types/internal/app-binder/task/context-providers/provideInstructionInfoContext.d.ts.map +1 -1
  175. package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.d.ts.map +1 -1
  176. package/lib/types/internal/app-binder/task/context-providers/provideTokenAccountStateContext.d.ts.map +1 -1
  177. package/lib/types/internal/app-binder/task/context-providers/provideTrustedNameContext.d.ts +6 -4
  178. package/lib/types/internal/app-binder/task/context-providers/provideTrustedNameContext.d.ts.map +1 -1
  179. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  180. package/package.json +5 -5
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var m=(c,o)=>{for(var n in o)r(c,n,{get:o[n],enumerable:!0})},p=(c,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of f(o))!g.call(c,i)&&i!==n&&r(c,i,{get:()=>o[i],enumerable:!(t=e(o,i))||t.enumerable});return c};var s=c=>p(r({},"__esModule",{value:!0}),c);var v={};m(v,{SignTransactionDeviceActionFactory:()=>a.SignTransactionDeviceActionFactory});module.exports=s(v);var a=require("../../internal/app-binder/device-action/SignTransactionDeviceActionFactory");0&&(module.exports={SignTransactionDeviceActionFactory});
2
+ //# sourceMappingURL=SignTransactionDeviceActionFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionFactory.ts"],
4
+ "sourcesContent": ["export { SignTransactionDeviceActionFactory } from \"@internal/app-binder/device-action/SignTransactionDeviceActionFactory\";\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8FAAAE,EAAAF,GAAA,IAAAG,EAAmD",
6
+ "names": ["SignTransactionDeviceActionFactory_exports", "__export", "__toCommonJS", "import_SignTransactionDeviceActionFactory"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var t in e)a(o,t,{get:e[t],enumerable:!0})},S=(o,e,t,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!c.call(o,r)&&r!==t&&a(o,r,{get:()=>e[r],enumerable:!(p=g(e,r))||p.enumerable});return o};var y=o=>S(a({},"__esModule",{value:!0}),o);var f={};l(f,{GetAddressDeviceActionFactory:()=>i.GetAddressDeviceActionFactory,GetPubKeyCommand:()=>d.GetPubKeyCommand,SignMessageDeviceActionFactory:()=>s.SignMessageDeviceActionFactory,SignMessageVersion:()=>m.SignMessageVersion,SignerSolanaBuilder:()=>A.SignerSolanaBuilder,SolanaAppCommandError:()=>n.SolanaAppCommandError,isSolanaAppError:()=>n.isSolanaAppError});module.exports=y(f);var i=require("./app-binder/GetAddressDeviceActionFactory"),s=require("./app-binder/SignMessageDeviceActionFactory"),m=require("./model/MessageOptions"),n=require("./model/SolanaAppErrors"),A=require("./SignerSolanaBuilder"),d=require("../internal/app-binder/command/GetPubKeyCommand");0&&(module.exports={GetAddressDeviceActionFactory,GetPubKeyCommand,SignMessageDeviceActionFactory,SignMessageVersion,SignerSolanaBuilder,SolanaAppCommandError,isSolanaAppError});
1
+ "use strict";var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},D=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of u(e))!l.call(t,o)&&o!==r&&a(t,o,{get:()=>e[o],enumerable:!(i=y(e,o))||i.enumerable});return t};var T=t=>D(a({},"__esModule",{value:!0}),t);var x={};f(x,{GetAddressDeviceActionFactory:()=>p.GetAddressDeviceActionFactory,GetPubKeyCommand:()=>S.GetPubKeyCommand,SignMessageDeviceActionFactory:()=>s.SignMessageDeviceActionFactory,SignMessageVersion:()=>m.SignMessageVersion,SignTransactionDeviceAction:()=>d.SignTransactionDeviceAction,SignTransactionDeviceActionFactory:()=>A.SignTransactionDeviceActionFactory,SignerSolanaBuilder:()=>c.SignerSolanaBuilder,SolanaAppCommandError:()=>n.SolanaAppCommandError,isSolanaAppError:()=>n.isSolanaAppError,signTransactionDAStateSteps:()=>g.signTransactionDAStateSteps});module.exports=T(x);var p=require("./app-binder/GetAddressDeviceActionFactory"),s=require("./app-binder/SignMessageDeviceActionFactory"),A=require("./app-binder/SignTransactionDeviceActionFactory"),g=require("./app-binder/SignTransactionDeviceActionTypes"),m=require("./model/MessageOptions"),n=require("./model/SolanaAppErrors"),c=require("./SignerSolanaBuilder"),S=require("../internal/app-binder/command/GetPubKeyCommand"),d=require("../internal/app-binder/device-action/SignTransactionDeviceAction");0&&(module.exports={GetAddressDeviceActionFactory,GetPubKeyCommand,SignMessageDeviceActionFactory,SignMessageVersion,SignTransactionDeviceAction,SignTransactionDeviceActionFactory,SignerSolanaBuilder,SolanaAppCommandError,isSolanaAppError,signTransactionDAStateSteps});
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/index.ts"],
4
- "sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport { SignMessageDeviceActionFactory } from \"@api/app-binder/SignMessageDeviceActionFactory\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n SignMessageTaskError,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport type {\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAOutput,\n SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport type { MessageOptions } from \"@api/model/MessageOptions\";\nexport { SignMessageVersion } from \"@api/model/MessageOptions\";\nexport type { Signature } from \"@api/model/Signature\";\nexport {\n isSolanaAppError,\n SolanaAppCommandError,\n} from \"@api/model/SolanaAppErrors\";\nexport type { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nexport type { Transaction } from \"@api/model/Transaction\";\nexport type {\n TransactionResolutionContext,\n UserInputType,\n} from \"@api/model/TransactionResolutionContext\";\nexport type { SignerSolana } from \"@api/SignerSolana\";\nexport { SignerSolanaBuilder } from \"@api/SignerSolanaBuilder\";\nexport {\n GetPubKeyCommand,\n type GetPubKeyCommandArgs,\n type GetPubKeyCommandResponse,\n} from \"@internal/app-binder/command/GetPubKeyCommand\";\nexport type { SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oXAAAE,EAAAF,GAAA,IAAAG,EAA8C,yDAY9CC,EAA+C,0DAc/CC,EAAmC,qCAEnCC,EAGO,sCAQPC,EAAoC,oCACpCC,EAIO",
6
- "names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignMessageDeviceActionFactory", "import_MessageOptions", "import_SolanaAppErrors", "import_SignerSolanaBuilder", "import_GetPubKeyCommand"]
4
+ "sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport { SignMessageDeviceActionFactory } from \"@api/app-binder/SignMessageDeviceActionFactory\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n SignMessageTaskError,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport { SignTransactionDeviceActionFactory } from \"@api/app-binder/SignTransactionDeviceActionFactory\";\nexport {\n type ClearSignMode,\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n type SignTransactionDAStateStep,\n signTransactionDAStateSteps,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport type { MessageOptions } from \"@api/model/MessageOptions\";\nexport { SignMessageVersion } from \"@api/model/MessageOptions\";\nexport type { Signature } from \"@api/model/Signature\";\nexport {\n isSolanaAppError,\n SolanaAppCommandError,\n} from \"@api/model/SolanaAppErrors\";\nexport type { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nexport type { Transaction } from \"@api/model/Transaction\";\nexport type {\n TransactionResolutionContext,\n UserInputType,\n} from \"@api/model/TransactionResolutionContext\";\nexport type { SignerSolana } from \"@api/SignerSolana\";\nexport { SignerSolanaBuilder } from \"@api/SignerSolanaBuilder\";\nexport {\n GetPubKeyCommand,\n type GetPubKeyCommandArgs,\n type GetPubKeyCommandResponse,\n} from \"@internal/app-binder/command/GetPubKeyCommand\";\nexport type { SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nexport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransactionDeviceAction\";\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4jBAAAE,EAAAF,GAAA,IAAAG,EAA8C,yDAY9CC,EAA+C,0DAO/CC,EAAmD,8DACnDC,EASO,4DAEPC,EAAmC,qCAEnCC,EAGO,sCAQPC,EAAoC,oCACpCC,EAIO,yDAEPC,EAA4C",
6
+ "names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignMessageDeviceActionFactory", "import_SignTransactionDeviceActionFactory", "import_SignTransactionDeviceActionTypes", "import_MessageOptions", "import_SolanaAppErrors", "import_SignerSolanaBuilder", "import_GetPubKeyCommand", "import_SignTransactionDeviceAction"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var r=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var s=(e,t)=>{for(var o in t)r(e,o,{get:t[o],enumerable:!0})},y=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of i(t))!p.call(e,n)&&n!==o&&r(e,n,{get:()=>t[n],enumerable:!(a=c(t,n))||a.enumerable});return e};var d=e=>y(r({},"__esModule",{value:!0}),e);var D={};s(D,{accountPathValue:()=>A,accountReset:()=>V,argumentPathValue:()=>u,bytes:()=>m,constantValue:()=>x,descriptor:()=>I,idlDescriptor:()=>l,mintAssociation:()=>b,tokenAmountDisplayField:()=>P,tokenValue:()=>f,trustedNameDisplayField:()=>_,valueFlowPort:()=>T});module.exports=d(D);function m(...e){return Uint8Array.from(e)}function C(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function x(e){return{source:"CONSTANT",data:C(e)}}function A(e){return{source:"ACCOUNT_PATH",account_index:e}}function u(e=[]){return{source:"ARGUMENT_PATH",path:{steps:e}}}function f(e,t={}){return{kind:e,value:t.value,account_index:t.accountIndex}}function T(e){return{account_indices:e.accountIndices??(e.accountIndex!==void 0?[e.accountIndex]:[]),optional_account_strategy:e.optionalAccountStrategy,token_value:e.tokenValue}}function V(e){return{account_index:e.accountIndex,require_pre_balance_zero:e.requirePreBalanceZero}}function _(e){return{name:"Name",param:{type:"TRUSTED_NAME",value:e}}}function P(e){return{name:"Amount",param:{type:"TOKEN_AMOUNT",value:u([0]),token:e}}}function l(e){return{type_pool:e.typePool??[{index:0,kind:"STRUCT",refs:[]}],root_type:e.rootType??0}}function I(e={}){return{discriminator:"00",idlDescriptor:l({}),mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[],enumCache:new Map,...e}}function b(e,t){return{account_index:e,mint_index:t}}0&&(module.exports={accountPathValue,accountReset,argumentPathValue,bytes,constantValue,descriptor,idlDescriptor,mintAssociation,tokenAmountDisplayField,tokenValue,trustedNameDisplayField,valueFlowPort});
1
+ "use strict";var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var y=(e,t)=>{for(var o in t)r(e,o,{get:t[o],enumerable:!0})},d=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of p(t))!s.call(e,n)&&n!==o&&r(e,n,{get:()=>t[n],enumerable:!(a=i(t,n))||a.enumerable});return e};var m=e=>d(r({},"__esModule",{value:!0}),e);var D={};y(D,{accountPathValue:()=>T,accountReset:()=>f,argumentPathValue:()=>u,bytes:()=>C,constantValue:()=>A,descriptor:()=>I,idlDescriptor:()=>c,mintAssociation:()=>b,tokenAmountDisplayField:()=>P,tokenValue:()=>l,trustedNameDisplayField:()=>_,valueFlowPort:()=>V});module.exports=m(D);function C(...e){return Uint8Array.from(e)}function x(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function A(e){return{source:"CONSTANT",data:x(e)}}function T(e){return{source:"ACCOUNT_PATH",account_index:e}}function u(e=[]){return{source:"ARGUMENT_PATH",path:{steps:e}}}function l(e,t={}){return{kind:e,value:t.value,account_index:t.accountIndex}}function V(e){return{account_indices:e.accountIndices??(e.accountIndex!==void 0?[e.accountIndex]:[]),optional_account_strategy:e.optionalAccountStrategy,token_value:e.tokenValue??l("NATIVE")}}function f(e){return{account_index:e.accountIndex,require_pre_balance_zero:e.requirePreBalanceZero}}function _(e){return{name:"Name",param:{type:"TRUSTED_NAME",value:e}}}function P(e){return{name:"Amount",param:{type:"TOKEN_AMOUNT",value:u([0]),token:e}}}function c(e){return{type_pool:e.typePool??[{index:0,kind:"STRUCT",refs:[]}],root_type:e.rootType??0}}function I(e={}){return{discriminator:"00",idlDescriptor:c({}),mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[],enumCache:new Map,...e}}function b(e,t){return{account_index:e,mint_index:t}}0&&(module.exports={accountPathValue,accountReset,argumentPathValue,bytes,constantValue,descriptor,idlDescriptor,mintAssociation,tokenAmountDisplayField,tokenValue,trustedNameDisplayField,valueFlowPort});
2
2
  //# sourceMappingURL=calBuilders.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.ts"],
4
- "sourcesContent": ["/**\n * Builders for the decoded CAL JSON the requirement builder consumes.\n */\n\nimport { type CalTypePoolEntry } from \"@internal/app-binder/clear-sign/idl-type-pool\";\nimport {\n type CalAccountReset,\n type CalDisplayField,\n type CalIdlDescriptor,\n type CalMintAssociation,\n type CalTokenValue,\n type CalValue,\n type CalValueFlowPort,\n} from \"@internal/app-binder/clear-sign/requirements/calTypes\";\nimport { type InstructionDescriptor } from \"@internal/app-binder/clear-sign/requirements/model\";\n\nexport function bytes(...values: number[]): Uint8Array {\n return Uint8Array.from(values);\n}\n\nfunction toHex(value: Uint8Array): string {\n return Array.from(value, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n// ---- VALUE -----------------------------------------------------------------\n\nexport function constantValue(payload: Uint8Array): CalValue {\n return { source: \"CONSTANT\", data: toHex(payload) };\n}\n\nexport function accountPathValue(accountIndex: number): CalValue {\n return { source: \"ACCOUNT_PATH\", account_index: accountIndex };\n}\n\nexport function argumentPathValue(steps: number[] = []): CalValue {\n return { source: \"ARGUMENT_PATH\", path: { steps } };\n}\n\n// ---- substructures ---------------------------------------------------------\n\nexport function tokenValue(\n kind: CalTokenValue[\"kind\"],\n opts: { value?: CalValue; accountIndex?: number } = {},\n): CalTokenValue {\n return { kind, value: opts.value, account_index: opts.accountIndex };\n}\n\nexport function valueFlowPort(opts: {\n accountIndex?: number;\n accountIndices?: number[];\n optionalAccountStrategy?: CalValueFlowPort[\"optional_account_strategy\"];\n tokenValue?: CalTokenValue;\n}): CalValueFlowPort {\n return {\n account_indices:\n opts.accountIndices ??\n (opts.accountIndex !== undefined ? [opts.accountIndex] : []),\n optional_account_strategy: opts.optionalAccountStrategy,\n token_value: opts.tokenValue,\n };\n}\n\nexport function accountReset(opts: {\n accountIndex: number;\n requirePreBalanceZero?: boolean;\n}): CalAccountReset {\n return {\n account_index: opts.accountIndex,\n require_pre_balance_zero: opts.requirePreBalanceZero,\n };\n}\n\nexport function trustedNameDisplayField(value: CalValue): CalDisplayField {\n return { name: \"Name\", param: { type: \"TRUSTED_NAME\", value } };\n}\n\nexport function tokenAmountDisplayField(token: CalValue): CalDisplayField {\n return {\n name: \"Amount\",\n param: { type: \"TOKEN_AMOUNT\", value: argumentPathValue([0]), token },\n };\n}\n\n// ---- descriptor ------------------------------------------------------------\n\nexport function idlDescriptor(opts: {\n typePool?: CalTypePoolEntry[];\n rootType?: number;\n}): CalIdlDescriptor {\n return {\n type_pool: opts.typePool ?? [{ index: 0, kind: \"STRUCT\", refs: [] }],\n root_type: opts.rootType ?? 0,\n };\n}\n\nexport function descriptor(\n overrides: Partial<InstructionDescriptor> = {},\n): InstructionDescriptor {\n return {\n discriminator: \"00\",\n idlDescriptor: idlDescriptor({}),\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n enumCache: new Map(),\n ...overrides,\n };\n}\n\nexport function mintAssociation(\n accountIndex: number,\n mintIndex: number,\n): CalMintAssociation {\n return { account_index: accountIndex, mint_index: mintIndex };\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,iBAAAC,EAAA,sBAAAC,EAAA,UAAAC,EAAA,kBAAAC,EAAA,eAAAC,EAAA,kBAAAC,EAAA,oBAAAC,EAAA,4BAAAC,EAAA,eAAAC,EAAA,4BAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAd,GAgBO,SAASK,KAASU,EAA8B,CACrD,OAAO,WAAW,KAAKA,CAAM,CAC/B,CAEA,SAASC,EAAMC,EAA2B,CACxC,OAAO,MAAM,KAAKA,EAAQC,GAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,EAAE,CAC1E,CAIO,SAASZ,EAAca,EAA+B,CAC3D,MAAO,CAAE,OAAQ,WAAY,KAAMH,EAAMG,CAAO,CAAE,CACpD,CAEO,SAASjB,EAAiBkB,EAAgC,CAC/D,MAAO,CAAE,OAAQ,eAAgB,cAAeA,CAAa,CAC/D,CAEO,SAAShB,EAAkBiB,EAAkB,CAAC,EAAa,CAChE,MAAO,CAAE,OAAQ,gBAAiB,KAAM,CAAE,MAAAA,CAAM,CAAE,CACpD,CAIO,SAASV,EACdW,EACAC,EAAoD,CAAC,EACtC,CACf,MAAO,CAAE,KAAAD,EAAM,MAAOC,EAAK,MAAO,cAAeA,EAAK,YAAa,CACrE,CAEO,SAASV,EAAcU,EAKT,CACnB,MAAO,CACL,gBACEA,EAAK,iBACJA,EAAK,eAAiB,OAAY,CAACA,EAAK,YAAY,EAAI,CAAC,GAC5D,0BAA2BA,EAAK,wBAChC,YAAaA,EAAK,UACpB,CACF,CAEO,SAASpB,EAAaoB,EAGT,CAClB,MAAO,CACL,cAAeA,EAAK,aACpB,yBAA0BA,EAAK,qBACjC,CACF,CAEO,SAASX,EAAwBK,EAAkC,CACxE,MAAO,CAAE,KAAM,OAAQ,MAAO,CAAE,KAAM,eAAgB,MAAAA,CAAM,CAAE,CAChE,CAEO,SAASP,EAAwBc,EAAkC,CACxE,MAAO,CACL,KAAM,SACN,MAAO,CAAE,KAAM,eAAgB,MAAOpB,EAAkB,CAAC,CAAC,CAAC,EAAG,MAAAoB,CAAM,CACtE,CACF,CAIO,SAAShB,EAAce,EAGT,CACnB,MAAO,CACL,UAAWA,EAAK,UAAY,CAAC,CAAE,MAAO,EAAG,KAAM,SAAU,KAAM,CAAC,CAAE,CAAC,EACnE,UAAWA,EAAK,UAAY,CAC9B,CACF,CAEO,SAAShB,EACdkB,EAA4C,CAAC,EACtB,CACvB,MAAO,CACL,cAAe,KACf,cAAejB,EAAc,CAAC,CAAC,EAC/B,iBAAkB,CAAC,EACnB,eAAgB,CAAC,EACjB,cAAe,CAAC,EAChB,cAAe,CAAC,EAChB,UAAW,IAAI,IACf,GAAGiB,CACL,CACF,CAEO,SAAShB,EACdW,EACAM,EACoB,CACpB,MAAO,CAAE,cAAeN,EAAc,WAAYM,CAAU,CAC9D",
4
+ "sourcesContent": ["/**\n * Builders for the decoded CAL JSON the requirement builder consumes.\n */\n\nimport { type CalTypePoolEntry } from \"@internal/app-binder/clear-sign/idl-type-pool\";\nimport {\n type CalAccountReset,\n type CalDisplayField,\n type CalIdlDescriptor,\n type CalMintAssociation,\n type CalTokenValue,\n type CalValue,\n type CalValueFlowPort,\n} from \"@internal/app-binder/clear-sign/requirements/calTypes\";\nimport { type InstructionDescriptor } from \"@internal/app-binder/clear-sign/requirements/model\";\n\nexport function bytes(...values: number[]): Uint8Array {\n return Uint8Array.from(values);\n}\n\nfunction toHex(value: Uint8Array): string {\n return Array.from(value, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n// ---- VALUE -----------------------------------------------------------------\n\nexport function constantValue(payload: Uint8Array): CalValue {\n return { source: \"CONSTANT\", data: toHex(payload) };\n}\n\nexport function accountPathValue(accountIndex: number): CalValue {\n return { source: \"ACCOUNT_PATH\", account_index: accountIndex };\n}\n\nexport function argumentPathValue(steps: number[] = []): CalValue {\n return { source: \"ARGUMENT_PATH\", path: { steps } };\n}\n\n// ---- substructures ---------------------------------------------------------\n\nexport function tokenValue(\n kind: CalTokenValue[\"kind\"],\n opts: { value?: CalValue; accountIndex?: number } = {},\n): CalTokenValue {\n return { kind, value: opts.value, account_index: opts.accountIndex };\n}\n\nexport function valueFlowPort(opts: {\n accountIndex?: number;\n accountIndices?: number[];\n optionalAccountStrategy?: CalValueFlowPort[\"optional_account_strategy\"];\n tokenValue?: CalTokenValue;\n}): CalValueFlowPort {\n return {\n account_indices:\n opts.accountIndices ??\n (opts.accountIndex !== undefined ? [opts.accountIndex] : []),\n optional_account_strategy: opts.optionalAccountStrategy,\n token_value: opts.tokenValue ?? tokenValue(\"NATIVE\"),\n };\n}\n\nexport function accountReset(opts: {\n accountIndex: number;\n requirePreBalanceZero?: boolean;\n}): CalAccountReset {\n return {\n account_index: opts.accountIndex,\n require_pre_balance_zero: opts.requirePreBalanceZero,\n };\n}\n\nexport function trustedNameDisplayField(value: CalValue): CalDisplayField {\n return { name: \"Name\", param: { type: \"TRUSTED_NAME\", value } };\n}\n\nexport function tokenAmountDisplayField(token: CalValue): CalDisplayField {\n return {\n name: \"Amount\",\n param: { type: \"TOKEN_AMOUNT\", value: argumentPathValue([0]), token },\n };\n}\n\n// ---- descriptor ------------------------------------------------------------\n\nexport function idlDescriptor(opts: {\n typePool?: CalTypePoolEntry[];\n rootType?: number;\n}): CalIdlDescriptor {\n return {\n type_pool: opts.typePool ?? [{ index: 0, kind: \"STRUCT\", refs: [] }],\n root_type: opts.rootType ?? 0,\n };\n}\n\nexport function descriptor(\n overrides: Partial<InstructionDescriptor> = {},\n): InstructionDescriptor {\n return {\n discriminator: \"00\",\n idlDescriptor: idlDescriptor({}),\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n enumCache: new Map(),\n ...overrides,\n };\n}\n\nexport function mintAssociation(\n accountIndex: number,\n mintIndex: number,\n): CalMintAssociation {\n return { account_index: accountIndex, mint_index: mintIndex };\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,iBAAAC,EAAA,sBAAAC,EAAA,UAAAC,EAAA,kBAAAC,EAAA,eAAAC,EAAA,kBAAAC,EAAA,oBAAAC,EAAA,4BAAAC,EAAA,eAAAC,EAAA,4BAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAd,GAgBO,SAASK,KAASU,EAA8B,CACrD,OAAO,WAAW,KAAKA,CAAM,CAC/B,CAEA,SAASC,EAAMC,EAA2B,CACxC,OAAO,MAAM,KAAKA,EAAQC,GAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,EAAE,CAC1E,CAIO,SAASZ,EAAca,EAA+B,CAC3D,MAAO,CAAE,OAAQ,WAAY,KAAMH,EAAMG,CAAO,CAAE,CACpD,CAEO,SAASjB,EAAiBkB,EAAgC,CAC/D,MAAO,CAAE,OAAQ,eAAgB,cAAeA,CAAa,CAC/D,CAEO,SAAShB,EAAkBiB,EAAkB,CAAC,EAAa,CAChE,MAAO,CAAE,OAAQ,gBAAiB,KAAM,CAAE,MAAAA,CAAM,CAAE,CACpD,CAIO,SAASV,EACdW,EACAC,EAAoD,CAAC,EACtC,CACf,MAAO,CAAE,KAAAD,EAAM,MAAOC,EAAK,MAAO,cAAeA,EAAK,YAAa,CACrE,CAEO,SAASV,EAAcU,EAKT,CACnB,MAAO,CACL,gBACEA,EAAK,iBACJA,EAAK,eAAiB,OAAY,CAACA,EAAK,YAAY,EAAI,CAAC,GAC5D,0BAA2BA,EAAK,wBAChC,YAAaA,EAAK,YAAcZ,EAAW,QAAQ,CACrD,CACF,CAEO,SAASR,EAAaoB,EAGT,CAClB,MAAO,CACL,cAAeA,EAAK,aACpB,yBAA0BA,EAAK,qBACjC,CACF,CAEO,SAASX,EAAwBK,EAAkC,CACxE,MAAO,CAAE,KAAM,OAAQ,MAAO,CAAE,KAAM,eAAgB,MAAAA,CAAM,CAAE,CAChE,CAEO,SAASP,EAAwBc,EAAkC,CACxE,MAAO,CACL,KAAM,SACN,MAAO,CAAE,KAAM,eAAgB,MAAOpB,EAAkB,CAAC,CAAC,CAAC,EAAG,MAAAoB,CAAM,CACtE,CACF,CAIO,SAAShB,EAAce,EAGT,CACnB,MAAO,CACL,UAAWA,EAAK,UAAY,CAAC,CAAE,MAAO,EAAG,KAAM,SAAU,KAAM,CAAC,CAAE,CAAC,EACnE,UAAWA,EAAK,UAAY,CAC9B,CACF,CAEO,SAAShB,EACdkB,EAA4C,CAAC,EACtB,CACvB,MAAO,CACL,cAAe,KACf,cAAejB,EAAc,CAAC,CAAC,EAC/B,iBAAkB,CAAC,EACnB,eAAgB,CAAC,EACjB,cAAe,CAAC,EAChB,cAAe,CAAC,EAChB,UAAW,IAAI,IACf,GAAGiB,CACL,CACF,CAEO,SAAShB,EACdW,EACAM,EACoB,CACpB,MAAO,CAAE,cAAeN,EAAc,WAAYM,CAAU,CAC9D",
6
6
  "names": ["calBuilders_exports", "__export", "accountPathValue", "accountReset", "argumentPathValue", "bytes", "constantValue", "descriptor", "idlDescriptor", "mintAssociation", "tokenAmountDisplayField", "tokenValue", "trustedNameDisplayField", "valueFlowPort", "__toCommonJS", "values", "toHex", "value", "b", "payload", "accountIndex", "steps", "kind", "opts", "token", "overrides", "mintIndex"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=require("purify-ts"),u=require("../../../app-binder/services/bs58Encoder"),e=require("./__tests__/fixtures/calBuilders"),d=require("./buildRequirements"),a=require("./records"),m=require("./RequirementsError");const I=new Map,E=()=>(0,p.Right)([]);function o(t,n){return{address:t,altRef:n}}function s(t,n={}){const i=["DIRECT","RESOLVE","NULL","NATIVE"][t];return(0,e.valueFlowPort)({accountIndex:n.accountIndex??0,tokenValue:(0,e.tokenValue)(i,{accountIndex:n.tokenAccountIndex,value:n.value})})}function r(t){return{instruction:{programId:t.programId??"Prog",accounts:t.accounts,data:t.data??new Uint8Array},descriptor:{discriminator:t.discriminator??"00",idlDescriptor:(0,e.idlDescriptor)({}),mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[],enumCache:I,...t.descriptor}}}function c(t,n=E){return(0,d.buildRequirements)(t,{selectEnumVariants:n}).unsafeCoerce()}describe("buildRequirements",()=>{it("System transfer: only INSTRUCTION_INFO, native port pulls no token info",()=>{const t=c([r({programId:"11111111111111111111111111111111",discriminator:"02000000",accounts:[o("from"),o("to")],descriptor:{valueFlowPorts:[s(a.TokenKind.NATIVE,{accountIndex:0})]}})]);expect(t.instructionInfos).toEqual([{programId:"11111111111111111111111111111111",discriminator:"02000000"}]),expect(t.tokenInfos).toEqual([]),expect(t.tokenAccountStates).toEqual([])}),it("DIRECT port: a constant mint becomes a TOKEN_INFO",()=>{const t=new Uint8Array(32).fill(9),n=c([r({accounts:[o("a")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.constantValue)(t)})]}})]);expect(n.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t)])}),it("DIRECT port: an ACCOUNT_PATH mint resolves to the account address",()=>{const t=c([r({accounts:[o("tokenAcct"),o("theMint")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.accountPathValue)(1)})]}})]);expect(t.tokenInfos).toEqual(["theMint"])}),it("RESOLVE port not covered by MINT_ASSOC: sends TOKEN_ACCOUNT_STATE",()=>{const t=c([r({accounts:[o("userAta")],descriptor:{valueFlowPorts:[s(a.TokenKind.RESOLVE,{accountIndex:0,tokenAccountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual(["userAta"]),expect(t.tokenInfos).toEqual([])}),it("RESOLVE port with CAL's singular account_index resolves the token account",()=>{const t=c([r({accounts:[o("userAta")],descriptor:{valueFlowPorts:[{account_index:0,token_value:{kind:"RESOLVE"}}]}})]);expect(t.tokenAccountStates).toEqual(["userAta"])}),it("RESOLVE port covered by MINT_ASSOC: emits TOKEN_INFO, skips account-state",()=>{const t=c([r({accounts:[o("createdAta"),o("theMint")],descriptor:{mintAssociations:[(0,e.mintAssociation)(0,1)],valueFlowPorts:[s(a.TokenKind.RESOLVE,{accountIndex:0,tokenAccountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual([]),expect(t.tokenInfos).toEqual(["theMint"])}),it("NULL port pulls no token requirements",()=>{const t=c([r({accounts:[o("x")],descriptor:{valueFlowPorts:[s(a.TokenKind.NULL)]}})]);expect(t.tokenInfos).toEqual([]),expect(t.tokenAccountStates).toEqual([])}),it("ACCOUNT_RESET with requirePreBalanceZero forces a TOKEN_ACCOUNT_STATE",()=>{const t=c([r({accounts:[o("ata")],descriptor:{accountResets:[(0,e.accountReset)({accountIndex:0,requirePreBalanceZero:!0})]}})]);expect(t.tokenAccountStates).toEqual(["ata"])}),it("ACCOUNT_RESET without the flag adds nothing",()=>{const t=c([r({accounts:[o("ata")],descriptor:{accountResets:[(0,e.accountReset)({accountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual([])}),it("emits ALT_RESOLUTION for ALT-supplied accounts only",()=>{const t=c([r({accounts:[o("staticKey"),o(void 0,{altAddress:"ALT",entryIndex:3})]})]);expect(t.altResolutions).toEqual([{altAddress:"ALT",entryIndex:3}])}),it("emits TRUSTED_NAME for PARAM_TRUSTED_NAME fields (account path + constant)",()=>{const t=new Uint8Array(32).fill(5),n=c([r({accounts:[o("ignored"),o("namedAccount")],descriptor:{displayFields:[(0,e.trustedNameDisplayField)((0,e.accountPathValue)(1)),(0,e.trustedNameDisplayField)((0,e.constantValue)(t))]}})]);expect(n.trustedNames).toEqual(["namedAccount",u.DefaultBs58Encoder.encode(t)])}),it("decodes selected enum variants via the default decoder",()=>{const t=[{index:0,kind:"STRUCT",refs:[1]},{index:1,kind:"ENUM",disc_kind:"U8",total_variants:9,enum_id:"k"}],n=(0,d.buildRequirements)([r({programId:"P",accounts:[],data:(0,e.bytes)(2),descriptor:{idlDescriptor:(0,e.idlDescriptor)({typePool:t,rootType:0})}})]).unsafeCoerce();expect(n.enumVariants).toEqual([{programId:"P",enumId:"k",variantIndex:2}])}),it("deduplicates across instructions and stays deterministic",()=>{const t=new Uint8Array(32).fill(1),n=()=>r({programId:"P",discriminator:"01",accounts:[o("a")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.constantValue)(t)})]}}),i=c([n(),n()]);expect(i.instructionInfos).toEqual([{programId:"P",discriminator:"01"}]),expect(i.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t)])}),it("Jupiter-like route: enum + two token infos + ALT entry",()=>{const t=new Uint8Array(32).fill(2),n=new Uint8Array(32).fill(3),i=()=>(0,p.Right)([{enumId:"swap",variantIndex:46}]),l=c([r({programId:"JUP",discriminator:"e517cb977ae3ad2a",accounts:[o("inputAta"),o("outputAta"),o(void 0,{altAddress:"ALT",entryIndex:7})],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{accountIndex:0,value:(0,e.constantValue)(t)}),s(a.TokenKind.DIRECT,{accountIndex:1,value:(0,e.constantValue)(n)})]}})],i);expect(l.enumVariants).toEqual([{programId:"JUP",enumId:"swap",variantIndex:46}]),expect(l.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t),u.DefaultBs58Encoder.encode(n)]),expect(l.altResolutions).toEqual([{altAddress:"ALT",entryIndex:7}])}),it("surfaces a malformed type pool as a typed Left",()=>{const t=r({programId:"P",accounts:[],descriptor:{idlDescriptor:{type_pool:[{index:0,kind:"NOT_A_KIND"}],root_type:0}}}),n=(0,d.buildRequirements)([t],{selectEnumVariants:E});expect(n.isLeft()).toBe(!0),n.ifLeft(i=>expect(i).toBeInstanceOf(m.RequirementsDecodeError))})});
1
+ "use strict";var p=require("purify-ts"),u=require("../../../app-binder/services/bs58Encoder"),e=require("./__tests__/fixtures/calBuilders"),d=require("./buildRequirements"),a=require("./records"),m=require("./RequirementsError");const I=new Map,E=()=>(0,p.Right)([]);function o(t,n){return{address:t,altRef:n}}function s(t,n={}){const i=["DIRECT","RESOLVE","NULL","NATIVE"][t];return(0,e.valueFlowPort)({accountIndex:n.accountIndex??0,tokenValue:(0,e.tokenValue)(i,{accountIndex:n.tokenAccountIndex,value:n.value})})}function c(t){return{instruction:{programId:t.programId??"Prog",accounts:t.accounts,data:t.data??new Uint8Array},descriptor:{discriminator:t.discriminator??"00",idlDescriptor:(0,e.idlDescriptor)({}),mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[],enumCache:I,...t.descriptor}}}function r(t,n=E){return(0,d.buildRequirements)(t,{selectEnumVariants:n}).unsafeCoerce()}describe("buildRequirements",()=>{it("System transfer: only INSTRUCTION_INFO, native port pulls no token info",()=>{const t=r([c({programId:"11111111111111111111111111111111",discriminator:"02000000",accounts:[o("from"),o("to")],descriptor:{valueFlowPorts:[s(a.TokenKind.NATIVE,{accountIndex:0})]}})]);expect(t.instructionInfos).toEqual([{programId:"11111111111111111111111111111111",discriminator:"02000000"}]),expect(t.tokenInfos).toEqual([]),expect(t.tokenAccountStates).toEqual([])}),it("DIRECT port: a constant mint becomes a TOKEN_INFO",()=>{const t=new Uint8Array(32).fill(9),n=r([c({accounts:[o("a")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.constantValue)(t)})]}})]);expect(n.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t)])}),it("DIRECT port: an ACCOUNT_PATH mint resolves to the account address",()=>{const t=r([c({accounts:[o("tokenAcct"),o("theMint")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.accountPathValue)(1)})]}})]);expect(t.tokenInfos).toEqual(["theMint"])}),it("RESOLVE port not covered by MINT_ASSOC: sends TOKEN_ACCOUNT_STATE",()=>{const t=r([c({accounts:[o("userAta")],descriptor:{valueFlowPorts:[s(a.TokenKind.RESOLVE,{accountIndex:0,tokenAccountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual(["userAta"]),expect(t.tokenInfos).toEqual([])}),it("RESOLVE port with a single-account candidate list resolves the token account",()=>{const t=r([c({accounts:[o("userAta")],descriptor:{valueFlowPorts:[{account_indices:[0],token_value:{kind:"RESOLVE"}}]}})]);expect(t.tokenAccountStates).toEqual(["userAta"])}),it("RESOLVE port covered by MINT_ASSOC: emits TOKEN_INFO, skips account-state",()=>{const t=r([c({accounts:[o("createdAta"),o("theMint")],descriptor:{mintAssociations:[(0,e.mintAssociation)(0,1)],valueFlowPorts:[s(a.TokenKind.RESOLVE,{accountIndex:0,tokenAccountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual([]),expect(t.tokenInfos).toEqual(["theMint"])}),it("NULL port pulls no token requirements",()=>{const t=r([c({accounts:[o("x")],descriptor:{valueFlowPorts:[s(a.TokenKind.NULL)]}})]);expect(t.tokenInfos).toEqual([]),expect(t.tokenAccountStates).toEqual([])}),it("ACCOUNT_RESET with requirePreBalanceZero forces a TOKEN_ACCOUNT_STATE",()=>{const t=r([c({accounts:[o("ata")],descriptor:{accountResets:[(0,e.accountReset)({accountIndex:0,requirePreBalanceZero:!0})]}})]);expect(t.tokenAccountStates).toEqual(["ata"])}),it("ACCOUNT_RESET without the flag adds nothing",()=>{const t=r([c({accounts:[o("ata")],descriptor:{accountResets:[(0,e.accountReset)({accountIndex:0})]}})]);expect(t.tokenAccountStates).toEqual([])}),it("emits ALT_RESOLUTION for ALT-supplied accounts only",()=>{const t=r([c({accounts:[o("staticKey"),o(void 0,{altAddress:"ALT",entryIndex:3})]})]);expect(t.altResolutions).toEqual([{altAddress:"ALT",entryIndex:3}])}),it("emits TRUSTED_NAME for PARAM_TRUSTED_NAME fields (account path + constant)",()=>{const t=new Uint8Array(32).fill(5),n=r([c({accounts:[o("ignored"),o("namedAccount")],descriptor:{displayFields:[(0,e.trustedNameDisplayField)((0,e.accountPathValue)(1)),(0,e.trustedNameDisplayField)((0,e.constantValue)(t))]}})]);expect(n.trustedNames).toEqual(["namedAccount",u.DefaultBs58Encoder.encode(t)])}),it("decodes selected enum variants via the default decoder",()=>{const t=[{index:0,kind:"STRUCT",refs:[1]},{index:1,kind:"ENUM",disc_kind:"U8",total_variants:9,enum_id:"k"}],n=(0,d.buildRequirements)([c({programId:"P",accounts:[],data:(0,e.bytes)(2),descriptor:{idlDescriptor:(0,e.idlDescriptor)({typePool:t,rootType:0})}})]).unsafeCoerce();expect(n.enumVariants).toEqual([{programId:"P",enumId:"k",variantIndex:2}])}),it("deduplicates across instructions and stays deterministic",()=>{const t=new Uint8Array(32).fill(1),n=()=>c({programId:"P",discriminator:"01",accounts:[o("a")],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{value:(0,e.constantValue)(t)})]}}),i=r([n(),n()]);expect(i.instructionInfos).toEqual([{programId:"P",discriminator:"01"}]),expect(i.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t)])}),it("Jupiter-like route: enum + two token infos + ALT entry",()=>{const t=new Uint8Array(32).fill(2),n=new Uint8Array(32).fill(3),i=()=>(0,p.Right)([{enumId:"swap",variantIndex:46}]),l=r([c({programId:"JUP",discriminator:"e517cb977ae3ad2a",accounts:[o("inputAta"),o("outputAta"),o(void 0,{altAddress:"ALT",entryIndex:7})],descriptor:{valueFlowPorts:[s(a.TokenKind.DIRECT,{accountIndex:0,value:(0,e.constantValue)(t)}),s(a.TokenKind.DIRECT,{accountIndex:1,value:(0,e.constantValue)(n)})]}})],i);expect(l.enumVariants).toEqual([{programId:"JUP",enumId:"swap",variantIndex:46}]),expect(l.tokenInfos).toEqual([u.DefaultBs58Encoder.encode(t),u.DefaultBs58Encoder.encode(n)]),expect(l.altResolutions).toEqual([{altAddress:"ALT",entryIndex:7}])}),it("surfaces a malformed type pool as a typed Left",()=>{const t=c({programId:"P",accounts:[],descriptor:{idlDescriptor:{type_pool:[{index:0,kind:"NOT_A_KIND"}],root_type:0}}}),n=(0,d.buildRequirements)([t],{selectEnumVariants:E});expect(n.isLeft()).toBe(!0),n.ifLeft(i=>expect(i).toBeInstanceOf(m.RequirementsDecodeError))})});
2
2
  //# sourceMappingURL=buildRequirements.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/buildRequirements.test.ts"],
4
- "sourcesContent": ["import { type Either, Right } from \"purify-ts\";\n\nimport {\n type SelectedEnumVariant,\n type VariantCache,\n} from \"@internal/app-binder/clear-sign/idl-type-pool\";\nimport { DefaultBs58Encoder } from \"@internal/app-binder/services/bs58Encoder\";\n\nimport {\n accountPathValue,\n accountReset,\n bytes,\n constantValue,\n idlDescriptor,\n mintAssociation,\n tokenValue,\n trustedNameDisplayField,\n valueFlowPort,\n} from \"./__tests__/fixtures/calBuilders\";\nimport { buildRequirements } from \"./buildRequirements\";\nimport { type CalValue, type CalValueFlowPort } from \"./calTypes\";\nimport {\n type InstructionDescriptor,\n type MatchedInstruction,\n type RequirementAccount,\n} from \"./model\";\nimport { TokenKind } from \"./records\";\nimport { RequirementsDecodeError } from \"./RequirementsError\";\nimport { type EnumVariantSelector } from \"./rules\";\n\nconst EMPTY_CACHE: VariantCache = new Map();\nconst NO_ENUMS: EnumVariantSelector = () => Right([]);\n\nfunction account(\n address?: string,\n altRef?: RequirementAccount[\"altRef\"],\n): RequirementAccount {\n return { address, altRef };\n}\n\nfunction port(\n kind: TokenKind,\n opts: {\n accountIndex?: number;\n tokenAccountIndex?: number;\n value?: CalValue;\n } = {},\n): CalValueFlowPort {\n const kindName = ([\"DIRECT\", \"RESOLVE\", \"NULL\", \"NATIVE\"] as const)[kind]!;\n return valueFlowPort({\n accountIndex: opts.accountIndex ?? 0,\n tokenValue: tokenValue(kindName, {\n accountIndex: opts.tokenAccountIndex,\n value: opts.value,\n }),\n });\n}\n\nfunction matched(opts: {\n programId?: string;\n discriminator?: string;\n accounts: RequirementAccount[];\n data?: Uint8Array;\n descriptor?: Partial<InstructionDescriptor>;\n}): MatchedInstruction {\n return {\n instruction: {\n programId: opts.programId ?? \"Prog\",\n accounts: opts.accounts,\n data: opts.data ?? new Uint8Array(),\n },\n descriptor: {\n discriminator: opts.discriminator ?? \"00\",\n idlDescriptor: idlDescriptor({}),\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n enumCache: EMPTY_CACHE,\n ...opts.descriptor,\n },\n };\n}\n\nfunction run(matchedList: MatchedInstruction[], selector = NO_ENUMS) {\n return buildRequirements(matchedList, {\n selectEnumVariants: selector,\n }).unsafeCoerce();\n}\n\ndescribe(\"buildRequirements\", () => {\n it(\"System transfer: only INSTRUCTION_INFO, native port pulls no token info\", () => {\n const result = run([\n matched({\n programId: \"11111111111111111111111111111111\",\n discriminator: \"02000000\",\n accounts: [account(\"from\"), account(\"to\")],\n descriptor: {\n valueFlowPorts: [port(TokenKind.NATIVE, { accountIndex: 0 })],\n },\n }),\n ]);\n expect(result.instructionInfos).toEqual([\n {\n programId: \"11111111111111111111111111111111\",\n discriminator: \"02000000\",\n },\n ]);\n expect(result.tokenInfos).toEqual([]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"DIRECT port: a constant mint becomes a TOKEN_INFO\", () => {\n const mintBytes = new Uint8Array(32).fill(9);\n const result = run([\n matched({\n accounts: [account(\"a\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: constantValue(mintBytes) }),\n ],\n },\n }),\n ]);\n expect(result.tokenInfos).toEqual([DefaultBs58Encoder.encode(mintBytes)]);\n });\n\n it(\"DIRECT port: an ACCOUNT_PATH mint resolves to the account address\", () => {\n const result = run([\n matched({\n accounts: [account(\"tokenAcct\"), account(\"theMint\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: accountPathValue(1) }),\n ],\n },\n }),\n ]);\n expect(result.tokenInfos).toEqual([\"theMint\"]);\n });\n\n it(\"RESOLVE port not covered by MINT_ASSOC: sends TOKEN_ACCOUNT_STATE\", () => {\n const result = run([\n matched({\n accounts: [account(\"userAta\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.RESOLVE, { accountIndex: 0, tokenAccountIndex: 0 }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"userAta\"]);\n expect(result.tokenInfos).toEqual([]);\n });\n\n it(\"RESOLVE port with CAL's singular account_index resolves the token account\", () => {\n const result = run([\n matched({\n accounts: [account(\"userAta\")],\n descriptor: {\n // Live CAL emits a single `account_index` (not the spec's\n // `account_indices` list); it must still resolve.\n valueFlowPorts: [\n { account_index: 0, token_value: { kind: \"RESOLVE\" } },\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"userAta\"]);\n });\n\n it(\"RESOLVE port covered by MINT_ASSOC: emits TOKEN_INFO, skips account-state\", () => {\n const result = run([\n matched({\n accounts: [account(\"createdAta\"), account(\"theMint\")],\n descriptor: {\n mintAssociations: [mintAssociation(0, 1)],\n valueFlowPorts: [\n port(TokenKind.RESOLVE, { accountIndex: 0, tokenAccountIndex: 0 }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([]);\n expect(result.tokenInfos).toEqual([\"theMint\"]);\n });\n\n it(\"NULL port pulls no token requirements\", () => {\n const result = run([\n matched({\n accounts: [account(\"x\")],\n descriptor: { valueFlowPorts: [port(TokenKind.NULL)] },\n }),\n ]);\n expect(result.tokenInfos).toEqual([]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"ACCOUNT_RESET with requirePreBalanceZero forces a TOKEN_ACCOUNT_STATE\", () => {\n const result = run([\n matched({\n accounts: [account(\"ata\")],\n descriptor: {\n accountResets: [\n accountReset({ accountIndex: 0, requirePreBalanceZero: true }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"ata\"]);\n });\n\n it(\"ACCOUNT_RESET without the flag adds nothing\", () => {\n const result = run([\n matched({\n accounts: [account(\"ata\")],\n descriptor: { accountResets: [accountReset({ accountIndex: 0 })] },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"emits ALT_RESOLUTION for ALT-supplied accounts only\", () => {\n const result = run([\n matched({\n accounts: [\n account(\"staticKey\"),\n account(undefined, { altAddress: \"ALT\", entryIndex: 3 }),\n ],\n }),\n ]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 3 },\n ]);\n });\n\n it(\"emits TRUSTED_NAME for PARAM_TRUSTED_NAME fields (account path + constant)\", () => {\n const constantAddr = new Uint8Array(32).fill(5);\n const result = run([\n matched({\n accounts: [account(\"ignored\"), account(\"namedAccount\")],\n descriptor: {\n displayFields: [\n trustedNameDisplayField(accountPathValue(1)),\n trustedNameDisplayField(constantValue(constantAddr)),\n ],\n },\n }),\n ]);\n expect(result.trustedNames).toEqual([\n \"namedAccount\",\n DefaultBs58Encoder.encode(constantAddr),\n ]);\n });\n\n it(\"decodes selected enum variants via the default decoder\", () => {\n // pool: [0] STRUCT{ref 1}, [1] ENUM disc=U8 enum_id=\"k\"; data selects variant 2.\n const typePool = [\n { index: 0, kind: \"STRUCT\", refs: [1] },\n {\n index: 1,\n kind: \"ENUM\",\n disc_kind: \"U8\",\n total_variants: 9,\n enum_id: \"k\",\n },\n ];\n const result = buildRequirements([\n matched({\n programId: \"P\",\n accounts: [],\n data: bytes(2),\n descriptor: { idlDescriptor: idlDescriptor({ typePool, rootType: 0 }) },\n }),\n ]).unsafeCoerce();\n expect(result.enumVariants).toEqual([\n { programId: \"P\", enumId: \"k\", variantIndex: 2 },\n ]);\n });\n\n it(\"deduplicates across instructions and stays deterministic\", () => {\n const usdc = new Uint8Array(32).fill(1);\n const direct = () =>\n matched({\n programId: \"P\",\n discriminator: \"01\",\n accounts: [account(\"a\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: constantValue(usdc) }),\n ],\n },\n });\n const result = run([direct(), direct()]);\n expect(result.instructionInfos).toEqual([\n { programId: \"P\", discriminator: \"01\" },\n ]);\n expect(result.tokenInfos).toEqual([DefaultBs58Encoder.encode(usdc)]);\n });\n\n it(\"Jupiter-like route: enum + two token infos + ALT entry\", () => {\n const inMint = new Uint8Array(32).fill(2);\n const outMint = new Uint8Array(32).fill(3);\n const selector: EnumVariantSelector = () =>\n Right([{ enumId: \"swap\", variantIndex: 46 }] as SelectedEnumVariant[]);\n const result = run(\n [\n matched({\n programId: \"JUP\",\n discriminator: \"e517cb977ae3ad2a\",\n accounts: [\n account(\"inputAta\"),\n account(\"outputAta\"),\n account(undefined, { altAddress: \"ALT\", entryIndex: 7 }),\n ],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, {\n accountIndex: 0,\n value: constantValue(inMint),\n }),\n port(TokenKind.DIRECT, {\n accountIndex: 1,\n value: constantValue(outMint),\n }),\n ],\n },\n }),\n ],\n selector,\n );\n expect(result.enumVariants).toEqual([\n { programId: \"JUP\", enumId: \"swap\", variantIndex: 46 },\n ]);\n expect(result.tokenInfos).toEqual([\n DefaultBs58Encoder.encode(inMint),\n DefaultBs58Encoder.encode(outMint),\n ]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 7 },\n ]);\n });\n\n it(\"surfaces a malformed type pool as a typed Left\", () => {\n const broken = matched({\n programId: \"P\",\n accounts: [],\n descriptor: {\n idlDescriptor: {\n type_pool: [{ index: 0, kind: \"NOT_A_KIND\" }],\n root_type: 0,\n },\n },\n });\n const result: Either<unknown, unknown> = buildRequirements([broken], {\n selectEnumVariants: NO_ENUMS,\n });\n expect(result.isLeft()).toBe(true);\n result.ifLeft((error) =>\n expect(error).toBeInstanceOf(RequirementsDecodeError),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type Either, Right } from \"purify-ts\";\n\nimport {\n type SelectedEnumVariant,\n type VariantCache,\n} from \"@internal/app-binder/clear-sign/idl-type-pool\";\nimport { DefaultBs58Encoder } from \"@internal/app-binder/services/bs58Encoder\";\n\nimport {\n accountPathValue,\n accountReset,\n bytes,\n constantValue,\n idlDescriptor,\n mintAssociation,\n tokenValue,\n trustedNameDisplayField,\n valueFlowPort,\n} from \"./__tests__/fixtures/calBuilders\";\nimport { buildRequirements } from \"./buildRequirements\";\nimport { type CalValue, type CalValueFlowPort } from \"./calTypes\";\nimport {\n type InstructionDescriptor,\n type MatchedInstruction,\n type RequirementAccount,\n} from \"./model\";\nimport { TokenKind } from \"./records\";\nimport { RequirementsDecodeError } from \"./RequirementsError\";\nimport { type EnumVariantSelector } from \"./rules\";\n\nconst EMPTY_CACHE: VariantCache = new Map();\nconst NO_ENUMS: EnumVariantSelector = () => Right([]);\n\nfunction account(\n address?: string,\n altRef?: RequirementAccount[\"altRef\"],\n): RequirementAccount {\n return { address, altRef };\n}\n\nfunction port(\n kind: TokenKind,\n opts: {\n accountIndex?: number;\n tokenAccountIndex?: number;\n value?: CalValue;\n } = {},\n): CalValueFlowPort {\n const kindName = ([\"DIRECT\", \"RESOLVE\", \"NULL\", \"NATIVE\"] as const)[kind]!;\n return valueFlowPort({\n accountIndex: opts.accountIndex ?? 0,\n tokenValue: tokenValue(kindName, {\n accountIndex: opts.tokenAccountIndex,\n value: opts.value,\n }),\n });\n}\n\nfunction matched(opts: {\n programId?: string;\n discriminator?: string;\n accounts: RequirementAccount[];\n data?: Uint8Array;\n descriptor?: Partial<InstructionDescriptor>;\n}): MatchedInstruction {\n return {\n instruction: {\n programId: opts.programId ?? \"Prog\",\n accounts: opts.accounts,\n data: opts.data ?? new Uint8Array(),\n },\n descriptor: {\n discriminator: opts.discriminator ?? \"00\",\n idlDescriptor: idlDescriptor({}),\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n enumCache: EMPTY_CACHE,\n ...opts.descriptor,\n },\n };\n}\n\nfunction run(matchedList: MatchedInstruction[], selector = NO_ENUMS) {\n return buildRequirements(matchedList, {\n selectEnumVariants: selector,\n }).unsafeCoerce();\n}\n\ndescribe(\"buildRequirements\", () => {\n it(\"System transfer: only INSTRUCTION_INFO, native port pulls no token info\", () => {\n const result = run([\n matched({\n programId: \"11111111111111111111111111111111\",\n discriminator: \"02000000\",\n accounts: [account(\"from\"), account(\"to\")],\n descriptor: {\n valueFlowPorts: [port(TokenKind.NATIVE, { accountIndex: 0 })],\n },\n }),\n ]);\n expect(result.instructionInfos).toEqual([\n {\n programId: \"11111111111111111111111111111111\",\n discriminator: \"02000000\",\n },\n ]);\n expect(result.tokenInfos).toEqual([]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"DIRECT port: a constant mint becomes a TOKEN_INFO\", () => {\n const mintBytes = new Uint8Array(32).fill(9);\n const result = run([\n matched({\n accounts: [account(\"a\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: constantValue(mintBytes) }),\n ],\n },\n }),\n ]);\n expect(result.tokenInfos).toEqual([DefaultBs58Encoder.encode(mintBytes)]);\n });\n\n it(\"DIRECT port: an ACCOUNT_PATH mint resolves to the account address\", () => {\n const result = run([\n matched({\n accounts: [account(\"tokenAcct\"), account(\"theMint\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: accountPathValue(1) }),\n ],\n },\n }),\n ]);\n expect(result.tokenInfos).toEqual([\"theMint\"]);\n });\n\n it(\"RESOLVE port not covered by MINT_ASSOC: sends TOKEN_ACCOUNT_STATE\", () => {\n const result = run([\n matched({\n accounts: [account(\"userAta\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.RESOLVE, { accountIndex: 0, tokenAccountIndex: 0 }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"userAta\"]);\n expect(result.tokenInfos).toEqual([]);\n });\n\n it(\"RESOLVE port with a single-account candidate list resolves the token account\", () => {\n const result = run([\n matched({\n accounts: [account(\"userAta\")],\n descriptor: {\n // The common single-account port is a 1-element `account_indices` list.\n valueFlowPorts: [\n { account_indices: [0], token_value: { kind: \"RESOLVE\" } },\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"userAta\"]);\n });\n\n it(\"RESOLVE port covered by MINT_ASSOC: emits TOKEN_INFO, skips account-state\", () => {\n const result = run([\n matched({\n accounts: [account(\"createdAta\"), account(\"theMint\")],\n descriptor: {\n mintAssociations: [mintAssociation(0, 1)],\n valueFlowPorts: [\n port(TokenKind.RESOLVE, { accountIndex: 0, tokenAccountIndex: 0 }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([]);\n expect(result.tokenInfos).toEqual([\"theMint\"]);\n });\n\n it(\"NULL port pulls no token requirements\", () => {\n const result = run([\n matched({\n accounts: [account(\"x\")],\n descriptor: { valueFlowPorts: [port(TokenKind.NULL)] },\n }),\n ]);\n expect(result.tokenInfos).toEqual([]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"ACCOUNT_RESET with requirePreBalanceZero forces a TOKEN_ACCOUNT_STATE\", () => {\n const result = run([\n matched({\n accounts: [account(\"ata\")],\n descriptor: {\n accountResets: [\n accountReset({ accountIndex: 0, requirePreBalanceZero: true }),\n ],\n },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([\"ata\"]);\n });\n\n it(\"ACCOUNT_RESET without the flag adds nothing\", () => {\n const result = run([\n matched({\n accounts: [account(\"ata\")],\n descriptor: { accountResets: [accountReset({ accountIndex: 0 })] },\n }),\n ]);\n expect(result.tokenAccountStates).toEqual([]);\n });\n\n it(\"emits ALT_RESOLUTION for ALT-supplied accounts only\", () => {\n const result = run([\n matched({\n accounts: [\n account(\"staticKey\"),\n account(undefined, { altAddress: \"ALT\", entryIndex: 3 }),\n ],\n }),\n ]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 3 },\n ]);\n });\n\n it(\"emits TRUSTED_NAME for PARAM_TRUSTED_NAME fields (account path + constant)\", () => {\n const constantAddr = new Uint8Array(32).fill(5);\n const result = run([\n matched({\n accounts: [account(\"ignored\"), account(\"namedAccount\")],\n descriptor: {\n displayFields: [\n trustedNameDisplayField(accountPathValue(1)),\n trustedNameDisplayField(constantValue(constantAddr)),\n ],\n },\n }),\n ]);\n expect(result.trustedNames).toEqual([\n \"namedAccount\",\n DefaultBs58Encoder.encode(constantAddr),\n ]);\n });\n\n it(\"decodes selected enum variants via the default decoder\", () => {\n // pool: [0] STRUCT{ref 1}, [1] ENUM disc=U8 enum_id=\"k\"; data selects variant 2.\n const typePool = [\n { index: 0, kind: \"STRUCT\", refs: [1] },\n {\n index: 1,\n kind: \"ENUM\",\n disc_kind: \"U8\",\n total_variants: 9,\n enum_id: \"k\",\n },\n ];\n const result = buildRequirements([\n matched({\n programId: \"P\",\n accounts: [],\n data: bytes(2),\n descriptor: { idlDescriptor: idlDescriptor({ typePool, rootType: 0 }) },\n }),\n ]).unsafeCoerce();\n expect(result.enumVariants).toEqual([\n { programId: \"P\", enumId: \"k\", variantIndex: 2 },\n ]);\n });\n\n it(\"deduplicates across instructions and stays deterministic\", () => {\n const usdc = new Uint8Array(32).fill(1);\n const direct = () =>\n matched({\n programId: \"P\",\n discriminator: \"01\",\n accounts: [account(\"a\")],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, { value: constantValue(usdc) }),\n ],\n },\n });\n const result = run([direct(), direct()]);\n expect(result.instructionInfos).toEqual([\n { programId: \"P\", discriminator: \"01\" },\n ]);\n expect(result.tokenInfos).toEqual([DefaultBs58Encoder.encode(usdc)]);\n });\n\n it(\"Jupiter-like route: enum + two token infos + ALT entry\", () => {\n const inMint = new Uint8Array(32).fill(2);\n const outMint = new Uint8Array(32).fill(3);\n const selector: EnumVariantSelector = () =>\n Right([{ enumId: \"swap\", variantIndex: 46 }] as SelectedEnumVariant[]);\n const result = run(\n [\n matched({\n programId: \"JUP\",\n discriminator: \"e517cb977ae3ad2a\",\n accounts: [\n account(\"inputAta\"),\n account(\"outputAta\"),\n account(undefined, { altAddress: \"ALT\", entryIndex: 7 }),\n ],\n descriptor: {\n valueFlowPorts: [\n port(TokenKind.DIRECT, {\n accountIndex: 0,\n value: constantValue(inMint),\n }),\n port(TokenKind.DIRECT, {\n accountIndex: 1,\n value: constantValue(outMint),\n }),\n ],\n },\n }),\n ],\n selector,\n );\n expect(result.enumVariants).toEqual([\n { programId: \"JUP\", enumId: \"swap\", variantIndex: 46 },\n ]);\n expect(result.tokenInfos).toEqual([\n DefaultBs58Encoder.encode(inMint),\n DefaultBs58Encoder.encode(outMint),\n ]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 7 },\n ]);\n });\n\n it(\"surfaces a malformed type pool as a typed Left\", () => {\n const broken = matched({\n programId: \"P\",\n accounts: [],\n descriptor: {\n idlDescriptor: {\n type_pool: [{ index: 0, kind: \"NOT_A_KIND\" }],\n root_type: 0,\n },\n },\n });\n const result: Either<unknown, unknown> = buildRequirements([broken], {\n selectEnumVariants: NO_ENUMS,\n });\n expect(result.isLeft()).toBe(true);\n result.ifLeft((error) =>\n expect(error).toBeInstanceOf(RequirementsDecodeError),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_purify_ts", "import_bs58Encoder", "import_calBuilders", "import_buildRequirements", "import_records", "import_RequirementsError", "EMPTY_CACHE", "NO_ENUMS", "account", "address", "altRef", "port", "kind", "opts", "kindName", "matched", "run", "matchedList", "selector", "result", "mintBytes", "constantAddr", "typePool", "usdc", "direct", "inMint", "outMint", "broken", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var T=(e,n)=>{for(var t in n)c(e,t,{get:n[t],enumerable:!0})},f=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of A(n))!y.call(e,a)&&a!==t&&c(e,a,{get:()=>n[a],enumerable:!(o=p(n,a))||o.enumerable});return e};var x=e=>f(c({},"__esModule",{value:!0}),e);var O={};T(O,{fromCalAccountReset:()=>I,fromCalDisplayField:()=>R,fromCalInstructionInfo:()=>E,fromCalTokenValue:()=>s,fromCalValue:()=>i,fromCalValueFlowPort:()=>N});module.exports=x(O);var l=require("@ledgerhq/device-management-kit"),d=require("../../../app-binder/clear-sign/idl-type-pool"),u=require("./records");const _={ARGUMENT_PATH:0,ACCOUNT_PATH:1,CONSTANT:2},C={DIRECT:0,RESOLVE:1,NULL:2,NATIVE:3};function r(e){throw new Error(`[ClearSign] malformed CAL descriptor: ${e}`)}const m={RAW:0,AMOUNT:1,TOKEN_AMOUNT:2,DATETIME:3,DURATION:4,UNIT:5,ENUM:6,TRUSTED_NAME:7,ACCOUNT:8,STRING:9};function i(e){const n=_[e.source];n===void 0&&r(`unknown VALUE source "${e.source}"`);let t=new Uint8Array;if(e.source==="CONSTANT"){const o=e.data!==void 0?(0,l.hexaStringToBuffer)(e.data):null;o===null&&r(`invalid CONSTANT hex "${e.data??""}"`),t=o}else e.source==="ACCOUNT_PATH"&&e.account_index!==void 0&&(t=Uint8Array.from([e.account_index]));return{source:n,payload:t}}function s(e){const n=C[e.kind];return n===void 0&&r(`unknown token_value kind "${e.kind}"`),{kind:n,value:e.value?i(e.value):void 0,accountIndex:e.account_index}}function P(e){switch(e){case void 0:case"PROGRAM_ID":return u.OptionalAccountStrategy.PROGRAM_ID;case"OMITTED":return u.OptionalAccountStrategy.OMITTED;default:return r(`unknown optional_account_strategy "${e}"`)}}function N(e){return{accountIndices:e.account_indices??(e.account_index!==void 0?[e.account_index]:[]),optionalAccountStrategy:P(e.optional_account_strategy),tokenValue:e.token_value?s(e.token_value):void 0}}function I(e){return{accountIndex:e.account_index,requirePreBalanceZero:e.require_pre_balance_zero??!1}}function R(e){return{paramType:m[e.param.type],value:e.param.value?i(e.param.value):void 0,token:e.param.token?i(e.param.token):void 0}}function E(e,n){return{typePool:(0,d.poolFromJson)(e.type_pool),rootType:e.root_type,mintAssociations:n.map(t=>({accountIndex:t.account_index,mintIndex:t.mint_index}))}}0&&(module.exports={fromCalAccountReset,fromCalDisplayField,fromCalInstructionInfo,fromCalTokenValue,fromCalValue,fromCalValueFlowPort});
1
+ "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var T=(e,n)=>{for(var t in n)c(e,t,{get:n[t],enumerable:!0})},f=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of A(n))!y.call(e,r)&&r!==t&&c(e,r,{get:()=>n[r],enumerable:!(o=p(n,r))||o.enumerable});return e};var x=e=>f(c({},"__esModule",{value:!0}),e);var O={};T(O,{fromCalAccountReset:()=>I,fromCalDisplayField:()=>R,fromCalInstructionInfo:()=>E,fromCalTokenValue:()=>s,fromCalValue:()=>i,fromCalValueFlowPort:()=>N});module.exports=x(O);var l=require("@ledgerhq/device-management-kit"),d=require("../../../app-binder/clear-sign/idl-type-pool"),u=require("./records");const C={ARGUMENT_PATH:0,ACCOUNT_PATH:1,CONSTANT:2},_={DIRECT:0,RESOLVE:1,NULL:2,NATIVE:3};function a(e){throw new Error(`[ClearSign] malformed CAL descriptor: ${e}`)}const m={RAW:0,AMOUNT:1,TOKEN_AMOUNT:2,DATETIME:3,DURATION:4,UNIT:5,ENUM:6,TRUSTED_NAME:7,ACCOUNT:8,STRING:9};function i(e){const n=C[e.source];n===void 0&&a(`unknown VALUE source "${e.source}"`);let t=new Uint8Array;if(e.source==="CONSTANT"){const o=e.data!==void 0?(0,l.hexaStringToBuffer)(e.data):null;o===null&&a(`invalid CONSTANT hex "${e.data??""}"`),t=o}else e.source==="ACCOUNT_PATH"&&e.account_index!==void 0&&(t=Uint8Array.from([e.account_index]));return{source:n,payload:t}}function s(e){const n=_[e.kind];return n===void 0&&a(`unknown token_value kind "${e.kind}"`),{kind:n,value:e.value?i(e.value):void 0,accountIndex:e.account_index}}function P(e){switch(e){case void 0:case"PROGRAM_ID":return u.OptionalAccountStrategy.PROGRAM_ID;case"OMITTED":return u.OptionalAccountStrategy.OMITTED;default:return a(`unknown optional_account_strategy "${e}"`)}}function N(e){return{accountIndices:e.account_indices,optionalAccountStrategy:P(e.optional_account_strategy),tokenValue:s(e.token_value)}}function I(e){return{accountIndex:e.account_index,requirePreBalanceZero:e.require_pre_balance_zero??!1}}function R(e){return{paramType:m[e.param.type],value:e.param.value?i(e.param.value):void 0,token:e.param.token?i(e.param.token):void 0}}function E(e,n){return{typePool:(0,d.poolFromJson)(e.type_pool),rootType:e.root_type,mintAssociations:n.map(t=>({accountIndex:t.account_index,mintIndex:t.mint_index}))}}0&&(module.exports={fromCalAccountReset,fromCalDisplayField,fromCalInstructionInfo,fromCalTokenValue,fromCalValue,fromCalValueFlowPort});
2
2
  //# sourceMappingURL=fromCal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/fromCal.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport { poolFromJson } from \"@internal/app-binder/clear-sign/idl-type-pool\";\n\nimport {\n type CalAccountReset,\n type CalDisplayField,\n type CalIdlDescriptor,\n type CalMintAssociation,\n type CalTokenValue,\n type CalValue,\n type CalValueFlowPort,\n} from \"./calTypes\";\nimport {\n type MintAssociation,\n OptionalAccountStrategy,\n type ParsedAccountReset,\n type ParsedDisplayField,\n type ParsedInstructionInfo,\n type ParsedTokenValue,\n type ParsedValue,\n type ParsedValueFlowPort,\n type TokenKind,\n type ValueSource,\n} from \"./records\";\n\nconst VALUE_SOURCE_BY_NAME: Readonly<Record<string, ValueSource>> = {\n ARGUMENT_PATH: 0x00,\n ACCOUNT_PATH: 0x01,\n CONSTANT: 0x02,\n};\n\nconst TOKEN_KIND_BY_NAME: Readonly<Record<string, TokenKind>> = {\n DIRECT: 0x00,\n RESOLVE: 0x01,\n NULL: 0x02,\n NATIVE: 0x03,\n};\n\n/**\n * Reject malformed/unknown CAL data. Thrown inside `buildRequirements`'s\n * try/catch, so it surfaces as a `RequirementsDecodeError` `Left` (the caller\n * then falls back to blind signing) rather than silently building wrong\n * requirements.\n */\nfunction decodeError(message: string): never {\n throw new Error(`[ClearSign] malformed CAL descriptor: ${message}`);\n}\n\n/** `FieldParamType` name \u2192 on-wire code (mirrors the spec enum). */\nconst PARAM_TYPE_BY_NAME: Readonly<Record<string, number>> = {\n RAW: 0x00,\n AMOUNT: 0x01,\n TOKEN_AMOUNT: 0x02,\n DATETIME: 0x03,\n DURATION: 0x04,\n UNIT: 0x05,\n ENUM: 0x06,\n TRUSTED_NAME: 0x07,\n ACCOUNT: 0x08,\n STRING: 0x09,\n};\n\n/**\n * Map a CAL `VALUE` to the {@link ParsedValue} the resolver reads. `payload` is\n * reconstructed to the minimal bytes `resolvePubkeyValue` interprets: the raw\n * pubkey for CONSTANT, a single account-index byte for ACCOUNT_PATH. ARGUMENT_PATH\n * carries no pubkey, so its payload is empty (the resolver ignores it).\n */\nexport function fromCalValue(value: CalValue): ParsedValue {\n const source = VALUE_SOURCE_BY_NAME[value.source];\n if (source === undefined) {\n decodeError(`unknown VALUE source \"${value.source}\"`);\n }\n let payload: Uint8Array = new Uint8Array();\n if (value.source === \"CONSTANT\") {\n const bytes =\n value.data !== undefined ? hexaStringToBuffer(value.data) : null;\n if (bytes === null) {\n decodeError(`invalid CONSTANT hex \"${value.data ?? \"\"}\"`);\n }\n payload = bytes;\n } else if (\n value.source === \"ACCOUNT_PATH\" &&\n value.account_index !== undefined\n ) {\n payload = Uint8Array.from([value.account_index]);\n }\n return { source, payload };\n}\n\nexport function fromCalTokenValue(tokenValue: CalTokenValue): ParsedTokenValue {\n const kind = TOKEN_KIND_BY_NAME[tokenValue.kind];\n if (kind === undefined) {\n decodeError(`unknown token_value kind \"${tokenValue.kind}\"`);\n }\n return {\n kind,\n value: tokenValue.value ? fromCalValue(tokenValue.value) : undefined,\n accountIndex: tokenValue.account_index,\n };\n}\n\n/**\n * `VALUE_FLOW_PORT.OPTIONAL_ACCOUNT_STRATEGY`: absent defaults to `PROGRAM_ID`\n * (spec); any unrecognized value is rejected rather than silently treated as\n * `PROGRAM_ID`.\n */\nfunction fromCalOptionalAccountStrategy(\n name: string | undefined,\n): OptionalAccountStrategy {\n switch (name) {\n case undefined:\n case \"PROGRAM_ID\":\n return OptionalAccountStrategy.PROGRAM_ID;\n case \"OMITTED\":\n return OptionalAccountStrategy.OMITTED;\n default:\n return decodeError(`unknown optional_account_strategy \"${name}\"`);\n }\n}\n\nexport function fromCalValueFlowPort(\n port: CalValueFlowPort,\n): ParsedValueFlowPort {\n return {\n // CAL's spec form is the ordered candidate list `account_indices`; the live\n // response currently emits a single `account_index`, treated as a 1-element\n // list. Prefer the candidate list when present.\n accountIndices:\n port.account_indices ??\n (port.account_index !== undefined ? [port.account_index] : []),\n optionalAccountStrategy: fromCalOptionalAccountStrategy(\n port.optional_account_strategy,\n ),\n tokenValue: port.token_value\n ? fromCalTokenValue(port.token_value)\n : undefined,\n };\n}\n\nexport function fromCalAccountReset(\n reset: CalAccountReset,\n): ParsedAccountReset {\n return {\n accountIndex: reset.account_index,\n requirePreBalanceZero: reset.require_pre_balance_zero ?? false,\n };\n}\n\nexport function fromCalDisplayField(\n field: CalDisplayField,\n): ParsedDisplayField {\n return {\n paramType: PARAM_TYPE_BY_NAME[field.param.type],\n value: field.param.value ? fromCalValue(field.param.value) : undefined,\n token: field.param.token ? fromCalValue(field.param.token) : undefined,\n };\n}\n\nexport function fromCalInstructionInfo(\n idlDescriptor: CalIdlDescriptor,\n mintAssociations: CalMintAssociation[],\n): ParsedInstructionInfo {\n return {\n typePool: poolFromJson(idlDescriptor.type_pool),\n rootType: idlDescriptor.root_type,\n mintAssociations: mintAssociations.map<MintAssociation>((association) => ({\n accountIndex: association.account_index,\n mintIndex: association.mint_index,\n })),\n };\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,wBAAAC,EAAA,2BAAAC,EAAA,sBAAAC,EAAA,iBAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAR,GAAA,IAAAS,EAAmC,2CAEnCC,EAA6B,yDAW7BC,EAWO,qBAEP,MAAMC,EAA8D,CAClE,cAAe,EACf,aAAc,EACd,SAAU,CACZ,EAEMC,EAA0D,CAC9D,OAAQ,EACR,QAAS,EACT,KAAM,EACN,OAAQ,CACV,EAQA,SAASC,EAAYC,EAAwB,CAC3C,MAAM,IAAI,MAAM,yCAAyCA,CAAO,EAAE,CACpE,CAGA,MAAMC,EAAuD,CAC3D,IAAK,EACL,OAAQ,EACR,aAAc,EACd,SAAU,EACV,SAAU,EACV,KAAM,EACN,KAAM,EACN,aAAc,EACd,QAAS,EACT,OAAQ,CACV,EAQO,SAASV,EAAaW,EAA8B,CACzD,MAAMC,EAASN,EAAqBK,EAAM,MAAM,EAC5CC,IAAW,QACbJ,EAAY,yBAAyBG,EAAM,MAAM,GAAG,EAEtD,IAAIE,EAAsB,IAAI,WAC9B,GAAIF,EAAM,SAAW,WAAY,CAC/B,MAAMG,EACJH,EAAM,OAAS,UAAY,sBAAmBA,EAAM,IAAI,EAAI,KAC1DG,IAAU,MACZN,EAAY,yBAAyBG,EAAM,MAAQ,EAAE,GAAG,EAE1DE,EAAUC,CACZ,MACEH,EAAM,SAAW,gBACjBA,EAAM,gBAAkB,SAExBE,EAAU,WAAW,KAAK,CAACF,EAAM,aAAa,CAAC,GAEjD,MAAO,CAAE,OAAAC,EAAQ,QAAAC,CAAQ,CAC3B,CAEO,SAASd,EAAkBgB,EAA6C,CAC7E,MAAMC,EAAOT,EAAmBQ,EAAW,IAAI,EAC/C,OAAIC,IAAS,QACXR,EAAY,6BAA6BO,EAAW,IAAI,GAAG,EAEtD,CACL,KAAAC,EACA,MAAOD,EAAW,MAAQf,EAAae,EAAW,KAAK,EAAI,OAC3D,aAAcA,EAAW,aAC3B,CACF,CAOA,SAASE,EACPC,EACyB,CACzB,OAAQA,EAAM,CACZ,KAAK,OACL,IAAK,aACH,OAAO,0BAAwB,WACjC,IAAK,UACH,OAAO,0BAAwB,QACjC,QACE,OAAOV,EAAY,sCAAsCU,CAAI,GAAG,CACpE,CACF,CAEO,SAASjB,EACdkB,EACqB,CACrB,MAAO,CAIL,eACEA,EAAK,kBACJA,EAAK,gBAAkB,OAAY,CAACA,EAAK,aAAa,EAAI,CAAC,GAC9D,wBAAyBF,EACvBE,EAAK,yBACP,EACA,WAAYA,EAAK,YACbpB,EAAkBoB,EAAK,WAAW,EAClC,MACN,CACF,CAEO,SAASvB,EACdwB,EACoB,CACpB,MAAO,CACL,aAAcA,EAAM,cACpB,sBAAuBA,EAAM,0BAA4B,EAC3D,CACF,CAEO,SAASvB,EACdwB,EACoB,CACpB,MAAO,CACL,UAAWX,EAAmBW,EAAM,MAAM,IAAI,EAC9C,MAAOA,EAAM,MAAM,MAAQrB,EAAaqB,EAAM,MAAM,KAAK,EAAI,OAC7D,MAAOA,EAAM,MAAM,MAAQrB,EAAaqB,EAAM,MAAM,KAAK,EAAI,MAC/D,CACF,CAEO,SAASvB,EACdwB,EACAC,EACuB,CACvB,MAAO,CACL,YAAU,gBAAaD,EAAc,SAAS,EAC9C,SAAUA,EAAc,UACxB,iBAAkBC,EAAiB,IAAsBC,IAAiB,CACxE,aAAcA,EAAY,cAC1B,UAAWA,EAAY,UACzB,EAAE,CACJ,CACF",
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport { poolFromJson } from \"@internal/app-binder/clear-sign/idl-type-pool\";\n\nimport {\n type CalAccountReset,\n type CalDisplayField,\n type CalIdlDescriptor,\n type CalMintAssociation,\n type CalTokenValue,\n type CalValue,\n type CalValueFlowPort,\n} from \"./calTypes\";\nimport {\n type MintAssociation,\n OptionalAccountStrategy,\n type ParsedAccountReset,\n type ParsedDisplayField,\n type ParsedInstructionInfo,\n type ParsedTokenValue,\n type ParsedValue,\n type ParsedValueFlowPort,\n type TokenKind,\n type ValueSource,\n} from \"./records\";\n\nconst VALUE_SOURCE_BY_NAME: Readonly<Record<string, ValueSource>> = {\n ARGUMENT_PATH: 0x00,\n ACCOUNT_PATH: 0x01,\n CONSTANT: 0x02,\n};\n\nconst TOKEN_KIND_BY_NAME: Readonly<Record<string, TokenKind>> = {\n DIRECT: 0x00,\n RESOLVE: 0x01,\n NULL: 0x02,\n NATIVE: 0x03,\n};\n\n/**\n * Reject malformed/unknown CAL data. Thrown inside `buildRequirements`'s\n * try/catch, so it surfaces as a `RequirementsDecodeError` `Left` (the caller\n * then falls back to blind signing) rather than silently building wrong\n * requirements.\n */\nfunction decodeError(message: string): never {\n throw new Error(`[ClearSign] malformed CAL descriptor: ${message}`);\n}\n\n/** `FieldParamType` name \u2192 on-wire code (mirrors the spec enum). */\nconst PARAM_TYPE_BY_NAME: Readonly<Record<string, number>> = {\n RAW: 0x00,\n AMOUNT: 0x01,\n TOKEN_AMOUNT: 0x02,\n DATETIME: 0x03,\n DURATION: 0x04,\n UNIT: 0x05,\n ENUM: 0x06,\n TRUSTED_NAME: 0x07,\n ACCOUNT: 0x08,\n STRING: 0x09,\n};\n\n/**\n * Map a CAL `VALUE` to the {@link ParsedValue} the resolver reads. `payload` is\n * reconstructed to the minimal bytes `resolvePubkeyValue` interprets: the raw\n * pubkey for CONSTANT, a single account-index byte for ACCOUNT_PATH. ARGUMENT_PATH\n * carries no pubkey, so its payload is empty (the resolver ignores it).\n */\nexport function fromCalValue(value: CalValue): ParsedValue {\n const source = VALUE_SOURCE_BY_NAME[value.source];\n if (source === undefined) {\n decodeError(`unknown VALUE source \"${value.source}\"`);\n }\n let payload: Uint8Array = new Uint8Array();\n if (value.source === \"CONSTANT\") {\n const bytes =\n value.data !== undefined ? hexaStringToBuffer(value.data) : null;\n if (bytes === null) {\n decodeError(`invalid CONSTANT hex \"${value.data ?? \"\"}\"`);\n }\n payload = bytes;\n } else if (\n value.source === \"ACCOUNT_PATH\" &&\n value.account_index !== undefined\n ) {\n payload = Uint8Array.from([value.account_index]);\n }\n return { source, payload };\n}\n\nexport function fromCalTokenValue(tokenValue: CalTokenValue): ParsedTokenValue {\n const kind = TOKEN_KIND_BY_NAME[tokenValue.kind];\n if (kind === undefined) {\n decodeError(`unknown token_value kind \"${tokenValue.kind}\"`);\n }\n return {\n kind,\n value: tokenValue.value ? fromCalValue(tokenValue.value) : undefined,\n accountIndex: tokenValue.account_index,\n };\n}\n\n/**\n * `VALUE_FLOW_PORT.OPTIONAL_ACCOUNT_STRATEGY`: absent defaults to `PROGRAM_ID`\n * (spec); any unrecognized value is rejected rather than silently treated as\n * `PROGRAM_ID`.\n */\nfunction fromCalOptionalAccountStrategy(\n name: string | undefined,\n): OptionalAccountStrategy {\n switch (name) {\n case undefined:\n case \"PROGRAM_ID\":\n return OptionalAccountStrategy.PROGRAM_ID;\n case \"OMITTED\":\n return OptionalAccountStrategy.OMITTED;\n default:\n return decodeError(`unknown optional_account_strategy \"${name}\"`);\n }\n}\n\nexport function fromCalValueFlowPort(\n port: CalValueFlowPort,\n): ParsedValueFlowPort {\n return {\n // CAL always emits the ordered candidate list `account_indices` (length 1\n // for the common single-account port).\n accountIndices: port.account_indices,\n optionalAccountStrategy: fromCalOptionalAccountStrategy(\n port.optional_account_strategy,\n ),\n tokenValue: fromCalTokenValue(port.token_value),\n };\n}\n\nexport function fromCalAccountReset(\n reset: CalAccountReset,\n): ParsedAccountReset {\n return {\n accountIndex: reset.account_index,\n requirePreBalanceZero: reset.require_pre_balance_zero ?? false,\n };\n}\n\nexport function fromCalDisplayField(\n field: CalDisplayField,\n): ParsedDisplayField {\n return {\n paramType: PARAM_TYPE_BY_NAME[field.param.type],\n value: field.param.value ? fromCalValue(field.param.value) : undefined,\n token: field.param.token ? fromCalValue(field.param.token) : undefined,\n };\n}\n\nexport function fromCalInstructionInfo(\n idlDescriptor: CalIdlDescriptor,\n mintAssociations: CalMintAssociation[],\n): ParsedInstructionInfo {\n return {\n typePool: poolFromJson(idlDescriptor.type_pool),\n rootType: idlDescriptor.root_type,\n mintAssociations: mintAssociations.map<MintAssociation>((association) => ({\n accountIndex: association.account_index,\n mintIndex: association.mint_index,\n })),\n };\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,wBAAAC,EAAA,2BAAAC,EAAA,sBAAAC,EAAA,iBAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAR,GAAA,IAAAS,EAAmC,2CAEnCC,EAA6B,yDAW7BC,EAWO,qBAEP,MAAMC,EAA8D,CAClE,cAAe,EACf,aAAc,EACd,SAAU,CACZ,EAEMC,EAA0D,CAC9D,OAAQ,EACR,QAAS,EACT,KAAM,EACN,OAAQ,CACV,EAQA,SAASC,EAAYC,EAAwB,CAC3C,MAAM,IAAI,MAAM,yCAAyCA,CAAO,EAAE,CACpE,CAGA,MAAMC,EAAuD,CAC3D,IAAK,EACL,OAAQ,EACR,aAAc,EACd,SAAU,EACV,SAAU,EACV,KAAM,EACN,KAAM,EACN,aAAc,EACd,QAAS,EACT,OAAQ,CACV,EAQO,SAASV,EAAaW,EAA8B,CACzD,MAAMC,EAASN,EAAqBK,EAAM,MAAM,EAC5CC,IAAW,QACbJ,EAAY,yBAAyBG,EAAM,MAAM,GAAG,EAEtD,IAAIE,EAAsB,IAAI,WAC9B,GAAIF,EAAM,SAAW,WAAY,CAC/B,MAAMG,EACJH,EAAM,OAAS,UAAY,sBAAmBA,EAAM,IAAI,EAAI,KAC1DG,IAAU,MACZN,EAAY,yBAAyBG,EAAM,MAAQ,EAAE,GAAG,EAE1DE,EAAUC,CACZ,MACEH,EAAM,SAAW,gBACjBA,EAAM,gBAAkB,SAExBE,EAAU,WAAW,KAAK,CAACF,EAAM,aAAa,CAAC,GAEjD,MAAO,CAAE,OAAAC,EAAQ,QAAAC,CAAQ,CAC3B,CAEO,SAASd,EAAkBgB,EAA6C,CAC7E,MAAMC,EAAOT,EAAmBQ,EAAW,IAAI,EAC/C,OAAIC,IAAS,QACXR,EAAY,6BAA6BO,EAAW,IAAI,GAAG,EAEtD,CACL,KAAAC,EACA,MAAOD,EAAW,MAAQf,EAAae,EAAW,KAAK,EAAI,OAC3D,aAAcA,EAAW,aAC3B,CACF,CAOA,SAASE,EACPC,EACyB,CACzB,OAAQA,EAAM,CACZ,KAAK,OACL,IAAK,aACH,OAAO,0BAAwB,WACjC,IAAK,UACH,OAAO,0BAAwB,QACjC,QACE,OAAOV,EAAY,sCAAsCU,CAAI,GAAG,CACpE,CACF,CAEO,SAASjB,EACdkB,EACqB,CACrB,MAAO,CAGL,eAAgBA,EAAK,gBACrB,wBAAyBF,EACvBE,EAAK,yBACP,EACA,WAAYpB,EAAkBoB,EAAK,WAAW,CAChD,CACF,CAEO,SAASvB,EACdwB,EACoB,CACpB,MAAO,CACL,aAAcA,EAAM,cACpB,sBAAuBA,EAAM,0BAA4B,EAC3D,CACF,CAEO,SAASvB,EACdwB,EACoB,CACpB,MAAO,CACL,UAAWX,EAAmBW,EAAM,MAAM,IAAI,EAC9C,MAAOA,EAAM,MAAM,MAAQrB,EAAaqB,EAAM,MAAM,KAAK,EAAI,OAC7D,MAAOA,EAAM,MAAM,MAAQrB,EAAaqB,EAAM,MAAM,KAAK,EAAI,MAC/D,CACF,CAEO,SAASvB,EACdwB,EACAC,EACuB,CACvB,MAAO,CACL,YAAU,gBAAaD,EAAc,SAAS,EAC9C,SAAUA,EAAc,UACxB,iBAAkBC,EAAiB,IAAsBC,IAAiB,CACxE,aAAcA,EAAY,cAC1B,UAAWA,EAAY,UACzB,EAAE,CACJ,CACF",
6
6
  "names": ["fromCal_exports", "__export", "fromCalAccountReset", "fromCalDisplayField", "fromCalInstructionInfo", "fromCalTokenValue", "fromCalValue", "fromCalValueFlowPort", "__toCommonJS", "import_device_management_kit", "import_idl_type_pool", "import_records", "VALUE_SOURCE_BY_NAME", "TOKEN_KIND_BY_NAME", "decodeError", "message", "PARAM_TYPE_BY_NAME", "value", "source", "payload", "bytes", "tokenValue", "kind", "fromCalOptionalAccountStrategy", "name", "port", "reset", "field", "idlDescriptor", "mintAssociations", "association"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("./fromCal"),e=require("./records");describe("fromCalValue",()=>{it("maps CONSTANT hex to its raw bytes",()=>{const o=(0,t.fromCalValue)({source:"CONSTANT",data:"00ff10"});expect(o.source).toBe(e.ValueSource.CONSTANT),expect(Array.from(o.payload)).toEqual([0,255,16])}),it("maps ACCOUNT_PATH to a single index byte",()=>{const o=(0,t.fromCalValue)({source:"ACCOUNT_PATH",account_index:5});expect(o.source).toBe(e.ValueSource.ACCOUNT_PATH),expect(Array.from(o.payload)).toEqual([5])}),it("maps ARGUMENT_PATH with an empty payload",()=>{const o=(0,t.fromCalValue)({source:"ARGUMENT_PATH",path:{steps:[1]}});expect(o.source).toBe(e.ValueSource.ARGUMENT_PATH),expect(o.payload.length).toBe(0)}),it("rejects an unknown VALUE source",()=>{expect(()=>(0,t.fromCalValue)({source:"WHAT"})).toThrow(/unknown VALUE source/)}),it("rejects invalid / missing CONSTANT hex",()=>{expect(()=>(0,t.fromCalValue)({source:"CONSTANT",data:"zz"})).toThrow(/invalid CONSTANT hex/),expect(()=>(0,t.fromCalValue)({source:"CONSTANT"})).toThrow(/invalid CONSTANT hex/)})});describe("fromCalTokenValue",()=>{it("maps a known kind",()=>{expect((0,t.fromCalTokenValue)({kind:"RESOLVE"}).kind).toBe(e.TokenKind.RESOLVE)}),it("rejects an unknown kind",()=>{expect(()=>(0,t.fromCalTokenValue)({kind:"NOPE"})).toThrow(/unknown token_value kind/)})});describe("fromCalValueFlowPort optional account strategy",()=>{it("defaults to PROGRAM_ID when absent",()=>{expect((0,t.fromCalValueFlowPort)({account_index:0}).optionalAccountStrategy).toBe(e.OptionalAccountStrategy.PROGRAM_ID)}),it("maps OMITTED",()=>{expect((0,t.fromCalValueFlowPort)({account_indices:[0,1],optional_account_strategy:"OMITTED"}).optionalAccountStrategy).toBe(e.OptionalAccountStrategy.OMITTED)}),it("rejects an unknown strategy",()=>{expect(()=>(0,t.fromCalValueFlowPort)({account_index:0,optional_account_strategy:"program_id"})).toThrow(/unknown optional_account_strategy/)})});
1
+ "use strict";var e=require("./fromCal"),t=require("./records");describe("fromCalValue",()=>{it("maps CONSTANT hex to its raw bytes",()=>{const o=(0,e.fromCalValue)({source:"CONSTANT",data:"00ff10"});expect(o.source).toBe(t.ValueSource.CONSTANT),expect(Array.from(o.payload)).toEqual([0,255,16])}),it("maps ACCOUNT_PATH to a single index byte",()=>{const o=(0,e.fromCalValue)({source:"ACCOUNT_PATH",account_index:5});expect(o.source).toBe(t.ValueSource.ACCOUNT_PATH),expect(Array.from(o.payload)).toEqual([5])}),it("maps ARGUMENT_PATH with an empty payload",()=>{const o=(0,e.fromCalValue)({source:"ARGUMENT_PATH",path:{steps:[1]}});expect(o.source).toBe(t.ValueSource.ARGUMENT_PATH),expect(o.payload.length).toBe(0)}),it("rejects an unknown VALUE source",()=>{expect(()=>(0,e.fromCalValue)({source:"WHAT"})).toThrow(/unknown VALUE source/)}),it("rejects invalid / missing CONSTANT hex",()=>{expect(()=>(0,e.fromCalValue)({source:"CONSTANT",data:"zz"})).toThrow(/invalid CONSTANT hex/),expect(()=>(0,e.fromCalValue)({source:"CONSTANT"})).toThrow(/invalid CONSTANT hex/)})});describe("fromCalTokenValue",()=>{it("maps a known kind",()=>{expect((0,e.fromCalTokenValue)({kind:"RESOLVE"}).kind).toBe(t.TokenKind.RESOLVE)}),it("rejects an unknown kind",()=>{expect(()=>(0,e.fromCalTokenValue)({kind:"NOPE"})).toThrow(/unknown token_value kind/)})});describe("fromCalValueFlowPort optional account strategy",()=>{it("defaults to PROGRAM_ID when absent",()=>{expect((0,e.fromCalValueFlowPort)({account_indices:[0],token_value:{kind:"NATIVE"}}).optionalAccountStrategy).toBe(t.OptionalAccountStrategy.PROGRAM_ID)}),it("maps OMITTED",()=>{expect((0,e.fromCalValueFlowPort)({account_indices:[0,1],optional_account_strategy:"OMITTED",token_value:{kind:"NATIVE"}}).optionalAccountStrategy).toBe(t.OptionalAccountStrategy.OMITTED)}),it("rejects an unknown strategy",()=>{expect(()=>(0,e.fromCalValueFlowPort)({account_indices:[0],optional_account_strategy:"program_id",token_value:{kind:"NATIVE"}})).toThrow(/unknown optional_account_strategy/)})});
2
2
  //# sourceMappingURL=fromCal.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/fromCal.test.ts"],
4
- "sourcesContent": ["import {\n fromCalTokenValue,\n fromCalValue,\n fromCalValueFlowPort,\n} from \"./fromCal\";\nimport { OptionalAccountStrategy, TokenKind, ValueSource } from \"./records\";\n\ndescribe(\"fromCalValue\", () => {\n it(\"maps CONSTANT hex to its raw bytes\", () => {\n const out = fromCalValue({ source: \"CONSTANT\", data: \"00ff10\" });\n expect(out.source).toBe(ValueSource.CONSTANT);\n expect(Array.from(out.payload)).toEqual([0x00, 0xff, 0x10]);\n });\n\n it(\"maps ACCOUNT_PATH to a single index byte\", () => {\n const out = fromCalValue({ source: \"ACCOUNT_PATH\", account_index: 5 });\n expect(out.source).toBe(ValueSource.ACCOUNT_PATH);\n expect(Array.from(out.payload)).toEqual([5]);\n });\n\n it(\"maps ARGUMENT_PATH with an empty payload\", () => {\n const out = fromCalValue({ source: \"ARGUMENT_PATH\", path: { steps: [1] } });\n expect(out.source).toBe(ValueSource.ARGUMENT_PATH);\n expect(out.payload.length).toBe(0);\n });\n\n it(\"rejects an unknown VALUE source\", () => {\n expect(() => fromCalValue({ source: \"WHAT\" })).toThrow(\n /unknown VALUE source/,\n );\n });\n\n it(\"rejects invalid / missing CONSTANT hex\", () => {\n expect(() => fromCalValue({ source: \"CONSTANT\", data: \"zz\" })).toThrow(\n /invalid CONSTANT hex/,\n );\n expect(() => fromCalValue({ source: \"CONSTANT\" })).toThrow(\n /invalid CONSTANT hex/,\n );\n });\n});\n\ndescribe(\"fromCalTokenValue\", () => {\n it(\"maps a known kind\", () => {\n expect(fromCalTokenValue({ kind: \"RESOLVE\" }).kind).toBe(TokenKind.RESOLVE);\n });\n\n it(\"rejects an unknown kind\", () => {\n expect(() => fromCalTokenValue({ kind: \"NOPE\" })).toThrow(\n /unknown token_value kind/,\n );\n });\n});\n\ndescribe(\"fromCalValueFlowPort optional account strategy\", () => {\n it(\"defaults to PROGRAM_ID when absent\", () => {\n expect(\n fromCalValueFlowPort({ account_index: 0 }).optionalAccountStrategy,\n ).toBe(OptionalAccountStrategy.PROGRAM_ID);\n });\n\n it(\"maps OMITTED\", () => {\n expect(\n fromCalValueFlowPort({\n account_indices: [0, 1],\n optional_account_strategy: \"OMITTED\",\n }).optionalAccountStrategy,\n ).toBe(OptionalAccountStrategy.OMITTED);\n });\n\n it(\"rejects an unknown strategy\", () => {\n expect(() =>\n fromCalValueFlowPort({\n account_index: 0,\n optional_account_strategy: \"program_id\",\n }),\n ).toThrow(/unknown optional_account_strategy/);\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAIO,qBACPC,EAAgE,qBAEhE,SAAS,eAAgB,IAAM,CAC7B,GAAG,qCAAsC,IAAM,CAC7C,MAAMC,KAAM,gBAAa,CAAE,OAAQ,WAAY,KAAM,QAAS,CAAC,EAC/D,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,QAAQ,EAC5C,OAAO,MAAM,KAAKA,EAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAM,IAAM,EAAI,CAAC,CAC5D,CAAC,EAED,GAAG,2CAA4C,IAAM,CACnD,MAAMA,KAAM,gBAAa,CAAE,OAAQ,eAAgB,cAAe,CAAE,CAAC,EACrE,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,YAAY,EAChD,OAAO,MAAM,KAAKA,EAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC,EAED,GAAG,2CAA4C,IAAM,CACnD,MAAMA,KAAM,gBAAa,CAAE,OAAQ,gBAAiB,KAAM,CAAE,MAAO,CAAC,CAAC,CAAE,CAAE,CAAC,EAC1E,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,aAAa,EACjD,OAAOA,EAAI,QAAQ,MAAM,EAAE,KAAK,CAAC,CACnC,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,OAAO,OAAM,gBAAa,CAAE,OAAQ,MAAO,CAAC,CAAC,EAAE,QAC7C,sBACF,CACF,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OAAO,OAAM,gBAAa,CAAE,OAAQ,WAAY,KAAM,IAAK,CAAC,CAAC,EAAE,QAC7D,sBACF,EACA,OAAO,OAAM,gBAAa,CAAE,OAAQ,UAAW,CAAC,CAAC,EAAE,QACjD,sBACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,oBAAqB,IAAM,CAClC,GAAG,oBAAqB,IAAM,CAC5B,UAAO,qBAAkB,CAAE,KAAM,SAAU,CAAC,EAAE,IAAI,EAAE,KAAK,YAAU,OAAO,CAC5E,CAAC,EAED,GAAG,0BAA2B,IAAM,CAClC,OAAO,OAAM,qBAAkB,CAAE,KAAM,MAAO,CAAC,CAAC,EAAE,QAChD,0BACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,iDAAkD,IAAM,CAC/D,GAAG,qCAAsC,IAAM,CAC7C,UACE,wBAAqB,CAAE,cAAe,CAAE,CAAC,EAAE,uBAC7C,EAAE,KAAK,0BAAwB,UAAU,CAC3C,CAAC,EAED,GAAG,eAAgB,IAAM,CACvB,UACE,wBAAqB,CACnB,gBAAiB,CAAC,EAAG,CAAC,EACtB,0BAA2B,SAC7B,CAAC,EAAE,uBACL,EAAE,KAAK,0BAAwB,OAAO,CACxC,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OAAO,OACL,wBAAqB,CACnB,cAAe,EACf,0BAA2B,YAC7B,CAAC,CACH,EAAE,QAAQ,mCAAmC,CAC/C,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import {\n fromCalTokenValue,\n fromCalValue,\n fromCalValueFlowPort,\n} from \"./fromCal\";\nimport { OptionalAccountStrategy, TokenKind, ValueSource } from \"./records\";\n\ndescribe(\"fromCalValue\", () => {\n it(\"maps CONSTANT hex to its raw bytes\", () => {\n const out = fromCalValue({ source: \"CONSTANT\", data: \"00ff10\" });\n expect(out.source).toBe(ValueSource.CONSTANT);\n expect(Array.from(out.payload)).toEqual([0x00, 0xff, 0x10]);\n });\n\n it(\"maps ACCOUNT_PATH to a single index byte\", () => {\n const out = fromCalValue({ source: \"ACCOUNT_PATH\", account_index: 5 });\n expect(out.source).toBe(ValueSource.ACCOUNT_PATH);\n expect(Array.from(out.payload)).toEqual([5]);\n });\n\n it(\"maps ARGUMENT_PATH with an empty payload\", () => {\n const out = fromCalValue({ source: \"ARGUMENT_PATH\", path: { steps: [1] } });\n expect(out.source).toBe(ValueSource.ARGUMENT_PATH);\n expect(out.payload.length).toBe(0);\n });\n\n it(\"rejects an unknown VALUE source\", () => {\n expect(() => fromCalValue({ source: \"WHAT\" })).toThrow(\n /unknown VALUE source/,\n );\n });\n\n it(\"rejects invalid / missing CONSTANT hex\", () => {\n expect(() => fromCalValue({ source: \"CONSTANT\", data: \"zz\" })).toThrow(\n /invalid CONSTANT hex/,\n );\n expect(() => fromCalValue({ source: \"CONSTANT\" })).toThrow(\n /invalid CONSTANT hex/,\n );\n });\n});\n\ndescribe(\"fromCalTokenValue\", () => {\n it(\"maps a known kind\", () => {\n expect(fromCalTokenValue({ kind: \"RESOLVE\" }).kind).toBe(TokenKind.RESOLVE);\n });\n\n it(\"rejects an unknown kind\", () => {\n expect(() => fromCalTokenValue({ kind: \"NOPE\" })).toThrow(\n /unknown token_value kind/,\n );\n });\n});\n\ndescribe(\"fromCalValueFlowPort optional account strategy\", () => {\n it(\"defaults to PROGRAM_ID when absent\", () => {\n expect(\n fromCalValueFlowPort({\n account_indices: [0],\n token_value: { kind: \"NATIVE\" },\n }).optionalAccountStrategy,\n ).toBe(OptionalAccountStrategy.PROGRAM_ID);\n });\n\n it(\"maps OMITTED\", () => {\n expect(\n fromCalValueFlowPort({\n account_indices: [0, 1],\n optional_account_strategy: \"OMITTED\",\n token_value: { kind: \"NATIVE\" },\n }).optionalAccountStrategy,\n ).toBe(OptionalAccountStrategy.OMITTED);\n });\n\n it(\"rejects an unknown strategy\", () => {\n expect(() =>\n fromCalValueFlowPort({\n account_indices: [0],\n optional_account_strategy: \"program_id\",\n token_value: { kind: \"NATIVE\" },\n }),\n ).toThrow(/unknown optional_account_strategy/);\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAIO,qBACPC,EAAgE,qBAEhE,SAAS,eAAgB,IAAM,CAC7B,GAAG,qCAAsC,IAAM,CAC7C,MAAMC,KAAM,gBAAa,CAAE,OAAQ,WAAY,KAAM,QAAS,CAAC,EAC/D,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,QAAQ,EAC5C,OAAO,MAAM,KAAKA,EAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAM,IAAM,EAAI,CAAC,CAC5D,CAAC,EAED,GAAG,2CAA4C,IAAM,CACnD,MAAMA,KAAM,gBAAa,CAAE,OAAQ,eAAgB,cAAe,CAAE,CAAC,EACrE,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,YAAY,EAChD,OAAO,MAAM,KAAKA,EAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC,EAED,GAAG,2CAA4C,IAAM,CACnD,MAAMA,KAAM,gBAAa,CAAE,OAAQ,gBAAiB,KAAM,CAAE,MAAO,CAAC,CAAC,CAAE,CAAE,CAAC,EAC1E,OAAOA,EAAI,MAAM,EAAE,KAAK,cAAY,aAAa,EACjD,OAAOA,EAAI,QAAQ,MAAM,EAAE,KAAK,CAAC,CACnC,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,OAAO,OAAM,gBAAa,CAAE,OAAQ,MAAO,CAAC,CAAC,EAAE,QAC7C,sBACF,CACF,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OAAO,OAAM,gBAAa,CAAE,OAAQ,WAAY,KAAM,IAAK,CAAC,CAAC,EAAE,QAC7D,sBACF,EACA,OAAO,OAAM,gBAAa,CAAE,OAAQ,UAAW,CAAC,CAAC,EAAE,QACjD,sBACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,oBAAqB,IAAM,CAClC,GAAG,oBAAqB,IAAM,CAC5B,UAAO,qBAAkB,CAAE,KAAM,SAAU,CAAC,EAAE,IAAI,EAAE,KAAK,YAAU,OAAO,CAC5E,CAAC,EAED,GAAG,0BAA2B,IAAM,CAClC,OAAO,OAAM,qBAAkB,CAAE,KAAM,MAAO,CAAC,CAAC,EAAE,QAChD,0BACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,iDAAkD,IAAM,CAC/D,GAAG,qCAAsC,IAAM,CAC7C,UACE,wBAAqB,CACnB,gBAAiB,CAAC,CAAC,EACnB,YAAa,CAAE,KAAM,QAAS,CAChC,CAAC,EAAE,uBACL,EAAE,KAAK,0BAAwB,UAAU,CAC3C,CAAC,EAED,GAAG,eAAgB,IAAM,CACvB,UACE,wBAAqB,CACnB,gBAAiB,CAAC,EAAG,CAAC,EACtB,0BAA2B,UAC3B,YAAa,CAAE,KAAM,QAAS,CAChC,CAAC,EAAE,uBACL,EAAE,KAAK,0BAAwB,OAAO,CACxC,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OAAO,OACL,wBAAqB,CACnB,gBAAiB,CAAC,CAAC,EACnB,0BAA2B,aAC3B,YAAa,CAAE,KAAM,QAAS,CAChC,CAAC,CACH,EAAE,QAAQ,mCAAmC,CAC/C,CAAC,CACH,CAAC",
6
6
  "names": ["import_fromCal", "import_records", "out"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(s,t)=>{for(var r in t)a(s,r,{get:t[r],enumerable:!0})},y=(s,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of u(t))!d.call(s,e)&&e!==r&&a(s,e,{get:()=>t[e],enumerable:!(o=P(t,e))||o.enumerable});return s};var A=s=>y(a({},"__esModule",{value:!0}),s);var m={};l(m,{OptionalAccountStrategy:()=>x,PARAM_TYPE_TOKEN_AMOUNT:()=>i,PARAM_TYPE_TRUSTED_NAME:()=>c,TokenKind:()=>p,ValueSource:()=>n});module.exports=A(m);var n=(o=>(o[o.ARGUMENT_PATH=0]="ARGUMENT_PATH",o[o.ACCOUNT_PATH=1]="ACCOUNT_PATH",o[o.CONSTANT=2]="CONSTANT",o))(n||{}),p=(e=>(e[e.DIRECT=0]="DIRECT",e[e.RESOLVE=1]="RESOLVE",e[e.NULL=2]="NULL",e[e.NATIVE=3]="NATIVE",e))(p||{}),x=(r=>(r[r.PROGRAM_ID=0]="PROGRAM_ID",r[r.OMITTED=1]="OMITTED",r))(x||{});const c=7,i=2;0&&(module.exports={OptionalAccountStrategy,PARAM_TYPE_TOKEN_AMOUNT,PARAM_TYPE_TRUSTED_NAME,TokenKind,ValueSource});
1
+ "use strict";var a=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var d=(s,t)=>{for(var r in t)a(s,r,{get:t[r],enumerable:!0})},l=(s,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of u(t))!A.call(s,e)&&e!==r&&a(s,e,{get:()=>t[e],enumerable:!(o=P(t,e))||o.enumerable});return s};var c=s=>l(a({},"__esModule",{value:!0}),s);var T={};d(T,{OptionalAccountStrategy:()=>x,PARAM_TYPE_ACCOUNT:()=>i,PARAM_TYPE_TOKEN_AMOUNT:()=>m,PARAM_TYPE_TRUSTED_NAME:()=>y,TokenKind:()=>p,ValueSource:()=>n});module.exports=c(T);var n=(o=>(o[o.ARGUMENT_PATH=0]="ARGUMENT_PATH",o[o.ACCOUNT_PATH=1]="ACCOUNT_PATH",o[o.CONSTANT=2]="CONSTANT",o))(n||{}),p=(e=>(e[e.DIRECT=0]="DIRECT",e[e.RESOLVE=1]="RESOLVE",e[e.NULL=2]="NULL",e[e.NATIVE=3]="NATIVE",e))(p||{}),x=(r=>(r[r.PROGRAM_ID=0]="PROGRAM_ID",r[r.OMITTED=1]="OMITTED",r))(x||{});const y=7,i=8,m=2;0&&(module.exports={OptionalAccountStrategy,PARAM_TYPE_ACCOUNT,PARAM_TYPE_TOKEN_AMOUNT,PARAM_TYPE_TRUSTED_NAME,TokenKind,ValueSource});
2
2
  //# sourceMappingURL=records.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/records.ts"],
4
- "sourcesContent": ["import { type Entry } from \"@internal/app-binder/clear-sign/idl-type-pool\";\n\n/** Where a VALUE is sourced from (`VALUE.SOURCE`). */\nexport enum ValueSource {\n ARGUMENT_PATH = 0x00,\n ACCOUNT_PATH = 0x01,\n CONSTANT = 0x02,\n}\n\n/** How a port's token identity is resolved (`TOKEN_VALUE.KIND`). */\nexport enum TokenKind {\n DIRECT = 0x00,\n RESOLVE = 0x01,\n NULL = 0x02,\n NATIVE = 0x03,\n}\n\n/**\n * How a candidate-array port's optional (non-final) candidates are detected as\n * *unset* (`VALUE_FLOW_PORT.OPTIONAL_ACCOUNT_STRATEGY`). Only meaningful when a\n * port carries more than one candidate index; defaults to `PROGRAM_ID`.\n */\nexport enum OptionalAccountStrategy {\n /** Slot is unset when its address equals the instruction's program id. */\n PROGRAM_ID = 0x00,\n /** Slot is unset only when out of range (an omitted trailing account). */\n OMITTED = 0x01,\n}\n\n/** `DISPLAY_FIELD.PARAM_TYPE` value for an address resolved via trusted name. */\nexport const PARAM_TYPE_TRUSTED_NAME = 0x07;\n\n/** `DISPLAY_FIELD.PARAM_TYPE` value for a token amount with a token reference. */\nexport const PARAM_TYPE_TOKEN_AMOUNT = 0x02;\n\nexport type ParsedValue = { source: ValueSource; payload: Uint8Array };\n\nexport type ParsedTokenValue = {\n kind: TokenKind;\n value?: ParsedValue;\n accountIndex?: number;\n};\n\nexport type ParsedValueFlowPort = {\n /**\n * Ordered candidate account indices (length 1 for the common single-account\n * port). Resolved to the first *provided* candidate; see\n * `resolvePortAccountIndex`.\n */\n accountIndices: number[];\n optionalAccountStrategy: OptionalAccountStrategy;\n tokenValue?: ParsedTokenValue;\n};\n\nexport type ParsedAccountReset = {\n accountIndex: number;\n requirePreBalanceZero: boolean;\n};\n\nexport type ParsedDisplayField = {\n paramType?: number;\n value?: ParsedValue;\n /**\n * The `PARAM_TOKEN_AMOUNT.TOKEN` reference, populated only for a\n * `PARAM_TYPE_TOKEN_AMOUNT` field. Identifies the token whose `TOKEN_INFO`\n * the amount formatter needs; may point at a mint or, via a TX-derived\n * `MINT_ASSOC` binding, at a token account.\n */\n token?: ParsedValue;\n};\n\nexport type MintAssociation = { accountIndex: number; mintIndex: number };\n\nexport type ParsedInstructionInfo = {\n /** The IDL type pool, built from CAL's `type_pool` JSON (see `poolFromJson`). */\n typePool: Entry[];\n rootType: number;\n mintAssociations: MintAssociation[];\n};\n\n/** An instruction's INSTRUCTION_INFO + its substructures, grouped by kind. */\nexport type ParsedInstruction = {\n info: ParsedInstructionInfo;\n valueFlowPorts: ParsedValueFlowPort[];\n accountResets: ParsedAccountReset[];\n displayFields: ParsedDisplayField[];\n};\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,4BAAAC,EAAA,4BAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAP,GAGO,IAAKM,OACVA,IAAA,cAAgB,GAAhB,gBACAA,IAAA,aAAe,GAAf,eACAA,IAAA,SAAW,GAAX,WAHUA,OAAA,IAOAD,OACVA,IAAA,OAAS,GAAT,SACAA,IAAA,QAAU,GAAV,UACAA,IAAA,KAAO,GAAP,OACAA,IAAA,OAAS,GAAT,SAJUA,OAAA,IAYAH,OAEVA,IAAA,WAAa,GAAb,aAEAA,IAAA,QAAU,GAAV,UAJUA,OAAA,IAQL,MAAME,EAA0B,EAG1BD,EAA0B",
6
- "names": ["records_exports", "__export", "OptionalAccountStrategy", "PARAM_TYPE_TOKEN_AMOUNT", "PARAM_TYPE_TRUSTED_NAME", "TokenKind", "ValueSource", "__toCommonJS"]
4
+ "sourcesContent": ["import { type Entry } from \"@internal/app-binder/clear-sign/idl-type-pool\";\n\n/** Where a VALUE is sourced from (`VALUE.SOURCE`). */\nexport enum ValueSource {\n ARGUMENT_PATH = 0x00,\n ACCOUNT_PATH = 0x01,\n CONSTANT = 0x02,\n}\n\n/** How a port's token identity is resolved (`TOKEN_VALUE.KIND`). */\nexport enum TokenKind {\n DIRECT = 0x00,\n RESOLVE = 0x01,\n NULL = 0x02,\n NATIVE = 0x03,\n}\n\n/**\n * How a candidate-array port's optional (non-final) candidates are detected as\n * *unset* (`VALUE_FLOW_PORT.OPTIONAL_ACCOUNT_STRATEGY`). Only meaningful when a\n * port carries more than one candidate index; defaults to `PROGRAM_ID`.\n */\nexport enum OptionalAccountStrategy {\n /** Slot is unset when its address equals the instruction's program id. */\n PROGRAM_ID = 0x00,\n /** Slot is unset only when out of range (an omitted trailing account). */\n OMITTED = 0x01,\n}\n\n/** `DISPLAY_FIELD.PARAM_TYPE` value for an address resolved via trusted name. */\nexport const PARAM_TYPE_TRUSTED_NAME = 0x07;\n\n/**\n * `DISPLAY_FIELD.PARAM_TYPE` value for a raw account address (base58 short\n * form). We attempt a trusted-name lookup for these too, so the device can show\n * a CAL name (e.g. a token mint's name) instead of an opaque pubkey when one is\n * available; it falls back to base58 otherwise.\n */\nexport const PARAM_TYPE_ACCOUNT = 0x08;\n\n/** `DISPLAY_FIELD.PARAM_TYPE` value for a token amount with a token reference. */\nexport const PARAM_TYPE_TOKEN_AMOUNT = 0x02;\n\nexport type ParsedValue = { source: ValueSource; payload: Uint8Array };\n\nexport type ParsedTokenValue = {\n kind: TokenKind;\n value?: ParsedValue;\n accountIndex?: number;\n};\n\nexport type ParsedValueFlowPort = {\n /**\n * Ordered candidate account indices (length 1 for the common single-account\n * port). Resolved to the first *provided* candidate; see\n * `resolvePortAccountIndex`.\n */\n accountIndices: number[];\n optionalAccountStrategy: OptionalAccountStrategy;\n tokenValue?: ParsedTokenValue;\n};\n\nexport type ParsedAccountReset = {\n accountIndex: number;\n requirePreBalanceZero: boolean;\n};\n\nexport type ParsedDisplayField = {\n paramType?: number;\n value?: ParsedValue;\n /**\n * The `PARAM_TOKEN_AMOUNT.TOKEN` reference, populated only for a\n * `PARAM_TYPE_TOKEN_AMOUNT` field. Identifies the token whose `TOKEN_INFO`\n * the amount formatter needs; may point at a mint or, via a TX-derived\n * `MINT_ASSOC` binding, at a token account.\n */\n token?: ParsedValue;\n};\n\nexport type MintAssociation = { accountIndex: number; mintIndex: number };\n\nexport type ParsedInstructionInfo = {\n /** The IDL type pool, built from CAL's `type_pool` JSON (see `poolFromJson`). */\n typePool: Entry[];\n rootType: number;\n mintAssociations: MintAssociation[];\n};\n\n/** An instruction's INSTRUCTION_INFO + its substructures, grouped by kind. */\nexport type ParsedInstruction = {\n info: ParsedInstructionInfo;\n valueFlowPorts: ParsedValueFlowPort[];\n accountResets: ParsedAccountReset[];\n displayFields: ParsedDisplayField[];\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,uBAAAC,EAAA,4BAAAC,EAAA,4BAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAR,GAGO,IAAKO,OACVA,IAAA,cAAgB,GAAhB,gBACAA,IAAA,aAAe,GAAf,eACAA,IAAA,SAAW,GAAX,WAHUA,OAAA,IAOAD,OACVA,IAAA,OAAS,GAAT,SACAA,IAAA,QAAU,GAAV,UACAA,IAAA,KAAO,GAAP,OACAA,IAAA,OAAS,GAAT,SAJUA,OAAA,IAYAJ,OAEVA,IAAA,WAAa,GAAb,aAEAA,IAAA,QAAU,GAAV,UAJUA,OAAA,IAQL,MAAMG,EAA0B,EAQ1BF,EAAqB,EAGrBC,EAA0B",
6
+ "names": ["records_exports", "__export", "OptionalAccountStrategy", "PARAM_TYPE_ACCOUNT", "PARAM_TYPE_TOKEN_AMOUNT", "PARAM_TYPE_TRUSTED_NAME", "TokenKind", "ValueSource", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var u=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var o in e)u(t,o,{get:e[o],enumerable:!0})},l=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of c(e))!p.call(t,r)&&r!==o&&u(t,r,{get:()=>e[r],enumerable:!(n=s(e,r))||n.enumerable});return t};var y=t=>l(u({},"__esModule",{value:!0}),t);var E={};f(E,{applyTrustedNameRule:()=>R});module.exports=y(E);var m=require("../../../../app-binder/clear-sign/requirements/records"),d=require("../../../../app-binder/clear-sign/requirements/valueResolution"),a=require("../../../../app-binder/services/bs58Encoder");function R(t,e,o,n=a.DefaultBs58Encoder){for(const r of t.displayFields){if(r.paramType!==m.PARAM_TYPE_TRUSTED_NAME||r.value===void 0)continue;const i=(0,d.resolvePubkeyValue)(r.value,e,n);i!==void 0&&o.addTrustedName(i)}}0&&(module.exports={applyTrustedNameRule});
1
+ "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},l=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!c.call(t,r)&&r!==o&&i(t,r,{get:()=>e[r],enumerable:!(n=p(e,r))||n.enumerable});return t};var y=t=>l(i({},"__esModule",{value:!0}),t);var A={};f(A,{applyTrustedNameRule:()=>T});module.exports=y(A);var u=require("../../../../app-binder/clear-sign/requirements/records"),a=require("../../../../app-binder/clear-sign/requirements/valueResolution"),d=require("../../../../app-binder/services/bs58Encoder");function T(t,e,o,n=d.DefaultBs58Encoder){for(const r of t.displayFields){if(r.paramType!==u.PARAM_TYPE_TRUSTED_NAME&&r.paramType!==u.PARAM_TYPE_ACCOUNT||r.value===void 0)continue;const m=(0,a.resolvePubkeyValue)(r.value,e,n);m!==void 0&&o.addTrustedName(m)}}0&&(module.exports={applyTrustedNameRule});
2
2
  //# sourceMappingURL=trustedNameRule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.ts"],
4
- "sourcesContent": ["import { type RequirementInstruction } from \"@internal/app-binder/clear-sign/requirements/model\";\nimport {\n PARAM_TYPE_TRUSTED_NAME,\n type ParsedInstruction,\n} from \"@internal/app-binder/clear-sign/requirements/records\";\nimport { type RequirementAccumulator } from \"@internal/app-binder/clear-sign/requirements/RequirementAccumulator\";\nimport { resolvePubkeyValue } from \"@internal/app-binder/clear-sign/requirements/valueResolution\";\nimport {\n type Bs58Encoder,\n DefaultBs58Encoder,\n} from \"@internal/app-binder/services/bs58Encoder\";\n\n/** Each `PARAM_TRUSTED_NAME` display field targets an address needing a name. */\nexport function applyTrustedNameRule(\n parsed: ParsedInstruction,\n instruction: RequirementInstruction,\n accumulator: RequirementAccumulator,\n bs58Encoder: Bs58Encoder = DefaultBs58Encoder,\n): void {\n for (const field of parsed.displayFields) {\n if (\n field.paramType !== PARAM_TYPE_TRUSTED_NAME ||\n field.value === undefined\n ) {\n continue;\n }\n const target = resolvePubkeyValue(field.value, instruction, bs58Encoder);\n if (target !== undefined) accumulator.addTrustedName(target);\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAGO,gEAEPC,EAAmC,wEACnCC,EAGO,qDAGA,SAASJ,EACdK,EACAC,EACAC,EACAC,EAA2B,qBACrB,CACN,UAAWC,KAASJ,EAAO,cAAe,CACxC,GACEI,EAAM,YAAc,2BACpBA,EAAM,QAAU,OAEhB,SAEF,MAAMC,KAAS,sBAAmBD,EAAM,MAAOH,EAAaE,CAAW,EACnEE,IAAW,QAAWH,EAAY,eAAeG,CAAM,CAC7D,CACF",
4
+ "sourcesContent": ["import { type RequirementInstruction } from \"@internal/app-binder/clear-sign/requirements/model\";\nimport {\n PARAM_TYPE_ACCOUNT,\n PARAM_TYPE_TRUSTED_NAME,\n type ParsedInstruction,\n} from \"@internal/app-binder/clear-sign/requirements/records\";\nimport { type RequirementAccumulator } from \"@internal/app-binder/clear-sign/requirements/RequirementAccumulator\";\nimport { resolvePubkeyValue } from \"@internal/app-binder/clear-sign/requirements/valueResolution\";\nimport {\n type Bs58Encoder,\n DefaultBs58Encoder,\n} from \"@internal/app-binder/services/bs58Encoder\";\n\n/**\n * Each `PARAM_TRUSTED_NAME` or `PARAM_ACCOUNT` display field targets an address\n * that may have a CAL name. For `PARAM_ACCOUNT` this is best-effort: the device\n * shows the name if a descriptor is found and falls back to the base58 address\n * otherwise.\n */\nexport function applyTrustedNameRule(\n parsed: ParsedInstruction,\n instruction: RequirementInstruction,\n accumulator: RequirementAccumulator,\n bs58Encoder: Bs58Encoder = DefaultBs58Encoder,\n): void {\n for (const field of parsed.displayFields) {\n if (\n (field.paramType !== PARAM_TYPE_TRUSTED_NAME &&\n field.paramType !== PARAM_TYPE_ACCOUNT) ||\n field.value === undefined\n ) {\n continue;\n }\n const target = resolvePubkeyValue(field.value, instruction, bs58Encoder);\n if (target !== undefined) accumulator.addTrustedName(target);\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAIO,gEAEPC,EAAmC,wEACnCC,EAGO,qDAQA,SAASJ,EACdK,EACAC,EACAC,EACAC,EAA2B,qBACrB,CACN,UAAWC,KAASJ,EAAO,cAAe,CACxC,GACGI,EAAM,YAAc,2BACnBA,EAAM,YAAc,sBACtBA,EAAM,QAAU,OAEhB,SAEF,MAAMC,KAAS,sBAAmBD,EAAM,MAAOH,EAAaE,CAAW,EACnEE,IAAW,QAAWH,EAAY,eAAeG,CAAM,CAC7D,CACF",
6
6
  "names": ["trustedNameRule_exports", "__export", "applyTrustedNameRule", "__toCommonJS", "import_records", "import_valueResolution", "import_bs58Encoder", "parsed", "instruction", "accumulator", "bs58Encoder", "field", "target"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../../app-binder/clear-sign/requirements/records"),n=require("../../../../app-binder/clear-sign/requirements/RequirementAccumulator"),s=require("../../../../app-binder/services/bs58Encoder"),u=require("./trustedNameRule");function a(t,r){const i={info:{typePool:[],rootType:0,mintAssociations:[]},valueFlowPorts:[],accountResets:[],displayFields:t},c={programId:"P",accounts:r.map(d=>({address:d})),data:new Uint8Array},o=new n.RequirementAccumulator;return(0,u.applyTrustedNameRule)(i,c,o),o.build().trustedNames}describe("applyTrustedNameRule",()=>{it("resolves an ACCOUNT_PATH trusted-name target",()=>{const t=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(1)}}],["ignored","named"]);expect(t).toEqual(["named"])}),it("encodes a 32-byte CONSTANT trusted-name target",()=>{const t=new Uint8Array(32).fill(8),r=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.CONSTANT,payload:t}}],[]);expect(r).toEqual([s.DefaultBs58Encoder.encode(t)])}),it("ignores non-trusted-name fields and unresolved account targets",()=>{const t=a([{paramType:2,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],["a"]);expect(t).toEqual([]);const r=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],[void 0]);expect(r).toEqual([])})});
1
+ "use strict";var e=require("../../../../app-binder/clear-sign/requirements/records"),n=require("../../../../app-binder/clear-sign/requirements/RequirementAccumulator"),s=require("../../../../app-binder/services/bs58Encoder"),u=require("./trustedNameRule");function a(t,r){const d={info:{typePool:[],rootType:0,mintAssociations:[]},valueFlowPorts:[],accountResets:[],displayFields:t},c={programId:"P",accounts:r.map(l=>({address:l})),data:new Uint8Array},o=new n.RequirementAccumulator;return(0,u.applyTrustedNameRule)(d,c,o),o.build().trustedNames}describe("applyTrustedNameRule",()=>{it("resolves an ACCOUNT_PATH trusted-name target",()=>{const t=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(1)}}],["ignored","named"]);expect(t).toEqual(["named"])}),it("encodes a 32-byte CONSTANT trusted-name target",()=>{const t=new Uint8Array(32).fill(8),r=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.CONSTANT,payload:t}}],[]);expect(r).toEqual([s.DefaultBs58Encoder.encode(t)])}),it("resolves an ACCOUNT display field target (best-effort CAL name)",()=>{const t=a([{paramType:e.PARAM_TYPE_ACCOUNT,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],["account"]);expect(t).toEqual(["account"])}),it("deduplicates an address referenced by ACCOUNT and TRUSTED_NAME fields",()=>{const t=a([{paramType:e.PARAM_TYPE_ACCOUNT,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}},{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],["shared"]);expect(t).toEqual(["shared"])}),it("ignores non-trusted-name fields and unresolved account targets",()=>{const t=a([{paramType:2,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],["a"]);expect(t).toEqual([]);const r=a([{paramType:e.PARAM_TYPE_TRUSTED_NAME,value:{source:e.ValueSource.ACCOUNT_PATH,payload:Uint8Array.of(0)}}],[void 0]);expect(r).toEqual([])})});
2
2
  //# sourceMappingURL=trustedNameRule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.ts"],
4
- "sourcesContent": ["import { type RequirementInstruction } from \"@internal/app-binder/clear-sign/requirements/model\";\nimport {\n PARAM_TYPE_TRUSTED_NAME,\n type ParsedDisplayField,\n type ParsedInstruction,\n ValueSource,\n} from \"@internal/app-binder/clear-sign/requirements/records\";\nimport { RequirementAccumulator } from \"@internal/app-binder/clear-sign/requirements/RequirementAccumulator\";\nimport { DefaultBs58Encoder } from \"@internal/app-binder/services/bs58Encoder\";\n\nimport { applyTrustedNameRule } from \"./trustedNameRule\";\n\nfunction run(\n displayFields: ParsedDisplayField[],\n addresses: (string | undefined)[],\n) {\n const parsed: ParsedInstruction = {\n info: { typePool: [], rootType: 0, mintAssociations: [] },\n valueFlowPorts: [],\n accountResets: [],\n displayFields,\n };\n const instruction: RequirementInstruction = {\n programId: \"P\",\n accounts: addresses.map((address) => ({ address })),\n data: new Uint8Array(),\n };\n const accumulator = new RequirementAccumulator();\n applyTrustedNameRule(parsed, instruction, accumulator);\n return accumulator.build().trustedNames;\n}\n\ndescribe(\"applyTrustedNameRule\", () => {\n it(\"resolves an ACCOUNT_PATH trusted-name target\", () => {\n const result = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(1),\n },\n },\n ],\n [\"ignored\", \"named\"],\n );\n expect(result).toEqual([\"named\"]);\n });\n\n it(\"encodes a 32-byte CONSTANT trusted-name target\", () => {\n const addr = new Uint8Array(32).fill(8);\n const result = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: { source: ValueSource.CONSTANT, payload: addr },\n },\n ],\n [],\n );\n expect(result).toEqual([DefaultBs58Encoder.encode(addr)]);\n });\n\n it(\"ignores non-trusted-name fields and unresolved account targets\", () => {\n const nonTrusted = run(\n [\n {\n paramType: 0x02,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [\"a\"],\n );\n expect(nonTrusted).toEqual([]);\n\n const unresolved = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [undefined],\n );\n expect(unresolved).toEqual([]);\n });\n});\n"],
5
- "mappings": "aACA,IAAAA,EAKO,gEACPC,EAAuC,+EACvCC,EAAmC,qDAEnCC,EAAqC,6BAErC,SAASC,EACPC,EACAC,EACA,CACA,MAAMC,EAA4B,CAChC,KAAM,CAAE,SAAU,CAAC,EAAG,SAAU,EAAG,iBAAkB,CAAC,CAAE,EACxD,eAAgB,CAAC,EACjB,cAAe,CAAC,EAChB,cAAAF,CACF,EACMG,EAAsC,CAC1C,UAAW,IACX,SAAUF,EAAU,IAAKG,IAAa,CAAE,QAAAA,CAAQ,EAAE,EAClD,KAAM,IAAI,UACZ,EACMC,EAAc,IAAI,yBACxB,iCAAqBH,EAAQC,EAAaE,CAAW,EAC9CA,EAAY,MAAM,EAAE,YAC7B,CAEA,SAAS,uBAAwB,IAAM,CACrC,GAAG,+CAAgD,IAAM,CACvD,MAAMC,EAASP,EACb,CACE,CACE,UAAW,0BACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,UAAW,OAAO,CACrB,EACA,OAAOO,CAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAClC,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,MAAMC,EAAO,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,EAChCD,EAASP,EACb,CACE,CACE,UAAW,0BACX,MAAO,CAAE,OAAQ,cAAY,SAAU,QAASQ,CAAK,CACvD,CACF,EACA,CAAC,CACH,EACA,OAAOD,CAAM,EAAE,QAAQ,CAAC,qBAAmB,OAAOC,CAAI,CAAC,CAAC,CAC1D,CAAC,EAED,GAAG,iEAAkE,IAAM,CACzE,MAAMC,EAAaT,EACjB,CACE,CACE,UAAW,EACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,GAAG,CACN,EACA,OAAOS,CAAU,EAAE,QAAQ,CAAC,CAAC,EAE7B,MAAMC,EAAaV,EACjB,CACE,CACE,UAAW,0BACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,MAAS,CACZ,EACA,OAAOU,CAAU,EAAE,QAAQ,CAAC,CAAC,CAC/B,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { type RequirementInstruction } from \"@internal/app-binder/clear-sign/requirements/model\";\nimport {\n PARAM_TYPE_ACCOUNT,\n PARAM_TYPE_TRUSTED_NAME,\n type ParsedDisplayField,\n type ParsedInstruction,\n ValueSource,\n} from \"@internal/app-binder/clear-sign/requirements/records\";\nimport { RequirementAccumulator } from \"@internal/app-binder/clear-sign/requirements/RequirementAccumulator\";\nimport { DefaultBs58Encoder } from \"@internal/app-binder/services/bs58Encoder\";\n\nimport { applyTrustedNameRule } from \"./trustedNameRule\";\n\nfunction run(\n displayFields: ParsedDisplayField[],\n addresses: (string | undefined)[],\n) {\n const parsed: ParsedInstruction = {\n info: { typePool: [], rootType: 0, mintAssociations: [] },\n valueFlowPorts: [],\n accountResets: [],\n displayFields,\n };\n const instruction: RequirementInstruction = {\n programId: \"P\",\n accounts: addresses.map((address) => ({ address })),\n data: new Uint8Array(),\n };\n const accumulator = new RequirementAccumulator();\n applyTrustedNameRule(parsed, instruction, accumulator);\n return accumulator.build().trustedNames;\n}\n\ndescribe(\"applyTrustedNameRule\", () => {\n it(\"resolves an ACCOUNT_PATH trusted-name target\", () => {\n const result = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(1),\n },\n },\n ],\n [\"ignored\", \"named\"],\n );\n expect(result).toEqual([\"named\"]);\n });\n\n it(\"encodes a 32-byte CONSTANT trusted-name target\", () => {\n const addr = new Uint8Array(32).fill(8);\n const result = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: { source: ValueSource.CONSTANT, payload: addr },\n },\n ],\n [],\n );\n expect(result).toEqual([DefaultBs58Encoder.encode(addr)]);\n });\n\n it(\"resolves an ACCOUNT display field target (best-effort CAL name)\", () => {\n const result = run(\n [\n {\n paramType: PARAM_TYPE_ACCOUNT,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [\"account\"],\n );\n expect(result).toEqual([\"account\"]);\n });\n\n it(\"deduplicates an address referenced by ACCOUNT and TRUSTED_NAME fields\", () => {\n const result = run(\n [\n {\n paramType: PARAM_TYPE_ACCOUNT,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [\"shared\"],\n );\n expect(result).toEqual([\"shared\"]);\n });\n\n it(\"ignores non-trusted-name fields and unresolved account targets\", () => {\n const nonTrusted = run(\n [\n {\n paramType: 0x02,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [\"a\"],\n );\n expect(nonTrusted).toEqual([]);\n\n const unresolved = run(\n [\n {\n paramType: PARAM_TYPE_TRUSTED_NAME,\n value: {\n source: ValueSource.ACCOUNT_PATH,\n payload: Uint8Array.of(0),\n },\n },\n ],\n [undefined],\n );\n expect(unresolved).toEqual([]);\n });\n});\n"],
5
+ "mappings": "aACA,IAAAA,EAMO,gEACPC,EAAuC,+EACvCC,EAAmC,qDAEnCC,EAAqC,6BAErC,SAASC,EACPC,EACAC,EACA,CACA,MAAMC,EAA4B,CAChC,KAAM,CAAE,SAAU,CAAC,EAAG,SAAU,EAAG,iBAAkB,CAAC,CAAE,EACxD,eAAgB,CAAC,EACjB,cAAe,CAAC,EAChB,cAAAF,CACF,EACMG,EAAsC,CAC1C,UAAW,IACX,SAAUF,EAAU,IAAKG,IAAa,CAAE,QAAAA,CAAQ,EAAE,EAClD,KAAM,IAAI,UACZ,EACMC,EAAc,IAAI,yBACxB,iCAAqBH,EAAQC,EAAaE,CAAW,EAC9CA,EAAY,MAAM,EAAE,YAC7B,CAEA,SAAS,uBAAwB,IAAM,CACrC,GAAG,+CAAgD,IAAM,CACvD,MAAMC,EAASP,EACb,CACE,CACE,UAAW,0BACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,UAAW,OAAO,CACrB,EACA,OAAOO,CAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAClC,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,MAAMC,EAAO,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,EAChCD,EAASP,EACb,CACE,CACE,UAAW,0BACX,MAAO,CAAE,OAAQ,cAAY,SAAU,QAASQ,CAAK,CACvD,CACF,EACA,CAAC,CACH,EACA,OAAOD,CAAM,EAAE,QAAQ,CAAC,qBAAmB,OAAOC,CAAI,CAAC,CAAC,CAC1D,CAAC,EAED,GAAG,kEAAmE,IAAM,CAC1E,MAAMD,EAASP,EACb,CACE,CACE,UAAW,qBACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,SAAS,CACZ,EACA,OAAOO,CAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CACpC,CAAC,EAED,GAAG,wEAAyE,IAAM,CAChF,MAAMA,EAASP,EACb,CACE,CACE,UAAW,qBACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,EACA,CACE,UAAW,0BACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,QAAQ,CACX,EACA,OAAOO,CAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CACnC,CAAC,EAED,GAAG,iEAAkE,IAAM,CACzE,MAAME,EAAaT,EACjB,CACE,CACE,UAAW,EACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,GAAG,CACN,EACA,OAAOS,CAAU,EAAE,QAAQ,CAAC,CAAC,EAE7B,MAAMC,EAAaV,EACjB,CACE,CACE,UAAW,0BACX,MAAO,CACL,OAAQ,cAAY,aACpB,QAAS,WAAW,GAAG,CAAC,CAC1B,CACF,CACF,EACA,CAAC,MAAS,CACZ,EACA,OAAOU,CAAU,EAAE,QAAQ,CAAC,CAAC,CAC/B,CAAC,CACH,CAAC",
6
6
  "names": ["import_records", "import_RequirementAccumulator", "import_bs58Encoder", "import_trustedNameRule", "run", "displayFields", "addresses", "parsed", "instruction", "address", "accumulator", "result", "addr", "nonTrusted", "unresolved"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/ProvideAltResolutionCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x28;\n\nexport type ProvideAltResolutionCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `ALT_RESOLUTION` TLV carrying\n * `(altAddress, entryIndex, resolvedAddress)`. The caller must issue\n * `GET CHALLENGE` immediately before this command.\n *\n * The caller pre-builds the wire payload (2-byte BE length prefix followed\n * by the `ALT_RESOLUTION` TLV) and splits it into \u2264255-byte chunks.\n */\nexport class ProvideAltResolutionCommand\n implements Command<void, ProvideAltResolutionCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideAltResolution\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideAltResolutionCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x28;\n\nexport type ProvideAltResolutionCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `ALT_RESOLUTION` TLV carrying\n * `(altAddress, entryIndex, resolvedAddress)`. The caller must issue\n * `GET CHALLENGE` immediately before this command.\n *\n * The caller pre-builds the wire payload (the `ALT_RESOLUTION` TLV only)\n * and splits it into \u2264255-byte chunks.\n */\nexport class ProvideAltResolutionCommand\n implements Command<void, ProvideAltResolutionCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideAltResolution\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideAltResolutionCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,EAAA,gCAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAA8C,gCAC9CC,EAIO,2CAEP,MAAMC,EAAM,IACNC,EAAK,EACET,EAAM,GAqBZ,MAAMC,CAEb,CAOE,YAAqBS,EAAuC,CAAvC,UAAAA,CAAwC,CANpD,KAAO,uBACC,YAAc,IAAI,qBAGjC,oBAAmB,8BAA4B,EAIjD,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,aAAAC,EAAe,GAAM,QAAAC,EAAU,EAAM,EAAI,KAAK,QAC/D,mBAAgBF,EAASX,CAAG,EAC5B,MAAMc,KAAK,gBAAaF,EAAcC,CAAO,EAE7C,OAAO,IAAI,cAAY,CAAE,IAAKL,EAAK,IAAKR,EAAK,GAAIS,EAAI,GAAAK,CAAG,CAAC,EACtD,gBAAgBH,CAAO,EACvB,MAAM,CACX,CAEA,cACEI,EAC0C,CAC1C,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IACVA,EAAS,KAAK,SAAW,KACpB,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,KAEI,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
6
6
  "names": ["ProvideAltResolutionCommand_exports", "__export", "INS", "ProvideAltResolutionCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_apduChunking", "import_SolanaApplicationErrors", "CLA", "P1", "args", "payload", "isFirstChunk", "hasMore", "p2", "response"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/ProvideEnumVariantCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x26;\n\nexport type ProvideEnumVariantCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `ENUM_VARIANT` TLV for a specific\n * `(PROGRAM_ID, ENUM_ID, VARIANT_INDEX)` triple.\n *\n * The caller pre-builds the wire payload (2-byte BE length prefix followed\n * by the `ENUM_VARIANT` TLV) and splits it into \u2264255-byte chunks.\n */\nexport class ProvideEnumVariantCommand\n implements Command<void, ProvideEnumVariantCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideEnumVariant\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideEnumVariantCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x26;\n\nexport type ProvideEnumVariantCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `ENUM_VARIANT` TLV for a specific\n * `(PROGRAM_ID, ENUM_ID, VARIANT_INDEX)` triple.\n *\n * The caller pre-builds the wire payload and splits it into \u2264255-byte\n * chunks.\n */\nexport class ProvideEnumVariantCommand\n implements Command<void, ProvideEnumVariantCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideEnumVariant\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideEnumVariantCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,EAAA,8BAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAA8C,gCAC9CC,EAIO,2CAEP,MAAMC,EAAM,IACNC,EAAK,EACET,EAAM,GAoBZ,MAAMC,CAEb,CAOE,YAAqBS,EAAqC,CAArC,UAAAA,CAAsC,CANlD,KAAO,qBACC,YAAc,IAAI,qBAGjC,oBAAmB,8BAA4B,EAIjD,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,aAAAC,EAAe,GAAM,QAAAC,EAAU,EAAM,EAAI,KAAK,QAC/D,mBAAgBF,EAASX,CAAG,EAC5B,MAAMc,KAAK,gBAAaF,EAAcC,CAAO,EAE7C,OAAO,IAAI,cAAY,CAAE,IAAKL,EAAK,IAAKR,EAAK,GAAIS,EAAI,GAAAK,CAAG,CAAC,EACtD,gBAAgBH,CAAO,EACvB,MAAM,CACX,CAEA,cACEI,EAC0C,CAC1C,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IACVA,EAAS,KAAK,SAAW,KACpB,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,KAEI,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
6
6
  "names": ["ProvideEnumVariantCommand_exports", "__export", "INS", "ProvideEnumVariantCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_apduChunking", "import_SolanaApplicationErrors", "CLA", "P1", "args", "payload", "isFirstChunk", "hasMore", "p2", "response"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/ProvideInstructionInfoCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x24;\n\nexport type ProvideInstructionInfoCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `INSTRUCTION_INFO` TLV to the device.\n *\n * The caller pre-builds the wire payload (2-byte BE length prefix followed by\n * the `INSTRUCTION_INFO` TLV) and splits it into \u2264255-byte chunks, then sends\n * each chunk through this command with `isFirstChunk` / `hasMore` flags driving\n * the standard `P2_MORE` / `P2_EXTEND` chunking convention.\n */\nexport class ProvideInstructionInfoCommand\n implements\n Command<void, ProvideInstructionInfoCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideInstructionInfo\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideInstructionInfoCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,EAAA,kCAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAA8C,gCAC9CC,EAIO,2CAEP,MAAMC,EAAM,IACNC,EAAK,EACET,EAAM,GAqBZ,MAAMC,CAGb,CAOE,YAAqBS,EAAyC,CAAzC,UAAAA,CAA0C,CANtD,KAAO,yBACC,YAAc,IAAI,qBAGjC,oBAAmB,8BAA4B,EAIjD,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,aAAAC,EAAe,GAAM,QAAAC,EAAU,EAAM,EAAI,KAAK,QAC/D,mBAAgBF,EAASX,CAAG,EAC5B,MAAMc,KAAK,gBAAaF,EAAcC,CAAO,EAE7C,OAAO,IAAI,cAAY,CAAE,IAAKL,EAAK,IAAKR,EAAK,GAAIS,EAAI,GAAAK,CAAG,CAAC,EACtD,gBAAgBH,CAAO,EACvB,MAAM,CACX,CAEA,cACEI,EAC0C,CAC1C,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IACVA,EAAS,KAAK,SAAW,KACpB,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,KAEI,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x24;\n\nexport type ProvideInstructionInfoCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one signed `INSTRUCTION_INFO` TLV to the device.\n *\n * The caller pre-builds the wire payload and splits it into \u2264255-byte chunks,\n * then sends each chunk through this command with `isFirstChunk` / `hasMore`\n * flags driving the standard `P2_MORE` / `P2_EXTEND` chunking convention.\n */\nexport class ProvideInstructionInfoCommand\n implements\n Command<void, ProvideInstructionInfoCommandArgs, SolanaAppErrorCodes>\n{\n readonly name = \"provideInstructionInfo\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideInstructionInfoCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,EAAA,kCAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAA8C,gCAC9CC,EAIO,2CAEP,MAAMC,EAAM,IACNC,EAAK,EACET,EAAM,GAoBZ,MAAMC,CAGb,CAOE,YAAqBS,EAAyC,CAAzC,UAAAA,CAA0C,CANtD,KAAO,yBACC,YAAc,IAAI,qBAGjC,oBAAmB,8BAA4B,EAIjD,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,aAAAC,EAAe,GAAM,QAAAC,EAAU,EAAM,EAAI,KAAK,QAC/D,mBAAgBF,EAASX,CAAG,EAC5B,MAAMc,KAAK,gBAAaF,EAAcC,CAAO,EAE7C,OAAO,IAAI,cAAY,CAAE,IAAKL,EAAK,IAAKR,EAAK,GAAIS,EAAI,GAAAK,CAAG,CAAC,EACtD,gBAAgBH,CAAO,EACvB,MAAM,CACX,CAEA,cACEI,EAC0C,CAC1C,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IACVA,EAAS,KAAK,SAAW,KACpB,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,KAEI,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
6
6
  "names": ["ProvideInstructionInfoCommand_exports", "__export", "INS", "ProvideInstructionInfoCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_apduChunking", "import_SolanaApplicationErrors", "CLA", "P1", "args", "payload", "isFirstChunk", "hasMore", "p2", "response"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/ProvideInstructionSubstructureCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x25;\n\n/**\n * Substructure-type selector byte. The caller prepends it as the first byte\n * of the first chunk's payload.\n */\nexport enum SubstructureType {\n DisplayField = 0x00,\n ValueFlowPort = 0x01,\n HideRule = 0x02,\n AccountReset = 0x03,\n}\n\nexport type ProvideInstructionSubstructureCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one substructure TLV (DISPLAY_FIELD / VALUE_FLOW_PORT /\n * HIDE_RULE / ACCOUNT_RESET) referenced by the current `INSTRUCTION_INFO`.\n *\n * The caller pre-builds the wire payload \u2014 2-byte BE length prefix, 1-byte\n * substructure-type selector, then the substructure TLV \u2014 and splits it into\n * \u2264255-byte chunks.\n */\nexport class ProvideInstructionSubstructureCommand\n implements\n Command<\n void,\n ProvideInstructionSubstructureCommandArgs,\n SolanaAppErrorCodes\n >\n{\n readonly name = \"provideInstructionSubstructure\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideInstructionSubstructureCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { assertChunkSize, buildChunkP2 } from \"./utils/apduChunking\";\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst P1 = 0x00;\nexport const INS = 0x25;\n\n/**\n * Substructure-type selector byte. The caller prepends it as the first byte\n * of the first chunk's payload.\n */\nexport enum SubstructureType {\n DisplayField = 0x00,\n ValueFlowPort = 0x01,\n HideRule = 0x02,\n AccountReset = 0x03,\n}\n\nexport type ProvideInstructionSubstructureCommandArgs = {\n readonly payload: Uint8Array;\n /**\n * Chunking flags following the standard Solana P2_MORE / P2_EXTEND\n * convention. Default to a single-chunk send (P2 = 0x00) so callers that\n * fit their payload in one APDU don't need to pass them.\n */\n readonly isFirstChunk?: boolean;\n readonly hasMore?: boolean;\n};\n\n/**\n * Provides one substructure TLV (DISPLAY_FIELD / VALUE_FLOW_PORT /\n * HIDE_RULE / ACCOUNT_RESET) referenced by the current `INSTRUCTION_INFO`.\n *\n * The caller pre-builds the wire payload \u2014 a 1-byte substructure-type selector\n * followed by the substructure TLV (no length prefix; the device recovers the\n * total length from the chunk flags) \u2014 and splits it into \u2264255-byte chunks.\n */\nexport class ProvideInstructionSubstructureCommand\n implements\n Command<\n void,\n ProvideInstructionSubstructureCommandArgs,\n SolanaAppErrorCodes\n >\n{\n readonly name = \"provideInstructionSubstructure\";\n private readonly errorHelper = new CommandErrorHelper<\n void,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n constructor(readonly args: ProvideInstructionSubstructureCommandArgs) {}\n\n getApdu(): Apdu {\n const { payload, isFirstChunk = true, hasMore = false } = this.args;\n assertChunkSize(payload, INS);\n const p2 = buildChunkP2(isFirstChunk, hasMore);\n\n return new ApduBuilder({ cla: CLA, ins: INS, p1: P1, p2 })\n .addBufferToData(payload)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<void, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n if (response.data.length !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unexpected data in response\"),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,EAAA,0CAAAC,EAAA,qBAAAC,IAAA,eAAAC,EAAAL,GAAA,IAAAM,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAA8C,gCAC9CC,EAIO,2CAEP,MAAMC,EAAM,IACNC,EAAK,EACEV,EAAM,GAMZ,IAAKE,OACVA,IAAA,aAAe,GAAf,eACAA,IAAA,cAAgB,GAAhB,gBACAA,IAAA,SAAW,GAAX,WACAA,IAAA,aAAe,GAAf,eAJUA,OAAA,IA0BL,MAAMD,CAOb,CAOE,YAAqBU,EAAiD,CAAjD,UAAAA,CAAkD,CAN9D,KAAO,iCACC,YAAc,IAAI,qBAGjC,oBAAmB,8BAA4B,EAIjD,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,aAAAC,EAAe,GAAM,QAAAC,EAAU,EAAM,EAAI,KAAK,QAC/D,mBAAgBF,EAASZ,CAAG,EAC5B,MAAMe,KAAK,gBAAaF,EAAcC,CAAO,EAE7C,OAAO,IAAI,cAAY,CAAE,IAAKL,EAAK,IAAKT,EAAK,GAAIU,EAAI,GAAAK,CAAG,CAAC,EACtD,gBAAgBH,CAAO,EACvB,MAAM,CACX,CAEA,cACEI,EAC0C,CAC1C,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IACVA,EAAS,KAAK,SAAW,KACpB,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,KAEI,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
6
6
  "names": ["ProvideInstructionSubstructureCommand_exports", "__export", "INS", "ProvideInstructionSubstructureCommand", "SubstructureType", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_apduChunking", "import_SolanaApplicationErrors", "CLA", "P1", "args", "payload", "isFirstChunk", "hasMore", "p2", "response"]
7
7
  }