@startale/app-sdk 1.0.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 (375) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +116 -0
  3. package/dist/app-sdk.js +36226 -0
  4. package/dist/app-sdk.js.map +1 -0
  5. package/dist/app-sdk.min.js +15 -0
  6. package/dist/app-sdk.min.js.map +1 -0
  7. package/dist/browser-entry.d.ts +15 -0
  8. package/dist/browser-entry.d.ts.map +1 -0
  9. package/dist/browser-entry.js +19 -0
  10. package/dist/browser-entry.js.map +1 -0
  11. package/dist/core/communicator/Communicator.d.ts +47 -0
  12. package/dist/core/communicator/Communicator.d.ts.map +1 -0
  13. package/dist/core/communicator/Communicator.js +107 -0
  14. package/dist/core/communicator/Communicator.js.map +1 -0
  15. package/dist/core/constants.d.ts +5 -0
  16. package/dist/core/constants.d.ts.map +1 -0
  17. package/dist/core/constants.js +6 -0
  18. package/dist/core/constants.js.map +1 -0
  19. package/dist/core/error/constants.d.ts +96 -0
  20. package/dist/core/error/constants.d.ts.map +1 -0
  21. package/dist/core/error/constants.js +94 -0
  22. package/dist/core/error/constants.js.map +1 -0
  23. package/dist/core/error/errors.d.ts +74 -0
  24. package/dist/core/error/errors.d.ts.map +1 -0
  25. package/dist/core/error/errors.js +138 -0
  26. package/dist/core/error/errors.js.map +1 -0
  27. package/dist/core/error/serialize.d.ts +13 -0
  28. package/dist/core/error/serialize.d.ts.map +1 -0
  29. package/dist/core/error/serialize.js +43 -0
  30. package/dist/core/error/serialize.js.map +1 -0
  31. package/dist/core/error/utils.d.ts +31 -0
  32. package/dist/core/error/utils.d.ts.map +1 -0
  33. package/dist/core/error/utils.js +109 -0
  34. package/dist/core/error/utils.js.map +1 -0
  35. package/dist/core/message/ConfigMessage.d.ts +6 -0
  36. package/dist/core/message/ConfigMessage.d.ts.map +1 -0
  37. package/dist/core/message/ConfigMessage.js +2 -0
  38. package/dist/core/message/ConfigMessage.js.map +1 -0
  39. package/dist/core/message/Message.d.ts +8 -0
  40. package/dist/core/message/Message.d.ts.map +1 -0
  41. package/dist/core/message/Message.js +2 -0
  42. package/dist/core/message/Message.js.map +1 -0
  43. package/dist/core/message/RPCMessage.d.ts +31 -0
  44. package/dist/core/message/RPCMessage.d.ts.map +1 -0
  45. package/dist/core/message/RPCMessage.js +2 -0
  46. package/dist/core/message/RPCMessage.js.map +1 -0
  47. package/dist/core/message/RPCRequest.d.ts +6 -0
  48. package/dist/core/message/RPCRequest.d.ts.map +1 -0
  49. package/dist/core/message/RPCRequest.js +2 -0
  50. package/dist/core/message/RPCRequest.js.map +1 -0
  51. package/dist/core/message/RPCResponse.d.ts +23 -0
  52. package/dist/core/message/RPCResponse.d.ts.map +1 -0
  53. package/dist/core/message/RPCResponse.js +2 -0
  54. package/dist/core/message/RPCResponse.js.map +1 -0
  55. package/dist/core/provider/interface.d.ts +94 -0
  56. package/dist/core/provider/interface.d.ts.map +1 -0
  57. package/dist/core/provider/interface.js +4 -0
  58. package/dist/core/provider/interface.js.map +1 -0
  59. package/dist/core/rpc/coinbase_fetchSpendPermissions.d.ts +50 -0
  60. package/dist/core/rpc/coinbase_fetchSpendPermissions.d.ts.map +1 -0
  61. package/dist/core/rpc/coinbase_fetchSpendPermissions.js +2 -0
  62. package/dist/core/rpc/coinbase_fetchSpendPermissions.js.map +1 -0
  63. package/dist/core/rpc/wallet_addSubAccount.d.ts +37 -0
  64. package/dist/core/rpc/wallet_addSubAccount.d.ts.map +1 -0
  65. package/dist/core/rpc/wallet_addSubAccount.js +2 -0
  66. package/dist/core/rpc/wallet_addSubAccount.js.map +1 -0
  67. package/dist/core/rpc/wallet_connect.d.ts +64 -0
  68. package/dist/core/rpc/wallet_connect.d.ts.map +1 -0
  69. package/dist/core/rpc/wallet_connect.js +2 -0
  70. package/dist/core/rpc/wallet_connect.js.map +1 -0
  71. package/dist/core/rpc/wallet_getSubAccount.d.ts +14 -0
  72. package/dist/core/rpc/wallet_getSubAccount.d.ts.map +1 -0
  73. package/dist/core/rpc/wallet_getSubAccount.js +2 -0
  74. package/dist/core/rpc/wallet_getSubAccount.js.map +1 -0
  75. package/dist/core/rpc/wallet_prepareCalls.d.ts +28 -0
  76. package/dist/core/rpc/wallet_prepareCalls.d.ts.map +1 -0
  77. package/dist/core/rpc/wallet_prepareCalls.js +2 -0
  78. package/dist/core/rpc/wallet_prepareCalls.js.map +1 -0
  79. package/dist/core/rpc/wallet_sendPreparedCalls.d.ts +47 -0
  80. package/dist/core/rpc/wallet_sendPreparedCalls.d.ts.map +1 -0
  81. package/dist/core/rpc/wallet_sendPreparedCalls.js +2 -0
  82. package/dist/core/rpc/wallet_sendPreparedCalls.js.map +1 -0
  83. package/dist/core/telemetry/events/communicator.d.ts +4 -0
  84. package/dist/core/telemetry/events/communicator.d.ts.map +1 -0
  85. package/dist/core/telemetry/events/communicator.js +20 -0
  86. package/dist/core/telemetry/events/communicator.js.map +1 -0
  87. package/dist/core/telemetry/events/dialog.d.ts +15 -0
  88. package/dist/core/telemetry/events/dialog.d.ts.map +1 -0
  89. package/dist/core/telemetry/events/dialog.js +24 -0
  90. package/dist/core/telemetry/events/dialog.js.map +1 -0
  91. package/dist/core/telemetry/events/payment.d.ts +31 -0
  92. package/dist/core/telemetry/events/payment.d.ts.map +1 -0
  93. package/dist/core/telemetry/events/payment.js +68 -0
  94. package/dist/core/telemetry/events/payment.js.map +1 -0
  95. package/dist/core/telemetry/events/provider.d.ts +14 -0
  96. package/dist/core/telemetry/events/provider.d.ts.map +1 -0
  97. package/dist/core/telemetry/events/provider.js +30 -0
  98. package/dist/core/telemetry/events/provider.js.map +1 -0
  99. package/dist/core/telemetry/events/scw-signer.d.ts +27 -0
  100. package/dist/core/telemetry/events/scw-signer.d.ts.map +1 -0
  101. package/dist/core/telemetry/events/scw-signer.js +65 -0
  102. package/dist/core/telemetry/events/scw-signer.js.map +1 -0
  103. package/dist/core/telemetry/events/scw-sub-account.d.ts +40 -0
  104. package/dist/core/telemetry/events/scw-sub-account.d.ts.map +1 -0
  105. package/dist/core/telemetry/events/scw-sub-account.js +96 -0
  106. package/dist/core/telemetry/events/scw-sub-account.js.map +1 -0
  107. package/dist/core/telemetry/events/spend-permission.d.ts +6 -0
  108. package/dist/core/telemetry/events/spend-permission.d.ts.map +1 -0
  109. package/dist/core/telemetry/events/spend-permission.js +21 -0
  110. package/dist/core/telemetry/events/spend-permission.js.map +1 -0
  111. package/dist/core/telemetry/initCCA.d.ts +2 -0
  112. package/dist/core/telemetry/initCCA.d.ts.map +1 -0
  113. package/dist/core/telemetry/initCCA.js +43 -0
  114. package/dist/core/telemetry/initCCA.js.map +1 -0
  115. package/dist/core/telemetry/logEvent.d.ts +72 -0
  116. package/dist/core/telemetry/logEvent.d.ts.map +1 -0
  117. package/dist/core/telemetry/logEvent.js +62 -0
  118. package/dist/core/telemetry/logEvent.js.map +1 -0
  119. package/dist/core/telemetry/telemetry-content.d.ts +2 -0
  120. package/dist/core/telemetry/telemetry-content.d.ts.map +1 -0
  121. package/dist/core/telemetry/telemetry-content.js +5526 -0
  122. package/dist/core/telemetry/telemetry-content.js.map +1 -0
  123. package/dist/core/telemetry/utils.d.ts +2 -0
  124. package/dist/core/telemetry/utils.d.ts.map +1 -0
  125. package/dist/core/telemetry/utils.js +7 -0
  126. package/dist/core/telemetry/utils.js.map +1 -0
  127. package/dist/core/type/index.d.ts +21 -0
  128. package/dist/core/type/index.d.ts.map +1 -0
  129. package/dist/core/type/index.js +10 -0
  130. package/dist/core/type/index.js.map +1 -0
  131. package/dist/core/type/util.d.ts +28 -0
  132. package/dist/core/type/util.d.ts.map +1 -0
  133. package/dist/core/type/util.js +158 -0
  134. package/dist/core/type/util.js.map +1 -0
  135. package/dist/core/username/getDisplayableUsername.d.ts +3 -0
  136. package/dist/core/username/getDisplayableUsername.d.ts.map +1 -0
  137. package/dist/core/username/getDisplayableUsername.js +7 -0
  138. package/dist/core/username/getDisplayableUsername.js.map +1 -0
  139. package/dist/index.d.ts +6 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +5 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/interface/builder/core/BaseAccountProvider.d.ts +11 -0
  144. package/dist/interface/builder/core/BaseAccountProvider.d.ts.map +1 -0
  145. package/dist/interface/builder/core/BaseAccountProvider.js +141 -0
  146. package/dist/interface/builder/core/BaseAccountProvider.js.map +1 -0
  147. package/dist/interface/builder/core/createBaseAccountSDK.d.ts +27 -0
  148. package/dist/interface/builder/core/createBaseAccountSDK.d.ts.map +1 -0
  149. package/dist/interface/builder/core/createBaseAccountSDK.js +149 -0
  150. package/dist/interface/builder/core/createBaseAccountSDK.js.map +1 -0
  151. package/dist/interface/builder/core/getInjectedProvider.d.ts +13 -0
  152. package/dist/interface/builder/core/getInjectedProvider.d.ts.map +1 -0
  153. package/dist/interface/builder/core/getInjectedProvider.js +10 -0
  154. package/dist/interface/builder/core/getInjectedProvider.js.map +1 -0
  155. package/dist/interface/payment/base.d.ts +32 -0
  156. package/dist/interface/payment/base.d.ts.map +1 -0
  157. package/dist/interface/payment/base.js +16 -0
  158. package/dist/interface/payment/base.js.map +1 -0
  159. package/dist/interface/payment/constants.d.ts +56 -0
  160. package/dist/interface/payment/constants.d.ts.map +1 -0
  161. package/dist/interface/payment/constants.js +45 -0
  162. package/dist/interface/payment/constants.js.map +1 -0
  163. package/dist/interface/payment/getPaymentStatus.d.ts +28 -0
  164. package/dist/interface/payment/getPaymentStatus.d.ts.map +1 -0
  165. package/dist/interface/payment/getPaymentStatus.js +243 -0
  166. package/dist/interface/payment/getPaymentStatus.js.map +1 -0
  167. package/dist/interface/payment/index.d.ts +9 -0
  168. package/dist/interface/payment/index.d.ts.map +1 -0
  169. package/dist/interface/payment/index.js +9 -0
  170. package/dist/interface/payment/index.js.map +1 -0
  171. package/dist/interface/payment/pay.d.ts +29 -0
  172. package/dist/interface/payment/pay.d.ts.map +1 -0
  173. package/dist/interface/payment/pay.js +90 -0
  174. package/dist/interface/payment/pay.js.map +1 -0
  175. package/dist/interface/payment/types.d.ts +123 -0
  176. package/dist/interface/payment/types.d.ts.map +1 -0
  177. package/dist/interface/payment/types.js +5 -0
  178. package/dist/interface/payment/types.js.map +1 -0
  179. package/dist/interface/payment/utils/sdkManager.d.ts +61 -0
  180. package/dist/interface/payment/utils/sdkManager.d.ts.map +1 -0
  181. package/dist/interface/payment/utils/sdkManager.js +84 -0
  182. package/dist/interface/payment/utils/sdkManager.js.map +1 -0
  183. package/dist/interface/payment/utils/translatePayment.d.ts +45 -0
  184. package/dist/interface/payment/utils/translatePayment.d.ts.map +1 -0
  185. package/dist/interface/payment/utils/translatePayment.js +70 -0
  186. package/dist/interface/payment/utils/translatePayment.js.map +1 -0
  187. package/dist/interface/payment/utils/validation.d.ts +16 -0
  188. package/dist/interface/payment/utils/validation.d.ts.map +1 -0
  189. package/dist/interface/payment/utils/validation.js +47 -0
  190. package/dist/interface/payment/utils/validation.js.map +1 -0
  191. package/dist/interface/public-utilities/spend-permission/index.d.ts +8 -0
  192. package/dist/interface/public-utilities/spend-permission/index.d.ts.map +1 -0
  193. package/dist/interface/public-utilities/spend-permission/index.js +8 -0
  194. package/dist/interface/public-utilities/spend-permission/index.js.map +1 -0
  195. package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.d.ts +14 -0
  196. package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.d.ts.map +1 -0
  197. package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.js +52 -0
  198. package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.js.map +1 -0
  199. package/dist/interface/public-utilities/spend-permission/methods/getHash.d.ts +9 -0
  200. package/dist/interface/public-utilities/spend-permission/methods/getHash.d.ts.map +1 -0
  201. package/dist/interface/public-utilities/spend-permission/methods/getHash.js +54 -0
  202. package/dist/interface/public-utilities/spend-permission/methods/getHash.js.map +1 -0
  203. package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.d.ts +8 -0
  204. package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.d.ts.map +1 -0
  205. package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.js +85 -0
  206. package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.js.map +1 -0
  207. package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.d.ts +10 -0
  208. package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.d.ts.map +1 -0
  209. package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.js +51 -0
  210. package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.js.map +1 -0
  211. package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.d.ts +11 -0
  212. package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.d.ts.map +1 -0
  213. package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.js +104 -0
  214. package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.js.map +1 -0
  215. package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.d.ts +11 -0
  216. package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.d.ts.map +1 -0
  217. package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.js +64 -0
  218. package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.js.map +1 -0
  219. package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.d.ts +20 -0
  220. package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.d.ts.map +1 -0
  221. package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.js +67 -0
  222. package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.js.map +1 -0
  223. package/dist/interface/public-utilities/spend-permission/utils.d.ts +81 -0
  224. package/dist/interface/public-utilities/spend-permission/utils.d.ts.map +1 -0
  225. package/dist/interface/public-utilities/spend-permission/utils.js +130 -0
  226. package/dist/interface/public-utilities/spend-permission/utils.js.map +1 -0
  227. package/dist/interface/public-utilities/spend-permission/withTelemetry.d.ts +2 -0
  228. package/dist/interface/public-utilities/spend-permission/withTelemetry.d.ts.map +1 -0
  229. package/dist/interface/public-utilities/spend-permission/withTelemetry.js +30 -0
  230. package/dist/interface/public-utilities/spend-permission/withTelemetry.js.map +1 -0
  231. package/dist/kms/crypto-key/index.d.ts +18 -0
  232. package/dist/kms/crypto-key/index.d.ts.map +1 -0
  233. package/dist/kms/crypto-key/index.js +97 -0
  234. package/dist/kms/crypto-key/index.js.map +1 -0
  235. package/dist/kms/crypto-key/storage.d.ts +7 -0
  236. package/dist/kms/crypto-key/storage.d.ts.map +1 -0
  237. package/dist/kms/crypto-key/storage.js +20 -0
  238. package/dist/kms/crypto-key/storage.js.map +1 -0
  239. package/dist/sign/app-sdk/SCWKeyManager.d.ts +15 -0
  240. package/dist/sign/app-sdk/SCWKeyManager.d.ts.map +1 -0
  241. package/dist/sign/app-sdk/SCWKeyManager.js +82 -0
  242. package/dist/sign/app-sdk/SCWKeyManager.js.map +1 -0
  243. package/dist/sign/app-sdk/Signer.d.ts +38 -0
  244. package/dist/sign/app-sdk/Signer.d.ts.map +1 -0
  245. package/dist/sign/app-sdk/Signer.js +659 -0
  246. package/dist/sign/app-sdk/Signer.js.map +1 -0
  247. package/dist/sign/app-sdk/utils/constants.d.ts +1945 -0
  248. package/dist/sign/app-sdk/utils/constants.d.ts.map +1 -0
  249. package/dist/sign/app-sdk/utils/constants.js +1321 -0
  250. package/dist/sign/app-sdk/utils/constants.js.map +1 -0
  251. package/dist/sign/app-sdk/utils/createSmartAccount.d.ts +63 -0
  252. package/dist/sign/app-sdk/utils/createSmartAccount.d.ts.map +1 -0
  253. package/dist/sign/app-sdk/utils/createSmartAccount.js +291 -0
  254. package/dist/sign/app-sdk/utils/createSmartAccount.js.map +1 -0
  255. package/dist/sign/app-sdk/utils/createSubAccountSigner.d.ts +23 -0
  256. package/dist/sign/app-sdk/utils/createSubAccountSigner.d.ts.map +1 -0
  257. package/dist/sign/app-sdk/utils/createSubAccountSigner.js +233 -0
  258. package/dist/sign/app-sdk/utils/createSubAccountSigner.js.map +1 -0
  259. package/dist/sign/app-sdk/utils/findOwnerIndex.d.ts +32 -0
  260. package/dist/sign/app-sdk/utils/findOwnerIndex.d.ts.map +1 -0
  261. package/dist/sign/app-sdk/utils/findOwnerIndex.js +56 -0
  262. package/dist/sign/app-sdk/utils/findOwnerIndex.js.map +1 -0
  263. package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.d.ts +8 -0
  264. package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.d.ts.map +1 -0
  265. package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.js +78 -0
  266. package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.js.map +1 -0
  267. package/dist/sign/app-sdk/utils/handleInsufficientBalance.d.ts +18 -0
  268. package/dist/sign/app-sdk/utils/handleInsufficientBalance.d.ts.map +1 -0
  269. package/dist/sign/app-sdk/utils/handleInsufficientBalance.js +27 -0
  270. package/dist/sign/app-sdk/utils/handleInsufficientBalance.js.map +1 -0
  271. package/dist/sign/app-sdk/utils/presentAddOwnerDialog.d.ts +2 -0
  272. package/dist/sign/app-sdk/utils/presentAddOwnerDialog.d.ts.map +1 -0
  273. package/dist/sign/app-sdk/utils/presentAddOwnerDialog.js +46 -0
  274. package/dist/sign/app-sdk/utils/presentAddOwnerDialog.js.map +1 -0
  275. package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.d.ts +33 -0
  276. package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.d.ts.map +1 -0
  277. package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.js +76 -0
  278. package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.js.map +1 -0
  279. package/dist/sign/app-sdk/utils.d.ts +220 -0
  280. package/dist/sign/app-sdk/utils.d.ts.map +1 -0
  281. package/dist/sign/app-sdk/utils.js +439 -0
  282. package/dist/sign/app-sdk/utils.js.map +1 -0
  283. package/dist/store/chain-clients/store.d.ts +10 -0
  284. package/dist/store/chain-clients/store.d.ts.map +1 -0
  285. package/dist/store/chain-clients/store.js +3 -0
  286. package/dist/store/chain-clients/store.js.map +1 -0
  287. package/dist/store/chain-clients/utils.d.ts +13 -0
  288. package/dist/store/chain-clients/utils.d.ts.map +1 -0
  289. package/dist/store/chain-clients/utils.js +77 -0
  290. package/dist/store/chain-clients/utils.js.map +1 -0
  291. package/dist/store/correlation-ids/store.d.ts +7 -0
  292. package/dist/store/correlation-ids/store.d.ts.map +1 -0
  293. package/dist/store/correlation-ids/store.js +32 -0
  294. package/dist/store/correlation-ids/store.js.map +1 -0
  295. package/dist/store/store.d.ts +186 -0
  296. package/dist/store/store.d.ts.map +1 -0
  297. package/dist/store/store.js +167 -0
  298. package/dist/store/store.js.map +1 -0
  299. package/dist/ui/Dialog/Dialog-css.d.ts +3 -0
  300. package/dist/ui/Dialog/Dialog-css.d.ts.map +1 -0
  301. package/dist/ui/Dialog/Dialog-css.js +2 -0
  302. package/dist/ui/Dialog/Dialog-css.js.map +1 -0
  303. package/dist/ui/Dialog/Dialog.d.ts +28 -0
  304. package/dist/ui/Dialog/Dialog.d.ts.map +1 -0
  305. package/dist/ui/Dialog/Dialog.js +150 -0
  306. package/dist/ui/Dialog/Dialog.js.map +1 -0
  307. package/dist/ui/Dialog/index.d.ts +3 -0
  308. package/dist/ui/Dialog/index.d.ts.map +1 -0
  309. package/dist/ui/Dialog/index.js +15 -0
  310. package/dist/ui/Dialog/index.js.map +1 -0
  311. package/dist/ui/assets/BaseLogo.d.ts +4 -0
  312. package/dist/ui/assets/BaseLogo.d.ts.map +1 -0
  313. package/dist/ui/assets/BaseLogo.js +7 -0
  314. package/dist/ui/assets/BaseLogo.js.map +1 -0
  315. package/dist/ui/assets/BasePayLogo.d.ts +3 -0
  316. package/dist/ui/assets/BasePayLogo.d.ts.map +1 -0
  317. package/dist/ui/assets/BasePayLogo.js +4 -0
  318. package/dist/ui/assets/BasePayLogo.js.map +1 -0
  319. package/dist/ui/assets/colors.d.ts +18 -0
  320. package/dist/ui/assets/colors.d.ts.map +1 -0
  321. package/dist/ui/assets/colors.js +19 -0
  322. package/dist/ui/assets/colors.js.map +1 -0
  323. package/dist/ui/assets/fontFaceCSS.d.ts +2 -0
  324. package/dist/ui/assets/fontFaceCSS.d.ts.map +1 -0
  325. package/dist/ui/assets/fontFaceCSS.js +11 -0
  326. package/dist/ui/assets/fontFaceCSS.js.map +1 -0
  327. package/dist/ui/assets/index.d.ts +6 -0
  328. package/dist/ui/assets/index.d.ts.map +1 -0
  329. package/dist/ui/assets/index.js +6 -0
  330. package/dist/ui/assets/index.js.map +1 -0
  331. package/dist/ui/assets/injectFontStyle.d.ts +2 -0
  332. package/dist/ui/assets/injectFontStyle.d.ts.map +1 -0
  333. package/dist/ui/assets/injectFontStyle.js +12 -0
  334. package/dist/ui/assets/injectFontStyle.js.map +1 -0
  335. package/dist/util/assertPresence.d.ts +3 -0
  336. package/dist/util/assertPresence.d.ts.map +1 -0
  337. package/dist/util/assertPresence.js +18 -0
  338. package/dist/util/assertPresence.js.map +1 -0
  339. package/dist/util/assertSubAccount.d.ts +3 -0
  340. package/dist/util/assertSubAccount.d.ts.map +1 -0
  341. package/dist/util/assertSubAccount.js +26 -0
  342. package/dist/util/assertSubAccount.js.map +1 -0
  343. package/dist/util/checkCrossOriginOpenerPolicy.d.ts +2 -0
  344. package/dist/util/checkCrossOriginOpenerPolicy.d.ts.map +1 -0
  345. package/dist/util/checkCrossOriginOpenerPolicy.js +56 -0
  346. package/dist/util/checkCrossOriginOpenerPolicy.js.map +1 -0
  347. package/dist/util/cipher.d.ts +12 -0
  348. package/dist/util/cipher.d.ts.map +1 -0
  349. package/dist/util/cipher.js +65 -0
  350. package/dist/util/cipher.js.map +1 -0
  351. package/dist/util/encoding.d.ts +20 -0
  352. package/dist/util/encoding.d.ts.map +1 -0
  353. package/dist/util/encoding.js +48 -0
  354. package/dist/util/encoding.js.map +1 -0
  355. package/dist/util/get.d.ts +2 -0
  356. package/dist/util/get.d.ts.map +1 -0
  357. package/dist/util/get.js +14 -0
  358. package/dist/util/get.js.map +1 -0
  359. package/dist/util/provider.d.ts +10 -0
  360. package/dist/util/provider.d.ts.map +1 -0
  361. package/dist/util/provider.js +56 -0
  362. package/dist/util/provider.js.map +1 -0
  363. package/dist/util/validatePreferences.d.ts +13 -0
  364. package/dist/util/validatePreferences.d.ts.map +1 -0
  365. package/dist/util/validatePreferences.js +30 -0
  366. package/dist/util/validatePreferences.js.map +1 -0
  367. package/dist/util/web.d.ts +3 -0
  368. package/dist/util/web.d.ts.map +1 -0
  369. package/dist/util/web.js +100 -0
  370. package/dist/util/web.js.map +1 -0
  371. package/dist/vendor-js/CCA/ca.d.ts +2 -0
  372. package/dist/vendor-js/CCA/ca.d.ts.map +1 -0
  373. package/dist/vendor-js/CCA/ca.js +4608 -0
  374. package/dist/vendor-js/CCA/ca.js.map +1 -0
  375. package/package.json +109 -0
@@ -0,0 +1,67 @@
1
+ import { createSpendPermissionTypedData, dateToTimestampInSeconds, } from '../utils.js';
2
+ import { withTelemetry } from '../withTelemetry.js';
3
+ import { getHash } from './getHash.js';
4
+ /**
5
+ * Requests user approval to create a new spend permission.
6
+ *
7
+ * This helper method opens a prompt to ask the user to sign a spend permission.
8
+ * To learn more about spend permissions, see the [Spend Permission documentation](https://docs.base.org/base-account/improve-ux/spend-permissions).
9
+ *
10
+ * The method uses EIP-712 typed data signing to create a cryptographically secure
11
+ * permission that can be verified on-chain. The resulting permission object contains
12
+ * the signature and all necessary data for later use.
13
+ *
14
+ * @param params - The parameters for the requestSpendPermission method.
15
+ * @param params.provider - Base Account Provider
16
+ * @param params.account - The account to request a spend permission for.
17
+ * @param params.spender - The spender to request a spend permission for.
18
+ * @param params.token - The token to request a spend permission for.
19
+ * @param params.chainId - The chain ID to request a spend permission for.
20
+ * @param params.allowance - The allowance to request a spend permission for.
21
+ * @param params.periodInDays - The peroid in days for the allowance to be valid for.
22
+ * @param params.start - The start date for the allowance to be valid from.
23
+ * @param params.end - The end date for the allowance to be valid until next period starts.
24
+ * @param params.salt - Salt
25
+ * @param params.extraData - The extra data to use for the allowance.
26
+ *
27
+ * @returns A promise that resolves to a SpendPermission object containing the signature and permission details.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import { requestSpendPermission } from '@startale/app-sdk/spend-permission';
32
+ *
33
+ * // Request approval for a spend permission
34
+ * const permission = await requestSpendPermission({
35
+ * provider, // Base Account Provider
36
+ * account: '0x1234...',
37
+ * spender: '0x5678...',
38
+ * token: '0xabcd...', // USDC address
39
+ * chainId: 8453, // Base mainnet
40
+ * allowance: parseUnits('100', 6), // 100 USDC
41
+ * periodInDays: 30, // Monthly allowance
42
+ * });
43
+ *
44
+ * console.log('Permission created:', permission.signature);
45
+ * ```
46
+ */
47
+ const requestSpendPermissionFn = async (request) => {
48
+ const { provider, account, chainId } = request;
49
+ const typedData = createSpendPermissionTypedData(request);
50
+ const [signature, permissionHash] = await Promise.all([
51
+ provider.request({
52
+ method: 'eth_signTypedData_v4',
53
+ params: [account, typedData],
54
+ }),
55
+ getHash({ permission: typedData.message, chainId }),
56
+ ]);
57
+ const permission = {
58
+ createdAt: dateToTimestampInSeconds(new Date()),
59
+ permissionHash,
60
+ signature,
61
+ chainId,
62
+ permission: typedData.message,
63
+ };
64
+ return permission;
65
+ };
66
+ export const requestSpendPermission = withTelemetry(requestSpendPermissionFn);
67
+ //# sourceMappingURL=requestSpendPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestSpendPermission.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/requestSpendPermission.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,8BAA8B,EAC9B,wBAAwB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAetC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,wBAAwB,GAAG,KAAK,EACrC,OAAqE,EAC1C,EAAE;IAC7B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE9C,MAAM,SAAS,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAA;IAEzD,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC;YAChB,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;SAC5B,CAAoB;QACrB,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;KACnD,CAAC,CAAA;IAEF,MAAM,UAAU,GAAoB;QACnC,SAAS,EAAE,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/C,cAAc;QACd,SAAS;QACT,OAAO;QACP,UAAU,EAAE,SAAS,CAAC,OAAO;KAC7B,CAAA;IAED,OAAO,UAAU,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAA"}
@@ -0,0 +1,81 @@
1
+ import { SpendPermission } from '../../../core/rpc/coinbase_fetchSpendPermissions.js';
2
+ import { spendPermissionManagerAddress } from '../../../sign/app-sdk/utils/constants.js';
3
+ import { Address, Hex } from 'viem';
4
+ import { RequestSpendPermissionType } from './methods/requestSpendPermission.js';
5
+ declare const SPEND_PERMISSION_TYPED_DATA_TYPES: {
6
+ SpendPermission: {
7
+ name: string;
8
+ type: string;
9
+ }[];
10
+ };
11
+ export type SpendPermissionTypedData = {
12
+ domain: {
13
+ name: 'Spend Permission Manager';
14
+ version: '1';
15
+ chainId: number;
16
+ verifyingContract: typeof spendPermissionManagerAddress;
17
+ };
18
+ types: typeof SPEND_PERMISSION_TYPED_DATA_TYPES;
19
+ primaryType: 'SpendPermission';
20
+ message: {
21
+ account: Address;
22
+ spender: Address;
23
+ token: Address;
24
+ allowance: string;
25
+ period: number;
26
+ start: number;
27
+ end: number;
28
+ salt: string;
29
+ extraData: Hex;
30
+ };
31
+ };
32
+ export declare function createSpendPermissionTypedData(request: RequestSpendPermissionType): SpendPermissionTypedData;
33
+ /**
34
+ * Converts a JavaScript Date object to a Unix timestamp in seconds.
35
+ *
36
+ * @param date - The Date object to convert.
37
+ * @returns The Unix timestamp in seconds.
38
+ */
39
+ export declare function dateToTimestampInSeconds(date: Date): number;
40
+ /**
41
+
42
+ * Converts a Unix timestamp in seconds to a Date object.
43
+ *
44
+ * @param timestamp - The Unix timestamp in seconds.
45
+ * @returns A Date object.
46
+ */
47
+ export declare function timestampInSecondsToDate(timestamp: number): Date;
48
+ /**
49
+ * Converts a SpendPermission object to the arguments expected by the SpendPermissionManager contract.
50
+ *
51
+ * This function creates the standard args in the correct order.
52
+ *
53
+ * @param permission - The SpendPermission object to convert.
54
+ * @returns The arguments expected by the SpendPermissionManager contract.
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * import { toSpendPermissionArgs } from '@startale/app-sdk/spend-permission';
59
+ *
60
+ * const args = toSpendPermissionArgs(permission);
61
+ * const currentPeriod = await readContract(client, {
62
+ * address: spendPermissionManagerAddress,
63
+ * abi: spendPermissionManagerAbi,
64
+ * functionName: 'getCurrentPeriod',
65
+ * args: [args]
66
+ * });
67
+ * ```
68
+ */
69
+ export declare function toSpendPermissionArgs(permission: SpendPermission): {
70
+ account: `0x${string}`;
71
+ spender: `0x${string}`;
72
+ token: `0x${string}`;
73
+ allowance: bigint;
74
+ period: number;
75
+ start: number;
76
+ end: number;
77
+ salt: bigint;
78
+ extraData: Hex;
79
+ };
80
+ export {};
81
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAc,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAIhF,QAAA,MAAM,iCAAiC;;;;;CAuCtC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE;QACP,IAAI,EAAE,0BAA0B,CAAA;QAChC,OAAO,EAAE,GAAG,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,iBAAiB,EAAE,OAAO,6BAA6B,CAAA;KACvD,CAAA;IACD,KAAK,EAAE,OAAO,iCAAiC,CAAA;IAC/C,WAAW,EAAE,iBAAiB,CAAA;IAC9B,OAAO,EAAE;QACR,OAAO,EAAE,OAAO,CAAA;QAChB,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,EAAE,OAAO,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,GAAG,CAAA;KACd,CAAA;CACD,CAAA;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,0BAA0B,GACjC,wBAAwB,CAmC1B;AAaD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe;;;;;;;;;eAsBvC,GAAG;EAE5B"}
@@ -0,0 +1,130 @@
1
+ import { spendPermissionManagerAddress } from '../../../sign/app-sdk/utils/constants.js';
2
+ import { getAddress } from 'viem';
3
+ const ETERNITY_TIMESTAMP = 281474976710655; // 2^48 - 1
4
+ const SPEND_PERMISSION_TYPED_DATA_TYPES = {
5
+ SpendPermission: [
6
+ {
7
+ name: 'account',
8
+ type: 'address',
9
+ },
10
+ {
11
+ name: 'spender',
12
+ type: 'address',
13
+ },
14
+ {
15
+ name: 'token',
16
+ type: 'address',
17
+ },
18
+ {
19
+ name: 'allowance',
20
+ type: 'uint160',
21
+ },
22
+ {
23
+ name: 'period',
24
+ type: 'uint48',
25
+ },
26
+ {
27
+ name: 'start',
28
+ type: 'uint48',
29
+ },
30
+ {
31
+ name: 'end',
32
+ type: 'uint48',
33
+ },
34
+ {
35
+ name: 'salt',
36
+ type: 'uint256',
37
+ },
38
+ {
39
+ name: 'extraData',
40
+ type: 'bytes',
41
+ },
42
+ ],
43
+ };
44
+ export function createSpendPermissionTypedData(request) {
45
+ const { account, spender, token, chainId, allowance, periodInDays, start, end, salt, extraData, } = request;
46
+ return {
47
+ domain: {
48
+ name: 'Spend Permission Manager',
49
+ version: '1',
50
+ chainId: chainId,
51
+ verifyingContract: spendPermissionManagerAddress,
52
+ },
53
+ types: SPEND_PERMISSION_TYPED_DATA_TYPES,
54
+ primaryType: 'SpendPermission',
55
+ message: {
56
+ account: getAddress(account),
57
+ spender: getAddress(spender),
58
+ token: getAddress(token),
59
+ allowance: allowance.toString(),
60
+ period: 86400 * periodInDays,
61
+ start: dateToTimestampInSeconds(start !== null && start !== void 0 ? start : new Date()),
62
+ end: end ? dateToTimestampInSeconds(end) : ETERNITY_TIMESTAMP,
63
+ salt: salt !== null && salt !== void 0 ? salt : getRandomHexString(32),
64
+ extraData: extraData ? extraData : '0x',
65
+ },
66
+ };
67
+ }
68
+ function getRandomHexString(byteLength) {
69
+ const bytes = new Uint8Array(byteLength);
70
+ crypto.getRandomValues(bytes);
71
+ const hexString = Array.from(bytes)
72
+ .map((b) => b.toString(16).padStart(2, '0'))
73
+ .join('');
74
+ return `0x${hexString}`;
75
+ }
76
+ /**
77
+ * Converts a JavaScript Date object to a Unix timestamp in seconds.
78
+ *
79
+ * @param date - The Date object to convert.
80
+ * @returns The Unix timestamp in seconds.
81
+ */
82
+ export function dateToTimestampInSeconds(date) {
83
+ return Math.floor(date.getTime() / 1000);
84
+ }
85
+ /**
86
+
87
+ * Converts a Unix timestamp in seconds to a Date object.
88
+ *
89
+ * @param timestamp - The Unix timestamp in seconds.
90
+ * @returns A Date object.
91
+ */
92
+ export function timestampInSecondsToDate(timestamp) {
93
+ return new Date(timestamp * 1000);
94
+ }
95
+ /**
96
+ * Converts a SpendPermission object to the arguments expected by the SpendPermissionManager contract.
97
+ *
98
+ * This function creates the standard args in the correct order.
99
+ *
100
+ * @param permission - The SpendPermission object to convert.
101
+ * @returns The arguments expected by the SpendPermissionManager contract.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * import { toSpendPermissionArgs } from '@startale/app-sdk/spend-permission';
106
+ *
107
+ * const args = toSpendPermissionArgs(permission);
108
+ * const currentPeriod = await readContract(client, {
109
+ * address: spendPermissionManagerAddress,
110
+ * abi: spendPermissionManagerAbi,
111
+ * functionName: 'getCurrentPeriod',
112
+ * args: [args]
113
+ * });
114
+ * ```
115
+ */
116
+ export function toSpendPermissionArgs(permission) {
117
+ const { account, spender, token, allowance: allowanceStr, period, start, end, salt, extraData, } = permission.permission;
118
+ return {
119
+ account: getAddress(account),
120
+ spender: getAddress(spender),
121
+ token: getAddress(token),
122
+ allowance: BigInt(allowanceStr),
123
+ period,
124
+ start,
125
+ end,
126
+ salt: BigInt(salt),
127
+ extraData: extraData,
128
+ };
129
+ }
130
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function withTelemetry<T extends (...args: any[]) => any>(fn: T): T | ((...args: Parameters<T>) => ReturnType<T>);
2
+ //# sourceMappingURL=withTelemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withTelemetry.d.ts","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/withTelemetry.ts"],"names":[],"mappings":"AAUA,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,kBAOpD,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAAC,EAe9C"}
@@ -0,0 +1,30 @@
1
+ import { logSpendPermissionUtilCompleted, logSpendPermissionUtilError, logSpendPermissionUtilStarted, } from '../../../core/telemetry/events/spend-permission.js';
2
+ import { parseErrorMessageFromAny } from '../../../core/telemetry/utils.js';
3
+ import { store } from '../../../store/store.js';
4
+ // biome-ignore lint/suspicious/noExplicitAny: HOF
5
+ export function withTelemetry(fn) {
6
+ var _a;
7
+ // Honor the telemetry preference
8
+ const config = store.config.get();
9
+ if (((_a = config.preference) === null || _a === void 0 ? void 0 : _a.telemetry) === false) {
10
+ return fn;
11
+ }
12
+ return (...args) => {
13
+ const functionName = getFunctionName(fn);
14
+ logSpendPermissionUtilStarted(functionName);
15
+ try {
16
+ const result = fn(...args);
17
+ logSpendPermissionUtilCompleted(functionName);
18
+ return result;
19
+ }
20
+ catch (error) {
21
+ logSpendPermissionUtilError(functionName, parseErrorMessageFromAny(error));
22
+ throw error;
23
+ }
24
+ };
25
+ }
26
+ // biome-ignore lint/suspicious/noExplicitAny: HOF helper
27
+ function getFunctionName(fn) {
28
+ return fn.name.replace('Fn', '');
29
+ }
30
+ //# sourceMappingURL=withTelemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withTelemetry.js","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/withTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,GAC7B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAoC,EAAK;;IACrE,iCAAiC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;IACjC,IAAI,CAAA,MAAA,MAAM,CAAC,UAAU,0CAAE,SAAS,MAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAA;IACV,CAAC;IAED,OAAO,CAAC,GAAG,IAAmB,EAAiB,EAAE;QAChD,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QACxC,6BAA6B,CAAC,YAAY,CAAC,CAAA;QAC3C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;YAC1B,+BAA+B,CAAC,YAAY,CAAC,CAAA;YAC7C,OAAO,MAAM,CAAA;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,2BAA2B,CAC1B,YAAY,EACZ,wBAAwB,CAAC,KAAK,CAAC,CAC/B,CAAA;YACD,MAAM,KAAK,CAAA;QACZ,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,yDAAyD;AACzD,SAAS,eAAe,CAAC,EAA2B;IACnD,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAA4B,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { PublicKey } from 'ox';
2
+ import { LocalAccount, OneOf } from 'viem';
3
+ import { type WebAuthnAccount } from 'viem/account-abstraction';
4
+ export type P256KeyPair = {
5
+ privateKey: CryptoKey;
6
+ publicKey: PublicKey.PublicKey;
7
+ };
8
+ export declare const STORAGE_SCOPE = "base-acc-sdk";
9
+ export declare const STORAGE_NAME = "keys";
10
+ export declare const ACTIVE_ID_KEY = "activeId";
11
+ export declare const storage: import("./storage.js").AsyncStorage;
12
+ export declare function generateKeyPair(): Promise<P256KeyPair>;
13
+ export declare function getKeypair(): Promise<P256KeyPair | null>;
14
+ export declare function getCryptoKeyAccount(): Promise<{
15
+ account: OneOf<WebAuthnAccount | LocalAccount> | null;
16
+ }>;
17
+ export declare function removeCryptoKey(): Promise<void>;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kms/crypto-key/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAA0C,MAAM,IAAI,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,EAA8B,MAAM,MAAM,CAAA;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAI/D,MAAM,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,SAAS,CAAA;IACrB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC9B,CAAA;AAKD,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAC3C,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,aAAa,CAAA;AAKvC,eAAO,MAAM,OAAO,qCAA6C,CAAA;AAKjE,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAQ5D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAU9D;AAuDD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACpD,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,IAAI,CAAA;CACrD,CAAC,CAKD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD"}
@@ -0,0 +1,97 @@
1
+ import { Hex, PublicKey, Signature, WebAuthnP256, WebCryptoP256 } from 'ox';
2
+ import { hashMessage, hashTypedData } from 'viem';
3
+ import { createStorage } from './storage.js';
4
+ // *****************************************************************
5
+ // Constants
6
+ // *****************************************************************
7
+ export const STORAGE_SCOPE = 'base-acc-sdk';
8
+ export const STORAGE_NAME = 'keys';
9
+ export const ACTIVE_ID_KEY = 'activeId';
10
+ // *****************************************************************
11
+ // Storage
12
+ // *****************************************************************
13
+ export const storage = createStorage(STORAGE_SCOPE, STORAGE_NAME);
14
+ // *****************************************************************
15
+ // Functions
16
+ // *****************************************************************
17
+ export async function generateKeyPair() {
18
+ const keypair = await WebCryptoP256.createKeyPair({ extractable: false });
19
+ const publicKey = Hex.slice(PublicKey.toHex(keypair.publicKey), 1);
20
+ await storage.setItem(publicKey, keypair);
21
+ await storage.setItem(ACTIVE_ID_KEY, publicKey);
22
+ return keypair;
23
+ }
24
+ export async function getKeypair() {
25
+ const id = await storage.getItem(ACTIVE_ID_KEY);
26
+ if (!id) {
27
+ return null;
28
+ }
29
+ const keypair = await storage.getItem(id);
30
+ if (!keypair) {
31
+ return null;
32
+ }
33
+ return keypair;
34
+ }
35
+ async function getOrCreateKeypair() {
36
+ const keypair = await getKeypair();
37
+ if (!keypair) {
38
+ const kp = await generateKeyPair();
39
+ const pubKey = Hex.slice(PublicKey.toHex(kp.publicKey), 1);
40
+ await storage.setItem(pubKey, kp);
41
+ await storage.setItem(ACTIVE_ID_KEY, pubKey);
42
+ return kp;
43
+ }
44
+ return keypair;
45
+ }
46
+ async function getAccount() {
47
+ const keypair = await getOrCreateKeypair();
48
+ /**
49
+ * public key / address
50
+ */
51
+ const publicKey = Hex.slice(PublicKey.toHex(keypair.publicKey), 1);
52
+ const sign = async (payload) => {
53
+ const { payload: message, metadata } = WebAuthnP256.getSignPayload({
54
+ challenge: payload,
55
+ origin: 'https://keys.coinbase.com',
56
+ userVerification: 'preferred',
57
+ });
58
+ const signature = await WebCryptoP256.sign({
59
+ payload: message,
60
+ privateKey: keypair.privateKey,
61
+ });
62
+ return {
63
+ signature: Signature.toHex(signature),
64
+ raw: {}, // type changed in viem
65
+ webauthn: metadata,
66
+ };
67
+ };
68
+ return {
69
+ id: publicKey,
70
+ publicKey,
71
+ async sign({ hash }) {
72
+ return sign(hash);
73
+ },
74
+ async signMessage({ message }) {
75
+ return sign(hashMessage(message));
76
+ },
77
+ async signTypedData(parameters) {
78
+ return sign(hashTypedData(parameters));
79
+ },
80
+ type: 'webAuthn',
81
+ };
82
+ }
83
+ export async function getCryptoKeyAccount() {
84
+ const account = await getAccount();
85
+ return {
86
+ account,
87
+ };
88
+ }
89
+ export async function removeCryptoKey() {
90
+ const keypair = await getKeypair();
91
+ if (!keypair) {
92
+ return;
93
+ }
94
+ await storage.removeItem(Hex.slice(PublicKey.toHex(keypair.publicKey), 1));
95
+ await storage.removeItem(ACTIVE_ID_KEY);
96
+ }
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kms/crypto-key/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type AsyncStorage = {
2
+ getItem: <T>(key: string) => Promise<T | null>;
3
+ removeItem: (key: string) => Promise<void>;
4
+ setItem: (key: string, value: unknown) => Promise<void>;
5
+ };
6
+ export declare function createStorage(scope: string, name: string): AsyncStorage;
7
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/kms/crypto-key/storage.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAkBvE"}
@@ -0,0 +1,20 @@
1
+ import { createStore, del, get, set } from 'idb-keyval';
2
+ export function createStorage(scope, name) {
3
+ const store = typeof indexedDB !== 'undefined' ? createStore(scope, name) : undefined;
4
+ return {
5
+ getItem: async (key) => {
6
+ const value = await get(key, store);
7
+ if (!value) {
8
+ return null;
9
+ }
10
+ return value;
11
+ },
12
+ removeItem: async (key) => {
13
+ return del(key, store);
14
+ },
15
+ setItem: async (key, value) => {
16
+ return set(key, value, store);
17
+ },
18
+ };
19
+ }
20
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/kms/crypto-key/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAQvD,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAY;IACxD,MAAM,KAAK,GACV,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxE,OAAO;QACN,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAA;YACZ,CAAC;YACD,OAAO,KAAK,CAAA;QACb,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YACjC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,KAAc,EAAE,EAAE;YAC9C,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare class SCWKeyManager {
2
+ private ownPrivateKey;
3
+ private ownPublicKey;
4
+ private peerPublicKey;
5
+ private sharedSecret;
6
+ getOwnPublicKey(): Promise<CryptoKey>;
7
+ getSharedSecret(): Promise<CryptoKey | null>;
8
+ setPeerPublicKey(key: CryptoKey): Promise<void>;
9
+ clear(): Promise<void>;
10
+ private generateKeyPair;
11
+ private loadKeysIfNeeded;
12
+ private loadKey;
13
+ private storeKey;
14
+ }
15
+ //# sourceMappingURL=SCWKeyManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SCWKeyManager.d.ts","sourceRoot":"","sources":["../../../src/sign/app-sdk/SCWKeyManager.ts"],"names":[],"mappings":"AAyBA,qBAAa,aAAa;IACzB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAEvC,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC;IAMrC,eAAe,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK5C,gBAAgB,CAAC,GAAG,EAAE,SAAS;IAO/B,KAAK;YASG,eAAe;YAQf,gBAAgB;YA2BhB,OAAO;YAOP,QAAQ;CAItB"}
@@ -0,0 +1,82 @@
1
+ import { store } from '../../store/store.js';
2
+ import { deriveSharedSecret, exportKeyToHexString, generateKeyPair, importKeyFromHexString, } from '../../util/cipher.js';
3
+ const OWN_PRIVATE_KEY = {
4
+ storageKey: 'ownPrivateKey',
5
+ keyType: 'private',
6
+ };
7
+ const OWN_PUBLIC_KEY = {
8
+ storageKey: 'ownPublicKey',
9
+ keyType: 'public',
10
+ };
11
+ const PEER_PUBLIC_KEY = {
12
+ storageKey: 'peerPublicKey',
13
+ keyType: 'public',
14
+ };
15
+ export class SCWKeyManager {
16
+ constructor() {
17
+ this.ownPrivateKey = null;
18
+ this.ownPublicKey = null;
19
+ this.peerPublicKey = null;
20
+ this.sharedSecret = null;
21
+ }
22
+ async getOwnPublicKey() {
23
+ await this.loadKeysIfNeeded();
24
+ return this.ownPublicKey;
25
+ }
26
+ // returns null if the shared secret is not yet derived
27
+ async getSharedSecret() {
28
+ await this.loadKeysIfNeeded();
29
+ return this.sharedSecret;
30
+ }
31
+ async setPeerPublicKey(key) {
32
+ this.sharedSecret = null;
33
+ this.peerPublicKey = key;
34
+ await this.storeKey(PEER_PUBLIC_KEY, key);
35
+ await this.loadKeysIfNeeded();
36
+ }
37
+ async clear() {
38
+ this.ownPrivateKey = null;
39
+ this.ownPublicKey = null;
40
+ this.peerPublicKey = null;
41
+ this.sharedSecret = null;
42
+ store.keys.clear();
43
+ }
44
+ async generateKeyPair() {
45
+ const newKeyPair = await generateKeyPair();
46
+ this.ownPrivateKey = newKeyPair.privateKey;
47
+ this.ownPublicKey = newKeyPair.publicKey;
48
+ await this.storeKey(OWN_PRIVATE_KEY, newKeyPair.privateKey);
49
+ await this.storeKey(OWN_PUBLIC_KEY, newKeyPair.publicKey);
50
+ }
51
+ async loadKeysIfNeeded() {
52
+ if (this.ownPrivateKey === null) {
53
+ this.ownPrivateKey = await this.loadKey(OWN_PRIVATE_KEY);
54
+ }
55
+ if (this.ownPublicKey === null) {
56
+ this.ownPublicKey = await this.loadKey(OWN_PUBLIC_KEY);
57
+ }
58
+ if (this.ownPrivateKey === null || this.ownPublicKey === null) {
59
+ await this.generateKeyPair();
60
+ }
61
+ if (this.peerPublicKey === null) {
62
+ this.peerPublicKey = await this.loadKey(PEER_PUBLIC_KEY);
63
+ }
64
+ if (this.sharedSecret === null) {
65
+ if (this.ownPrivateKey === null || this.peerPublicKey === null)
66
+ return;
67
+ this.sharedSecret = await deriveSharedSecret(this.ownPrivateKey, this.peerPublicKey);
68
+ }
69
+ }
70
+ // storage methods
71
+ async loadKey(item) {
72
+ const key = store.keys.get(item.storageKey);
73
+ if (!key)
74
+ return null;
75
+ return importKeyFromHexString(item.keyType, key);
76
+ }
77
+ async storeKey(item, key) {
78
+ const hexString = await exportKeyToHexString(item.keyType, key);
79
+ store.keys.set(item.storageKey, hexString);
80
+ }
81
+ }
82
+ //# sourceMappingURL=SCWKeyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SCWKeyManager.js","sourceRoot":"","sources":["../../../src/sign/app-sdk/SCWKeyManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Communicator } from '../../core/communicator/Communicator.js';
2
+ import { AppMetadata, ProviderEventCallback, RequestArguments } from '../../core/provider/interface.js';
3
+ type ConstructorOptions = {
4
+ metadata: AppMetadata;
5
+ communicator: Communicator;
6
+ callback: ProviderEventCallback | null;
7
+ };
8
+ export declare class Signer {
9
+ private readonly communicator;
10
+ private readonly keyManager;
11
+ private callback;
12
+ private accounts;
13
+ private chain;
14
+ constructor(params: ConstructorOptions);
15
+ get isConnected(): boolean;
16
+ handshake(args: RequestArguments): Promise<void>;
17
+ request(request: RequestArguments): Promise<any>;
18
+ _request(request: RequestArguments): Promise<any>;
19
+ private sendRequestToPopup;
20
+ private handleResponse;
21
+ cleanup(): Promise<void>;
22
+ /**
23
+ * @returns `null` if the request was successful.
24
+ * https://eips.ethereum.org/EIPS/eip-3326#wallet_switchethereumchain
25
+ */
26
+ private handleSwitchChainRequest;
27
+ private handleGetCapabilitiesRequest;
28
+ private handleGetUserInfoRequest;
29
+ private sendEncryptedRequest;
30
+ private createRequestMessage;
31
+ private decryptResponseMessage;
32
+ private updateChain;
33
+ private addSubAccount;
34
+ private shouldRequestUseSubAccountSigner;
35
+ private sendRequestToSubAccountSigner;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=Signer.d.ts.map