rise-wallet 0.1.4-beta.1 → 0.2.28

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 (486) hide show
  1. package/README.md +64 -34
  2. package/dist/cli/Dialog.d.ts +34 -0
  3. package/dist/cli/Dialog.js +60 -0
  4. package/dist/cli/Dialog.js.map +1 -0
  5. package/dist/cli/Messenger.d.ts +7 -0
  6. package/dist/cli/Messenger.js +123 -0
  7. package/dist/cli/Messenger.js.map +1 -0
  8. package/dist/cli/bin/commands-D7N5ucUu.js +50 -0
  9. package/dist/cli/bin/index.js +9 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/cli/internal/http.d.ts +6 -0
  14. package/dist/cli/internal/http.js +17 -0
  15. package/dist/cli/internal/http.js.map +1 -0
  16. package/dist/cli/tsdown.config.d.ts +2 -0
  17. package/dist/cli/tsdown.config.js +28 -0
  18. package/dist/cli/tsdown.config.js.map +1 -0
  19. package/dist/core/Chains.d.ts +210 -0
  20. package/dist/core/Chains.js +20 -0
  21. package/dist/core/Chains.js.map +1 -0
  22. package/dist/core/Dialog.d.ts +307 -0
  23. package/dist/core/Dialog.js +809 -0
  24. package/dist/core/Dialog.js.map +1 -0
  25. package/dist/core/Messenger.d.ts +164 -0
  26. package/dist/core/Messenger.js +207 -0
  27. package/dist/core/Messenger.js.map +1 -0
  28. package/dist/core/Mode.d.ts +4 -0
  29. package/dist/core/Mode.js +5 -0
  30. package/dist/core/Mode.js.map +1 -0
  31. package/dist/core/Porto.d.ts +1608 -0
  32. package/dist/core/Porto.js +105 -0
  33. package/dist/core/Porto.js.map +1 -0
  34. package/dist/core/RpcSchema.d.ts +81 -0
  35. package/dist/core/RpcSchema.js +2 -0
  36. package/dist/core/RpcSchema.js.map +1 -0
  37. package/dist/core/Storage.d.ts +14 -0
  38. package/dist/core/Storage.js +109 -0
  39. package/dist/core/Storage.js.map +1 -0
  40. package/dist/core/Transport.d.ts +22 -0
  41. package/dist/core/Transport.js +37 -0
  42. package/dist/core/Transport.js.map +1 -0
  43. package/dist/core/internal/_generated/chains.d.ts +1 -0
  44. package/dist/core/internal/_generated/chains.js +3 -0
  45. package/dist/core/internal/_generated/chains.js.map +1 -0
  46. package/dist/core/internal/_generated/contracts/IthacaAccount.d.ts +1120 -0
  47. package/dist/core/internal/_generated/contracts/IthacaAccount.js +1453 -0
  48. package/dist/core/internal/_generated/contracts/IthacaAccount.js.map +1 -0
  49. package/dist/core/internal/call.d.ts +163 -0
  50. package/dist/core/internal/call.js +115 -0
  51. package/dist/core/internal/call.js.map +1 -0
  52. package/dist/core/internal/erc8010.d.ts +17 -0
  53. package/dist/core/internal/erc8010.js +29 -0
  54. package/dist/core/internal/erc8010.js.map +1 -0
  55. package/dist/core/internal/intersectionObserver.d.ts +1 -0
  56. package/dist/core/internal/intersectionObserver.js +5 -0
  57. package/dist/core/internal/intersectionObserver.js.map +1 -0
  58. package/dist/core/internal/logger.d.ts +21 -0
  59. package/dist/core/internal/logger.js +24 -0
  60. package/dist/core/internal/logger.js.map +1 -0
  61. package/dist/core/internal/mode.d.ts +344 -0
  62. package/dist/core/internal/mode.js +110 -0
  63. package/dist/core/internal/mode.js.map +1 -0
  64. package/dist/core/internal/modes/dialog.d.ts +799 -0
  65. package/dist/core/internal/modes/dialog.js +760 -0
  66. package/dist/core/internal/modes/dialog.js.map +1 -0
  67. package/dist/core/internal/modes/reactNative.d.ts +1401 -0
  68. package/dist/core/internal/modes/reactNative.js +19 -0
  69. package/dist/core/internal/modes/reactNative.js.map +1 -0
  70. package/dist/core/internal/modes/relay.d.ts +684 -0
  71. package/dist/core/internal/modes/relay.js +708 -0
  72. package/dist/core/internal/modes/relay.js.map +1 -0
  73. package/dist/core/internal/permissions.d.ts +59 -0
  74. package/dist/core/internal/permissions.js +30 -0
  75. package/dist/core/internal/permissions.js.map +1 -0
  76. package/dist/core/internal/permissionsRequest.d.ts +71 -0
  77. package/dist/core/internal/permissionsRequest.js +58 -0
  78. package/dist/core/internal/permissionsRequest.js.map +1 -0
  79. package/dist/core/internal/porto.d.ts +13 -0
  80. package/dist/core/internal/porto.js +2 -0
  81. package/dist/core/internal/porto.js.map +1 -0
  82. package/dist/core/internal/promise.d.ts +8 -0
  83. package/dist/core/internal/promise.js +11 -0
  84. package/dist/core/internal/promise.js.map +1 -0
  85. package/dist/core/internal/provider.d.ts +29 -0
  86. package/dist/core/internal/provider.js +941 -0
  87. package/dist/core/internal/provider.js.map +1 -0
  88. package/dist/core/internal/relay/rpcSchema.d.ts +75 -0
  89. package/dist/core/internal/relay/rpcSchema.js +7 -0
  90. package/dist/core/internal/relay/rpcSchema.js.map +1 -0
  91. package/dist/core/internal/relay/schema/capabilities.d.ts +164 -0
  92. package/dist/core/internal/relay/schema/capabilities.js +112 -0
  93. package/dist/core/internal/relay/schema/capabilities.js.map +1 -0
  94. package/dist/core/internal/relay/schema/intent.d.ts +167 -0
  95. package/dist/core/internal/relay/schema/intent.js +170 -0
  96. package/dist/core/internal/relay/schema/intent.js.map +1 -0
  97. package/dist/core/internal/relay/schema/key.d.ts +43 -0
  98. package/dist/core/internal/relay/schema/key.js +30 -0
  99. package/dist/core/internal/relay/schema/key.js.map +1 -0
  100. package/dist/core/internal/relay/schema/permission.d.ts +39 -0
  101. package/dist/core/internal/relay/schema/permission.js +29 -0
  102. package/dist/core/internal/relay/schema/permission.js.map +1 -0
  103. package/dist/core/internal/relay/schema/preCall.d.ts +62 -0
  104. package/dist/core/internal/relay/schema/preCall.js +36 -0
  105. package/dist/core/internal/relay/schema/preCall.js.map +1 -0
  106. package/dist/core/internal/relay/schema/quotes.d.ts +369 -0
  107. package/dist/core/internal/relay/schema/quotes.js +89 -0
  108. package/dist/core/internal/relay/schema/quotes.js.map +1 -0
  109. package/dist/core/internal/relay/schema/rpc.d.ts +1528 -0
  110. package/dist/core/internal/relay/schema/rpc.js +638 -0
  111. package/dist/core/internal/relay/schema/rpc.js.map +1 -0
  112. package/dist/core/internal/relay/schema/token.d.ts +13 -0
  113. package/dist/core/internal/relay/schema/token.js +13 -0
  114. package/dist/core/internal/relay/schema/token.js.map +1 -0
  115. package/dist/core/internal/requiredFunds.d.ts +18 -0
  116. package/dist/core/internal/requiredFunds.js +25 -0
  117. package/dist/core/internal/requiredFunds.js.map +1 -0
  118. package/dist/core/internal/schema/capabilities.d.ts +313 -0
  119. package/dist/core/internal/schema/capabilities.js +133 -0
  120. package/dist/core/internal/schema/capabilities.js.map +1 -0
  121. package/dist/core/internal/schema/key.d.ts +164 -0
  122. package/dist/core/internal/schema/key.js +75 -0
  123. package/dist/core/internal/schema/key.js.map +1 -0
  124. package/dist/core/internal/schema/permissions.d.ts +102 -0
  125. package/dist/core/internal/schema/permissions.js +28 -0
  126. package/dist/core/internal/schema/permissions.js.map +1 -0
  127. package/dist/core/internal/schema/request.d.ts +937 -0
  128. package/dist/core/internal/schema/request.js +57 -0
  129. package/dist/core/internal/schema/request.js.map +1 -0
  130. package/dist/core/internal/schema/rpc.d.ts +3314 -0
  131. package/dist/core/internal/schema/rpc.js +599 -0
  132. package/dist/core/internal/schema/rpc.js.map +1 -0
  133. package/dist/core/internal/schema/token.d.ts +1 -0
  134. package/dist/core/internal/schema/token.js +2 -0
  135. package/dist/core/internal/schema/token.js.map +1 -0
  136. package/dist/core/internal/schema/utils.d.ts +18 -0
  137. package/dist/core/internal/schema/utils.js +213 -0
  138. package/dist/core/internal/schema/utils.js.map +1 -0
  139. package/dist/core/internal/siwe.d.ts +32 -0
  140. package/dist/core/internal/siwe.js +92 -0
  141. package/dist/core/internal/siwe.js.map +1 -0
  142. package/dist/core/internal/store.d.ts +2 -0
  143. package/dist/core/internal/store.js +9 -0
  144. package/dist/core/internal/store.js.map +1 -0
  145. package/dist/core/internal/tokens.d.ts +57 -0
  146. package/dist/core/internal/tokens.js +69 -0
  147. package/dist/core/internal/tokens.js.map +1 -0
  148. package/dist/core/internal/types.d.ts +298 -0
  149. package/dist/core/internal/types.js +2 -0
  150. package/dist/core/internal/types.js.map +1 -0
  151. package/dist/core/internal/urlString.d.ts +1 -0
  152. package/dist/core/internal/urlString.js +8 -0
  153. package/dist/core/internal/urlString.js.map +1 -0
  154. package/dist/core/internal/userAgent.d.ts +10 -0
  155. package/dist/core/internal/userAgent.js +19 -0
  156. package/dist/core/internal/userAgent.js.map +1 -0
  157. package/dist/core/internal/utils.d.ts +24 -0
  158. package/dist/core/internal/utils.js +62 -0
  159. package/dist/core/internal/utils.js.map +1 -0
  160. package/dist/core/react-native/Porto.d.ts +1480 -0
  161. package/dist/core/react-native/Porto.js +17 -0
  162. package/dist/core/react-native/Porto.js.map +1 -0
  163. package/dist/core/react-native/configure.d.ts +9 -0
  164. package/dist/core/react-native/configure.js +24 -0
  165. package/dist/core/react-native/configure.js.map +1 -0
  166. package/dist/core/react-native/environment.d.ts +26 -0
  167. package/dist/core/react-native/environment.js +13 -0
  168. package/dist/core/react-native/environment.js.map +1 -0
  169. package/dist/core/react-native/index.d.ts +4 -0
  170. package/dist/core/react-native/index.js +5 -0
  171. package/dist/core/react-native/index.js.map +1 -0
  172. package/dist/core/react-native/utils.d.ts +1 -0
  173. package/dist/core/react-native/utils.js +12 -0
  174. package/dist/core/react-native/utils.js.map +1 -0
  175. package/dist/index.d.ts +16 -2
  176. package/dist/index.js +15 -2
  177. package/dist/index.js.map +1 -0
  178. package/dist/internal/index.d.ts +3 -0
  179. package/dist/internal/index.js +4 -0
  180. package/dist/internal/index.js.map +1 -0
  181. package/dist/react-native/crypto.d.ts +1 -0
  182. package/dist/react-native/crypto.js +12 -0
  183. package/dist/react-native/crypto.js.map +1 -0
  184. package/dist/react-native/index.d.ts +7 -0
  185. package/dist/react-native/index.js +12 -0
  186. package/dist/react-native/index.js.map +1 -0
  187. package/dist/react-native/register.d.ts +2 -0
  188. package/dist/react-native/register.js +15 -0
  189. package/dist/react-native/register.js.map +1 -0
  190. package/dist/register/index.d.ts +14 -0
  191. package/dist/register/index.js +2 -0
  192. package/dist/register/index.js.map +1 -0
  193. package/dist/remote/Actions.d.ts +33 -0
  194. package/dist/remote/Actions.js +76 -0
  195. package/dist/remote/Actions.js.map +1 -0
  196. package/dist/remote/Events.d.ts +46 -0
  197. package/dist/remote/Events.js +132 -0
  198. package/dist/remote/Events.js.map +1 -0
  199. package/dist/remote/Hooks.d.ts +3800 -0
  200. package/dist/remote/Hooks.js +106 -0
  201. package/dist/remote/Hooks.js.map +1 -0
  202. package/dist/remote/Porto.d.ts +857 -0
  203. package/dist/remote/Porto.js +66 -0
  204. package/dist/remote/Porto.js.map +1 -0
  205. package/dist/remote/index.d.ts +4 -0
  206. package/dist/remote/index.js +5 -0
  207. package/dist/remote/index.js.map +1 -0
  208. package/dist/remote/internal/methodPolicies.d.ts +96 -0
  209. package/dist/remote/internal/methodPolicies.js +102 -0
  210. package/dist/remote/internal/methodPolicies.js.map +1 -0
  211. package/dist/server/Route.d.ts +87 -0
  212. package/dist/server/Route.js +189 -0
  213. package/dist/server/Route.js.map +1 -0
  214. package/dist/server/Router.d.ts +23 -0
  215. package/dist/server/Router.js +29 -0
  216. package/dist/server/Router.js.map +1 -0
  217. package/dist/server/index.d.ts +2 -0
  218. package/dist/server/index.js +3 -0
  219. package/dist/server/index.js.map +1 -0
  220. package/dist/server/internal/merchantSchema.d.ts +64 -0
  221. package/dist/server/internal/merchantSchema.js +7 -0
  222. package/dist/server/internal/merchantSchema.js.map +1 -0
  223. package/dist/server/internal/requestListener.d.ts +123 -0
  224. package/dist/server/internal/requestListener.js +172 -0
  225. package/dist/server/internal/requestListener.js.map +1 -0
  226. package/dist/theme/Theme.d.ts +121 -0
  227. package/dist/theme/Theme.js +18 -0
  228. package/dist/theme/Theme.js.map +1 -0
  229. package/dist/theme/index.d.ts +2 -0
  230. package/dist/theme/index.js +2 -0
  231. package/dist/theme/index.js.map +1 -0
  232. package/dist/trusted-hosts.d.ts +1 -0
  233. package/dist/trusted-hosts.js +41 -0
  234. package/dist/trusted-hosts.js.map +1 -0
  235. package/dist/viem/Account.d.ts +110 -0
  236. package/dist/viem/Account.js +132 -0
  237. package/dist/viem/Account.js.map +1 -0
  238. package/dist/viem/AccountActions.d.ts +10 -0
  239. package/dist/viem/AccountActions.js +14 -0
  240. package/dist/viem/AccountActions.js.map +1 -0
  241. package/dist/viem/CapabilitiesSchema.d.ts +14 -0
  242. package/dist/viem/CapabilitiesSchema.js +2 -0
  243. package/dist/viem/CapabilitiesSchema.js.map +1 -0
  244. package/dist/viem/ContractActions.d.ts +208 -0
  245. package/dist/viem/ContractActions.js +350 -0
  246. package/dist/viem/ContractActions.js.map +1 -0
  247. package/dist/viem/Key.d.ts +1155 -0
  248. package/dist/viem/Key.js +924 -0
  249. package/dist/viem/Key.js.map +1 -0
  250. package/dist/viem/RelayActions.d.ts +435 -0
  251. package/dist/viem/RelayActions.js +385 -0
  252. package/dist/viem/RelayActions.js.map +1 -0
  253. package/dist/viem/RelayClient.d.ts +26 -0
  254. package/dist/viem/RelayClient.js +44 -0
  255. package/dist/viem/RelayClient.js.map +1 -0
  256. package/dist/viem/RpcSchema.d.ts +22 -0
  257. package/dist/viem/RpcSchema.js +2 -0
  258. package/dist/viem/RpcSchema.js.map +1 -0
  259. package/dist/viem/WalletActions.d.ts +86 -0
  260. package/dist/viem/WalletActions.js +220 -0
  261. package/dist/viem/WalletActions.js.map +1 -0
  262. package/dist/viem/WalletClient.d.ts +20 -0
  263. package/dist/viem/WalletClient.js +23 -0
  264. package/dist/viem/WalletClient.js.map +1 -0
  265. package/dist/viem/index.d.ts +13 -0
  266. package/dist/viem/index.js +12 -0
  267. package/dist/viem/index.js.map +1 -0
  268. package/dist/viem/internal/relayActions.d.ts +364 -0
  269. package/dist/viem/internal/relayActions.js +783 -0
  270. package/dist/viem/internal/relayActions.js.map +1 -0
  271. package/dist/viem/internal/utils.d.ts +15 -0
  272. package/dist/viem/internal/utils.js +2 -0
  273. package/dist/viem/internal/utils.js.map +1 -0
  274. package/dist/wagmi/Actions.d.ts +1 -0
  275. package/dist/wagmi/Actions.js +2 -0
  276. package/dist/wagmi/Actions.js.map +1 -0
  277. package/dist/wagmi/Connector.d.ts +26 -0
  278. package/dist/wagmi/Connector.js +238 -0
  279. package/dist/wagmi/Connector.js.map +1 -0
  280. package/dist/wagmi/Hooks.d.ts +1 -0
  281. package/dist/wagmi/Hooks.js +2 -0
  282. package/dist/wagmi/Hooks.js.map +1 -0
  283. package/dist/wagmi/Query.d.ts +1 -0
  284. package/dist/wagmi/Query.js +2 -0
  285. package/dist/wagmi/Query.js.map +1 -0
  286. package/dist/wagmi/index.d.ts +4 -0
  287. package/dist/wagmi/index.js +5 -0
  288. package/dist/wagmi/index.js.map +1 -0
  289. package/dist/wagmi/internal/core.d.ts +83 -0
  290. package/dist/wagmi/internal/core.js +229 -0
  291. package/dist/wagmi/internal/core.js.map +1 -0
  292. package/dist/wagmi/internal/query.d.ts +32 -0
  293. package/dist/wagmi/internal/query.js +23 -0
  294. package/dist/wagmi/internal/query.js.map +1 -0
  295. package/dist/wagmi/internal/react.d.ts +90 -0
  296. package/dist/wagmi/internal/react.js +256 -0
  297. package/dist/wagmi/internal/react.js.map +1 -0
  298. package/dist/wagmi/internal/types.d.ts +10 -0
  299. package/dist/wagmi/internal/types.js +2 -0
  300. package/dist/wagmi/internal/types.js.map +1 -0
  301. package/dist/wagmi/internal/utils.d.ts +1 -0
  302. package/dist/wagmi/internal/utils.js +18 -0
  303. package/dist/wagmi/internal/utils.js.map +1 -0
  304. package/package.json +286 -34
  305. package/src/cli/Dialog.ts +75 -0
  306. package/src/cli/Messenger.ts +148 -0
  307. package/src/cli/bin/index.ts +37 -0
  308. package/src/cli/bin/tsconfig.json +8 -0
  309. package/src/cli/index.ts +2 -0
  310. package/src/cli/internal/commands.ts +212 -0
  311. package/src/cli/internal/context.ts +56 -0
  312. package/src/cli/internal/http.ts +28 -0
  313. package/src/cli/internal/utils.ts +28 -0
  314. package/src/cli/tsdown.config.ts +37 -0
  315. package/src/core/Chains.ts +25 -0
  316. package/src/core/Dialog.ts +1059 -0
  317. package/src/core/Messenger.ts +394 -0
  318. package/src/core/Mode.ts +4 -0
  319. package/src/core/Porto.ts +287 -0
  320. package/src/core/RpcSchema.ts +124 -0
  321. package/src/core/Storage.ts +122 -0
  322. package/src/core/Transport.ts +45 -0
  323. package/src/core/internal/_generated/chains.ts +2 -0
  324. package/src/core/internal/_generated/contracts/EIP7702Proxy.ts +25 -0
  325. package/src/core/internal/_generated/contracts/Escrow.ts +330 -0
  326. package/src/core/internal/_generated/contracts/ExperimentERC20.ts +569 -0
  327. package/src/core/internal/_generated/contracts/ExperimentERC721.ts +588 -0
  328. package/src/core/internal/_generated/contracts/GuardedExecutor.ts +623 -0
  329. package/src/core/internal/_generated/contracts/ICallChecker.ts +34 -0
  330. package/src/core/internal/_generated/contracts/ICommon.ts +4 -0
  331. package/src/core/internal/_generated/contracts/IEscrow.ts +114 -0
  332. package/src/core/internal/_generated/contracts/IFunder.ts +80 -0
  333. package/src/core/internal/_generated/contracts/IFunderV4.ts +45 -0
  334. package/src/core/internal/_generated/contracts/IIthacaAccount.ts +107 -0
  335. package/src/core/internal/_generated/contracts/IOAppCore.ts +142 -0
  336. package/src/core/internal/_generated/contracts/IOAppMsgInspector.ts +45 -0
  337. package/src/core/internal/_generated/contracts/IOAppReceiver.ts +161 -0
  338. package/src/core/internal/_generated/contracts/IOrchestrator.ts +95 -0
  339. package/src/core/internal/_generated/contracts/ISettler.ts +52 -0
  340. package/src/core/internal/_generated/contracts/ISigner.ts +34 -0
  341. package/src/core/internal/_generated/contracts/IthacaAccount.ts +1454 -0
  342. package/src/core/internal/_generated/contracts/IthacaAccountNew.ts +1454 -0
  343. package/src/core/internal/_generated/contracts/IthacaAccountOld.ts +1454 -0
  344. package/src/core/internal/_generated/contracts/LayerZeroSettler.ts +811 -0
  345. package/src/core/internal/_generated/contracts/LibNonce.ts +15 -0
  346. package/src/core/internal/_generated/contracts/LibTStack.ts +4 -0
  347. package/src/core/internal/_generated/contracts/MultiSigSigner.ts +203 -0
  348. package/src/core/internal/_generated/contracts/OApp.ts +412 -0
  349. package/src/core/internal/_generated/contracts/OAppCore.ts +229 -0
  350. package/src/core/internal/_generated/contracts/OAppReceiver.ts +396 -0
  351. package/src/core/internal/_generated/contracts/OAppSender.ts +245 -0
  352. package/src/core/internal/_generated/contracts/Orchestrator.ts +390 -0
  353. package/src/core/internal/_generated/contracts/SimpleFunder.ts +534 -0
  354. package/src/core/internal/_generated/contracts/SimpleSettler.ts +360 -0
  355. package/src/core/internal/_generated/contracts/Simulator.ts +170 -0
  356. package/src/core/internal/_generated/contracts/TokenTransferLib.ts +4 -0
  357. package/src/core/internal/_snapshots/provider.browser.test.ts.snap +119 -0
  358. package/src/core/internal/_snapshots/provider.test.ts.snap +1103 -0
  359. package/src/core/internal/call.test.ts +116 -0
  360. package/src/core/internal/call.ts +245 -0
  361. package/src/core/internal/erc8010.test.ts +74 -0
  362. package/src/core/internal/erc8010.ts +44 -0
  363. package/src/core/internal/intersectionObserver.ts +5 -0
  364. package/src/core/internal/logger.ts +42 -0
  365. package/src/core/internal/mode.ts +498 -0
  366. package/src/core/internal/modes/dialog.ts +1051 -0
  367. package/src/core/internal/modes/reactNative.ts +29 -0
  368. package/src/core/internal/modes/relay.ts +893 -0
  369. package/src/core/internal/permissions.ts +43 -0
  370. package/src/core/internal/permissionsRequest.ts +88 -0
  371. package/src/core/internal/porto.ts +16 -0
  372. package/src/core/internal/promise.ts +19 -0
  373. package/src/core/internal/provider.browser.test.ts +311 -0
  374. package/src/core/internal/provider.test.ts +3552 -0
  375. package/src/core/internal/provider.ts +1277 -0
  376. package/src/core/internal/relay/rpcSchema.ts +101 -0
  377. package/src/core/internal/relay/schema/capabilities.test.ts +663 -0
  378. package/src/core/internal/relay/schema/capabilities.ts +156 -0
  379. package/src/core/internal/relay/schema/intent.test.ts +433 -0
  380. package/src/core/internal/relay/schema/intent.ts +174 -0
  381. package/src/core/internal/relay/schema/key.test.ts +424 -0
  382. package/src/core/internal/relay/schema/key.ts +34 -0
  383. package/src/core/internal/relay/schema/permission.test.ts +499 -0
  384. package/src/core/internal/relay/schema/permission.ts +34 -0
  385. package/src/core/internal/relay/schema/preCall.ts +39 -0
  386. package/src/core/internal/relay/schema/quotes.test.ts +901 -0
  387. package/src/core/internal/relay/schema/quotes.ts +98 -0
  388. package/src/core/internal/relay/schema/rpc.ts +822 -0
  389. package/src/core/internal/relay/schema/token.ts +16 -0
  390. package/src/core/internal/requiredFunds.test.ts +141 -0
  391. package/src/core/internal/requiredFunds.ts +45 -0
  392. package/src/core/internal/schema/capabilities.test.ts +1334 -0
  393. package/src/core/internal/schema/capabilities.ts +162 -0
  394. package/src/core/internal/schema/key.test.ts +570 -0
  395. package/src/core/internal/schema/key.ts +98 -0
  396. package/src/core/internal/schema/permissions.test.ts +948 -0
  397. package/src/core/internal/schema/permissions.ts +31 -0
  398. package/src/core/internal/schema/request.bench.ts +35 -0
  399. package/src/core/internal/schema/request.ts +90 -0
  400. package/src/core/internal/schema/rpc.ts +821 -0
  401. package/src/core/internal/schema/token.ts +1 -0
  402. package/src/core/internal/schema/utils.test.ts +572 -0
  403. package/src/core/internal/schema/utils.ts +236 -0
  404. package/src/core/internal/siwe.test.ts +473 -0
  405. package/src/core/internal/siwe.ts +144 -0
  406. package/src/core/internal/store.ts +9 -0
  407. package/src/core/internal/tokens.test.ts +317 -0
  408. package/src/core/internal/tokens.ts +125 -0
  409. package/src/core/internal/types.ts +448 -0
  410. package/src/core/internal/urlString.ts +5 -0
  411. package/src/core/internal/userAgent.ts +35 -0
  412. package/src/core/internal/utils.test.ts +35 -0
  413. package/src/core/internal/utils.ts +67 -0
  414. package/src/core/react-native/Porto.ts +22 -0
  415. package/src/core/react-native/configure.ts +31 -0
  416. package/src/core/react-native/environment.ts +43 -0
  417. package/src/core/react-native/index.ts +4 -0
  418. package/src/core/react-native/utils.ts +18 -0
  419. package/src/index.ts +17 -0
  420. package/src/internal/index.ts +3 -0
  421. package/src/react-native/crypto.ts +19 -0
  422. package/src/react-native/index.ts +15 -0
  423. package/src/react-native/register.ts +24 -0
  424. package/src/register/index.ts +17 -0
  425. package/src/remote/Actions.ts +115 -0
  426. package/src/remote/Events.ts +193 -0
  427. package/src/remote/Hooks.ts +194 -0
  428. package/src/remote/Porto.ts +144 -0
  429. package/src/remote/index.ts +4 -0
  430. package/src/remote/internal/methodPolicies.ts +124 -0
  431. package/src/server/Route.test.ts +347 -0
  432. package/src/server/Route.ts +259 -0
  433. package/src/server/Router.test.ts +32 -0
  434. package/src/server/Router.ts +59 -0
  435. package/src/server/index.ts +2 -0
  436. package/src/server/internal/merchantSchema.ts +11 -0
  437. package/src/server/internal/requestListener.ts +284 -0
  438. package/src/theme/Theme.ts +163 -0
  439. package/src/theme/index.ts +2 -0
  440. package/src/trusted-hosts.ts +40 -0
  441. package/src/tsconfig.build.tsbuildinfo +1 -0
  442. package/src/tsconfig.json +15 -0
  443. package/src/viem/Account.test.ts +270 -0
  444. package/src/viem/Account.ts +278 -0
  445. package/src/viem/AccountActions.test.ts +3 -0
  446. package/src/viem/AccountActions.ts +30 -0
  447. package/src/viem/CapabilitiesSchema.ts +18 -0
  448. package/src/viem/ContractActions.test.ts +980 -0
  449. package/src/viem/ContractActions.ts +624 -0
  450. package/src/viem/Key.test.ts +1420 -0
  451. package/src/viem/Key.ts +1318 -0
  452. package/src/viem/RelayActions.test.ts +1730 -0
  453. package/src/viem/RelayActions.ts +1082 -0
  454. package/src/viem/RelayClient.test.ts +127 -0
  455. package/src/viem/RelayClient.ts +87 -0
  456. package/src/viem/RpcSchema.ts +27 -0
  457. package/src/viem/WalletActions.test.ts +646 -0
  458. package/src/viem/WalletActions.ts +476 -0
  459. package/src/viem/WalletClient.test.ts +36 -0
  460. package/src/viem/WalletClient.ts +74 -0
  461. package/src/viem/index.ts +13 -0
  462. package/src/viem/internal/relayActions.test.ts +1296 -0
  463. package/src/viem/internal/relayActions.ts +1222 -0
  464. package/src/viem/internal/utils.ts +27 -0
  465. package/src/wagmi/Actions.ts +13 -0
  466. package/src/wagmi/Connector.ts +304 -0
  467. package/src/wagmi/Hooks.ts +14 -0
  468. package/src/wagmi/Query.ts +5 -0
  469. package/src/wagmi/index.ts +4 -0
  470. package/src/wagmi/internal/core.test.ts +12 -0
  471. package/src/wagmi/internal/core.ts +468 -0
  472. package/src/wagmi/internal/query.ts +52 -0
  473. package/src/wagmi/internal/react.test.ts +12 -0
  474. package/src/wagmi/internal/react.ts +705 -0
  475. package/src/wagmi/internal/types.ts +21 -0
  476. package/src/wagmi/internal/utils.ts +25 -0
  477. package/dist/chain.cjs +0 -17
  478. package/dist/chain.d.cts +0 -41
  479. package/dist/chain.d.ts +0 -41
  480. package/dist/chain.js +0 -13
  481. package/dist/config.cjs +0 -19
  482. package/dist/config.d.cts +0 -3
  483. package/dist/config.d.ts +0 -3
  484. package/dist/config.js +0 -16
  485. package/dist/index.cjs +0 -18
  486. package/dist/index.d.cts +0 -2
@@ -0,0 +1,1155 @@
1
+ import * as Address from 'ox/Address';
2
+ import * as Bytes from 'ox/Bytes';
3
+ import * as Hex from 'ox/Hex';
4
+ import * as Signature from 'ox/Signature';
5
+ import * as WebAuthnP256 from 'ox/WebAuthnP256';
6
+ import * as WebCryptoP256 from 'ox/WebCryptoP256';
7
+ import type * as RelayKey_schema from "../core/internal/relay/schema/key.js";
8
+ import type * as Key_schema from "../core/internal/schema/key.js";
9
+ import type * as Tokens from "../core/internal/tokens.js";
10
+ import type { Compute, ExactPartial, OneOf, PartialBy, RequiredBy, UnionOmit, UnionRequiredBy } from "../core/internal/types.js";
11
+ import type * as Storage from "../core/Storage.js";
12
+ type PrivateKeyFn = () => Hex.Hex;
13
+ export type BaseKey<type extends string = string, privateKey = unknown> = Compute<Key_schema.WithPermissions & {
14
+ /** Whether the key will need its digest (SHA256) prehashed when signing. */
15
+ prehash?: boolean | undefined;
16
+ /** Private key. */
17
+ privateKey?: privateKey | undefined;
18
+ /** Key type. */
19
+ type: type;
20
+ }>;
21
+ export type Key = OneOf<AddressKey | P256Key | Secp256k1Key | WebCryptoKey | WebAuthnKey>;
22
+ export type AddressKey = BaseKey<'address'>;
23
+ export type P256Key = BaseKey<'p256', PrivateKeyFn>;
24
+ export type Secp256k1Key = BaseKey<'secp256k1', PrivateKeyFn>;
25
+ export type WebCryptoKey = BaseKey<'p256', CryptoKey>;
26
+ export type WebAuthnKey = BaseKey<'webauthn-p256', OneOf<{
27
+ credential: Pick<WebAuthnP256.P256Credential, 'id' | 'publicKey'>;
28
+ rpId: string | undefined;
29
+ } | {
30
+ privateKey: PrivateKeyFn;
31
+ }>>;
32
+ export type Permissions = Key_schema.Permissions;
33
+ /** RPC (relay-compatible) format of a key. */
34
+ export type Relay = RelayKey_schema.WithPermissions;
35
+ /** Serialized (contract-compatible) format of a key. */
36
+ export type Serialized = {
37
+ expiry: number;
38
+ isSuperAdmin: boolean;
39
+ keyType: number;
40
+ publicKey: Hex.Hex;
41
+ };
42
+ export type SpendPermissions = Key_schema.SpendPermissions;
43
+ export type SpendPermission = SpendPermissions[number];
44
+ /** Relay key type to key type mapping. */
45
+ export declare const fromRelayKeyType: {
46
+ readonly p256: "p256";
47
+ readonly secp256k1: "secp256k1";
48
+ readonly webauthnp256: "webauthn-p256";
49
+ };
50
+ /** Relay key role to key role mapping. */
51
+ export declare const fromRelayKeyRole: {
52
+ readonly admin: "admin";
53
+ readonly normal: "session";
54
+ };
55
+ /** Serialized (contract-compatible) key type to key type mapping. */
56
+ export declare const fromSerializedKeyType: {
57
+ readonly 0: "p256";
58
+ readonly 1: "webauthn-p256";
59
+ readonly 2: "secp256k1";
60
+ };
61
+ /** Serialized (contract-compatible) spend period to period mapping. */
62
+ export declare const fromSerializedSpendPeriod: {
63
+ readonly 0: "minute";
64
+ readonly 1: "hour";
65
+ readonly 2: "day";
66
+ readonly 3: "week";
67
+ readonly 4: "month";
68
+ readonly 5: "year";
69
+ };
70
+ /** Key type to Relay key type mapping. */
71
+ export declare const toRelayKeyType: {
72
+ readonly address: "secp256k1";
73
+ readonly p256: "p256";
74
+ readonly secp256k1: "secp256k1";
75
+ readonly 'webauthn-p256': "webauthnp256";
76
+ };
77
+ /** Key role to Relay key role mapping. */
78
+ export declare const toRelayKeyRole: {
79
+ readonly admin: "admin";
80
+ readonly session: "normal";
81
+ };
82
+ /** Key type to serialized (contract-compatible) key type mapping. */
83
+ export declare const toSerializedKeyType: {
84
+ readonly address: 2;
85
+ readonly p256: 0;
86
+ readonly secp256k1: 2;
87
+ readonly 'webauthn-p256': 1;
88
+ };
89
+ /** Period to serialized (contract-compatible) spend period mapping. */
90
+ export declare const toSerializedSpendPeriod: {
91
+ readonly day: 2;
92
+ readonly hour: 1;
93
+ readonly minute: 0;
94
+ readonly month: 4;
95
+ readonly week: 3;
96
+ readonly year: 5;
97
+ };
98
+ /**
99
+ * Creates a random P256 key.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * import * as Key from './key.js'
104
+ *
105
+ * // Admin Key
106
+ * const key = Key.createP256()
107
+ *
108
+ * // Session Key
109
+ * const key = Key.createP256({
110
+ * expiry: 1714857600,
111
+ * role: 'session',
112
+ * })
113
+ * ```
114
+ *
115
+ * @param parameters - Key parameters.
116
+ * @returns P256 key.
117
+ */
118
+ export declare function createP256(parameters?: createP256.Parameters): {
119
+ expiry: number;
120
+ hash: `0x${string}`;
121
+ id: `0x${string}`;
122
+ publicKey: `0x${string}`;
123
+ role: "admin" | "session";
124
+ type: "p256";
125
+ feeToken?: {
126
+ limit: `${number}` | `${number}.${number}`;
127
+ symbol?: string | undefined;
128
+ } | null | undefined;
129
+ permissions?: {
130
+ calls?: readonly ({
131
+ signature: string;
132
+ to: `0x${string}`;
133
+ } | {
134
+ signature: string;
135
+ to?: undefined;
136
+ } | {
137
+ to: `0x${string}`;
138
+ signature?: undefined;
139
+ })[] | undefined;
140
+ signatureVerification?: {
141
+ addresses: readonly `0x${string}`[];
142
+ } | undefined;
143
+ spend?: readonly {
144
+ limit: bigint;
145
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
146
+ token?: `0x${string}` | undefined;
147
+ }[] | undefined;
148
+ } | undefined;
149
+ chainId?: number | undefined;
150
+ prehash?: boolean | undefined
151
+ /** Private key. */
152
+ | undefined;
153
+ privateKey?: PrivateKeyFn | undefined;
154
+ } | {
155
+ expiry: number;
156
+ hash: `0x${string}`;
157
+ id: `0x${string}`;
158
+ publicKey: `0x${string}`;
159
+ role: "admin" | "session";
160
+ type: "p256";
161
+ feeToken?: {
162
+ limit: `${number}` | `${number}.${number}`;
163
+ symbol?: string | undefined;
164
+ } | null | undefined;
165
+ permissions?: {
166
+ calls?: readonly ({
167
+ signature: string;
168
+ to: `0x${string}`;
169
+ } | {
170
+ signature: string;
171
+ to?: undefined;
172
+ } | {
173
+ to: `0x${string}`;
174
+ signature?: undefined;
175
+ })[] | undefined;
176
+ signatureVerification?: {
177
+ addresses: readonly `0x${string}`[];
178
+ } | undefined;
179
+ spend?: readonly {
180
+ limit: bigint;
181
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
182
+ token?: `0x${string}` | undefined;
183
+ }[] | undefined;
184
+ } | undefined;
185
+ chainId?: number | undefined;
186
+ prehash?: boolean | undefined
187
+ /** Private key. */
188
+ | undefined;
189
+ privateKey?: CryptoKey | undefined;
190
+ };
191
+ export declare namespace createP256 {
192
+ type Parameters = Pick<fromP256.Parameters, 'expiry' | 'feeToken' | 'permissions' | 'role'>;
193
+ }
194
+ /**
195
+ * Creates a random Secp256k1 key.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * import * as Key from './key.js'
200
+ *
201
+ * // Admin Key
202
+ * const key = Key.createSecp256k1()
203
+ *
204
+ * // Session Key
205
+ * const key = Key.createSecp256k1({
206
+ * expiry: 1714857600,
207
+ * role: 'session',
208
+ * })
209
+ * ```
210
+ *
211
+ * @param parameters - Key parameters.
212
+ * @returns Secp256k1 key.
213
+ */
214
+ export declare function createSecp256k1(parameters?: createSecp256k1.Parameters): {
215
+ expiry: number;
216
+ hash: `0x${string}`;
217
+ id: `0x${string}`;
218
+ publicKey: `0x${string}`;
219
+ role: "admin" | "session";
220
+ type: "secp256k1";
221
+ feeToken?: {
222
+ limit: `${number}` | `${number}.${number}`;
223
+ symbol?: string | undefined;
224
+ } | null | undefined;
225
+ permissions?: {
226
+ calls?: readonly ({
227
+ signature: string;
228
+ to: `0x${string}`;
229
+ } | {
230
+ signature: string;
231
+ to?: undefined;
232
+ } | {
233
+ to: `0x${string}`;
234
+ signature?: undefined;
235
+ })[] | undefined;
236
+ signatureVerification?: {
237
+ addresses: readonly `0x${string}`[];
238
+ } | undefined;
239
+ spend?: readonly {
240
+ limit: bigint;
241
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
242
+ token?: `0x${string}` | undefined;
243
+ }[] | undefined;
244
+ } | undefined;
245
+ chainId?: number | undefined;
246
+ prehash?: boolean | undefined
247
+ /** Private key. */
248
+ | undefined;
249
+ privateKey?: PrivateKeyFn | undefined;
250
+ };
251
+ export declare namespace createSecp256k1 {
252
+ type Parameters = Pick<fromSecp256k1.Parameters, 'expiry' | 'feeToken' | 'permissions' | 'role'>;
253
+ }
254
+ /**
255
+ * Creates a WebAuthnP256 key.
256
+ *
257
+ * @example
258
+ * ```ts
259
+ * import { Bytes } from 'ox'
260
+ * import * as Key from './key.js'
261
+ *
262
+ * // Admin Key
263
+ * const key = Key.createWebAuthnP256({
264
+ * label: 'My Key',
265
+ * userId: Bytes.from('0x0000000000000000000000000000000000000000'),
266
+ * })
267
+ *
268
+ * // Session Key
269
+ * const key = Key.createWebAuthnP256({
270
+ * expiry: 1714857600,
271
+ * label: 'My Key',
272
+ * role: 'session',
273
+ * userId: Bytes.from('0x0000000000000000000000000000000000000000'),
274
+ * })
275
+ * ```
276
+ *
277
+ * @param parameters - Key parameters.
278
+ * @returns WebAuthnP256 key.
279
+ */
280
+ export declare function createWebAuthnP256(parameters: createWebAuthnP256.Parameters): Promise<{
281
+ expiry: number;
282
+ hash: `0x${string}`;
283
+ id: `0x${string}`;
284
+ publicKey: `0x${string}`;
285
+ role: "admin" | "session";
286
+ type: "webauthn-p256";
287
+ feeToken?: {
288
+ limit: `${number}` | `${number}.${number}`;
289
+ symbol?: string | undefined;
290
+ } | null | undefined;
291
+ permissions?: {
292
+ calls?: readonly ({
293
+ signature: string;
294
+ to: `0x${string}`;
295
+ } | {
296
+ signature: string;
297
+ to?: undefined;
298
+ } | {
299
+ to: `0x${string}`;
300
+ signature?: undefined;
301
+ })[] | undefined;
302
+ signatureVerification?: {
303
+ addresses: readonly `0x${string}`[];
304
+ } | undefined;
305
+ spend?: readonly {
306
+ limit: bigint;
307
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
308
+ token?: `0x${string}` | undefined;
309
+ }[] | undefined;
310
+ } | undefined;
311
+ chainId?: number | undefined;
312
+ prehash?: boolean | undefined
313
+ /** Private key. */
314
+ | undefined;
315
+ privateKey?: OneOf<{
316
+ credential: Pick<WebAuthnP256.P256Credential, "id" | "publicKey">;
317
+ rpId: string | undefined;
318
+ } | {
319
+ privateKey: PrivateKeyFn;
320
+ }> | undefined;
321
+ }>;
322
+ export declare namespace createWebAuthnP256 {
323
+ type Parameters = Pick<fromWebAuthnP256.Parameters, 'expiry' | 'feeToken' | 'permissions' | 'role'> & {
324
+ /**
325
+ * Credential creation function. Useful for environments that do not support
326
+ * the WebAuthn API natively (i.e. React Native or testing environments).
327
+ *
328
+ * @default window.navigator.credentials.create
329
+ */
330
+ createFn?: WebAuthnP256.createCredential.Options['createFn'] | undefined;
331
+ /** Label. */
332
+ label: string;
333
+ /** Relying Party ID. */
334
+ rpId?: string | undefined;
335
+ /** User ID. */
336
+ userId?: Bytes.Bytes | undefined;
337
+ };
338
+ }
339
+ /**
340
+ * Creates a random WebAuthn-wrapped P256 key.
341
+ *
342
+ * @example
343
+ * ```ts
344
+ * import * as Key from './key.js'
345
+ *
346
+ * // Admin Key
347
+ * const key = Key.createHeadlessWebAuthnP256()
348
+ *
349
+ * // Session Key
350
+ * const key = Key.createHeadlessWebAuthnP256({
351
+ * expiry: 1714857600,
352
+ * role: 'session',
353
+ * })
354
+ * ```
355
+ *
356
+ * @param parameters - Key parameters.
357
+ * @returns P256 key.
358
+ */
359
+ export declare function createHeadlessWebAuthnP256(parameters?: createHeadlessWebAuthnP256.Parameters): {
360
+ expiry: number;
361
+ hash: `0x${string}`;
362
+ id: `0x${string}`;
363
+ publicKey: `0x${string}`;
364
+ role: "admin" | "session";
365
+ type: "webauthn-p256";
366
+ feeToken?: {
367
+ limit: `${number}` | `${number}.${number}`;
368
+ symbol?: string | undefined;
369
+ } | null | undefined;
370
+ permissions?: {
371
+ calls?: readonly ({
372
+ signature: string;
373
+ to: `0x${string}`;
374
+ } | {
375
+ signature: string;
376
+ to?: undefined;
377
+ } | {
378
+ to: `0x${string}`;
379
+ signature?: undefined;
380
+ })[] | undefined;
381
+ signatureVerification?: {
382
+ addresses: readonly `0x${string}`[];
383
+ } | undefined;
384
+ spend?: readonly {
385
+ limit: bigint;
386
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
387
+ token?: `0x${string}` | undefined;
388
+ }[] | undefined;
389
+ } | undefined;
390
+ chainId?: number | undefined;
391
+ prehash?: boolean | undefined
392
+ /** Private key. */
393
+ | undefined;
394
+ privateKey?: OneOf<{
395
+ credential: Pick<WebAuthnP256.P256Credential, "id" | "publicKey">;
396
+ rpId: string | undefined;
397
+ } | {
398
+ privateKey: PrivateKeyFn;
399
+ }> | undefined;
400
+ };
401
+ export declare namespace createHeadlessWebAuthnP256 {
402
+ type Parameters = Pick<fromHeadlessWebAuthnP256.Parameters, 'expiry' | 'feeToken' | 'permissions' | 'role'>;
403
+ }
404
+ /**
405
+ * Creates a random WebCryptoP256 key.
406
+ *
407
+ * @example
408
+ * ```ts
409
+ * import * as Key from './key.js'
410
+ *
411
+ * // Admin Key
412
+ * const key = Key.createWebCryptoP256()
413
+ *
414
+ * // Session Key
415
+ * const key = Key.createWebCryptoP256({
416
+ * expiry: 1714857600,
417
+ * role: 'session',
418
+ * })
419
+ * ```
420
+ *
421
+ * @param parameters - Key parameters.
422
+ * @returns WebCryptoP256 key.
423
+ */
424
+ export declare function createWebCryptoP256(parameters?: createWebCryptoP256.Parameters): Promise<{
425
+ expiry: number;
426
+ hash: `0x${string}`;
427
+ id: `0x${string}`;
428
+ publicKey: `0x${string}`;
429
+ role: "admin" | "session";
430
+ type: "p256";
431
+ feeToken?: {
432
+ limit: `${number}` | `${number}.${number}`;
433
+ symbol?: string | undefined;
434
+ } | null | undefined;
435
+ permissions?: {
436
+ calls?: readonly ({
437
+ signature: string;
438
+ to: `0x${string}`;
439
+ } | {
440
+ signature: string;
441
+ to?: undefined;
442
+ } | {
443
+ to: `0x${string}`;
444
+ signature?: undefined;
445
+ })[] | undefined;
446
+ signatureVerification?: {
447
+ addresses: readonly `0x${string}`[];
448
+ } | undefined;
449
+ spend?: readonly {
450
+ limit: bigint;
451
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
452
+ token?: `0x${string}` | undefined;
453
+ }[] | undefined;
454
+ } | undefined;
455
+ chainId?: number | undefined;
456
+ prehash?: boolean | undefined
457
+ /** Private key. */
458
+ | undefined;
459
+ privateKey?: PrivateKeyFn | undefined;
460
+ } | {
461
+ expiry: number;
462
+ hash: `0x${string}`;
463
+ id: `0x${string}`;
464
+ publicKey: `0x${string}`;
465
+ role: "admin" | "session";
466
+ type: "p256";
467
+ feeToken?: {
468
+ limit: `${number}` | `${number}.${number}`;
469
+ symbol?: string | undefined;
470
+ } | null | undefined;
471
+ permissions?: {
472
+ calls?: readonly ({
473
+ signature: string;
474
+ to: `0x${string}`;
475
+ } | {
476
+ signature: string;
477
+ to?: undefined;
478
+ } | {
479
+ to: `0x${string}`;
480
+ signature?: undefined;
481
+ })[] | undefined;
482
+ signatureVerification?: {
483
+ addresses: readonly `0x${string}`[];
484
+ } | undefined;
485
+ spend?: readonly {
486
+ limit: bigint;
487
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
488
+ token?: `0x${string}` | undefined;
489
+ }[] | undefined;
490
+ } | undefined;
491
+ chainId?: number | undefined;
492
+ prehash?: boolean | undefined
493
+ /** Private key. */
494
+ | undefined;
495
+ privateKey?: CryptoKey | undefined;
496
+ }>;
497
+ export declare namespace createWebCryptoP256 {
498
+ type Parameters = Pick<fromWebCryptoP256.Parameters, 'expiry' | 'feeToken' | 'permissions' | 'role'>;
499
+ }
500
+ /**
501
+ * Deserializes a key from its serialized format.
502
+ *
503
+ * @example
504
+ * ```ts
505
+ * import * as Key from './key.js'
506
+ *
507
+ * const key = Key.deserialize({
508
+ * expiry: 0,
509
+ * isSuperAdmin: false,
510
+ * keyType: 0,
511
+ * publicKey: '0x04ec0effa5f2f378cbf7fd2fa7ca1e8dc51cf777c129fa1c00a0e9a9205f2e511ff3f20b34a4e0b50587d055c0e0fad33d32cf1147d3bb2538fbab0d15d8e65008',
512
+ * })
513
+ * ```
514
+ *
515
+ * @param serialized - Serialized key.
516
+ * @returns Key.
517
+ */
518
+ export declare function deserialize(serialized: Serialized, options?: deserialize.Options): Key;
519
+ export declare namespace deserialize {
520
+ type Options = {
521
+ chainId?: number | undefined;
522
+ };
523
+ }
524
+ /**
525
+ * Instantiates a key from its parameters.
526
+ *
527
+ * @example
528
+ * ```ts
529
+ * import { P256 } from 'ox'
530
+ * import * as Key from './key.js'
531
+ *
532
+ * const privateKey = P256.randomPrivateKey()
533
+ * const publicKey = P256.getPublicKey({ privateKey })
534
+ *
535
+ * const key = Key.from({
536
+ * expiry: 0,
537
+ * publicKey,
538
+ * async sign({ payload }) {
539
+ * return P256.sign({ payload, privateKey })
540
+ * },
541
+ * type: 'p256',
542
+ * })
543
+ * ```
544
+ *
545
+ * @param key - Key.
546
+ * @returns Key.
547
+ */
548
+ export declare function from<type extends Key['type']>(key: from.Value<type>, options?: from.Options): Extract<Key, {
549
+ type: type;
550
+ }>;
551
+ export declare namespace from {
552
+ type Value<type extends Key['type'] = Key['type']> = OneOf<UnionRequiredBy<ExactPartial<UnionOmit<Key, 'hash'>>, 'publicKey'> & {
553
+ type: type | Key['type'];
554
+ }>;
555
+ type Options = {
556
+ chainId?: number | undefined;
557
+ };
558
+ }
559
+ /**
560
+ * Instantiates a P256 key from its parameters.
561
+ *
562
+ * @example
563
+ * ```ts
564
+ * import { P256 } from 'ox'
565
+ * import * as Key from './key.js'
566
+ *
567
+ * // Admin Key
568
+ * const key = Key.fromP256({
569
+ * privateKey: P256.randomPrivateKey(),
570
+ * })
571
+ *
572
+ * // Session Key
573
+ * const key = Key.fromP256({
574
+ * expiry: 1714857600,
575
+ * privateKey: P256.randomPrivateKey(),
576
+ * role: 'session',
577
+ * })
578
+ * ```
579
+ *
580
+ * @param parameters - Key parameters.
581
+ * @returns P256 key.
582
+ */
583
+ export declare function fromP256(parameters: fromP256.Parameters): {
584
+ expiry: number;
585
+ hash: `0x${string}`;
586
+ id: `0x${string}`;
587
+ publicKey: `0x${string}`;
588
+ role: "admin" | "session";
589
+ type: "p256";
590
+ feeToken?: {
591
+ limit: `${number}` | `${number}.${number}`;
592
+ symbol?: string | undefined;
593
+ } | null | undefined;
594
+ permissions?: {
595
+ calls?: readonly ({
596
+ signature: string;
597
+ to: `0x${string}`;
598
+ } | {
599
+ signature: string;
600
+ to?: undefined;
601
+ } | {
602
+ to: `0x${string}`;
603
+ signature?: undefined;
604
+ })[] | undefined;
605
+ signatureVerification?: {
606
+ addresses: readonly `0x${string}`[];
607
+ } | undefined;
608
+ spend?: readonly {
609
+ limit: bigint;
610
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
611
+ token?: `0x${string}` | undefined;
612
+ }[] | undefined;
613
+ } | undefined;
614
+ chainId?: number | undefined;
615
+ prehash?: boolean | undefined
616
+ /** Private key. */
617
+ | undefined;
618
+ privateKey?: PrivateKeyFn | undefined;
619
+ } | {
620
+ expiry: number;
621
+ hash: `0x${string}`;
622
+ id: `0x${string}`;
623
+ publicKey: `0x${string}`;
624
+ role: "admin" | "session";
625
+ type: "p256";
626
+ feeToken?: {
627
+ limit: `${number}` | `${number}.${number}`;
628
+ symbol?: string | undefined;
629
+ } | null | undefined;
630
+ permissions?: {
631
+ calls?: readonly ({
632
+ signature: string;
633
+ to: `0x${string}`;
634
+ } | {
635
+ signature: string;
636
+ to?: undefined;
637
+ } | {
638
+ to: `0x${string}`;
639
+ signature?: undefined;
640
+ })[] | undefined;
641
+ signatureVerification?: {
642
+ addresses: readonly `0x${string}`[];
643
+ } | undefined;
644
+ spend?: readonly {
645
+ limit: bigint;
646
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
647
+ token?: `0x${string}` | undefined;
648
+ }[] | undefined;
649
+ } | undefined;
650
+ chainId?: number | undefined;
651
+ prehash?: boolean | undefined
652
+ /** Private key. */
653
+ | undefined;
654
+ privateKey?: CryptoKey | undefined;
655
+ };
656
+ export declare namespace fromP256 {
657
+ type Parameters = Pick<from.Value, 'chainId' | 'expiry' | 'feeToken' | 'permissions' | 'role'> & {
658
+ /** P256 private key. */
659
+ privateKey: Hex.Hex;
660
+ };
661
+ }
662
+ /**
663
+ * Converts a Relay-formatted key to a key.
664
+ *
665
+ * @example
666
+ * TODO
667
+ *
668
+ * @param relayKey - Relay key.
669
+ * @returns Key.
670
+ */
671
+ export declare function fromRelay(relayKey: Relay, options: {
672
+ chainId: number;
673
+ }): Key;
674
+ /**
675
+ * Instantiates a Secp256k1 key from its parameters.
676
+ *
677
+ * @example
678
+ * ```ts
679
+ * import { Secp256k1 } from 'ox'
680
+ * import * as Key from './key.js'
681
+ *
682
+ * // Admin Key
683
+ * const key = Key.fromSecp256k1({
684
+ * privateKey: Secp256k1.randomPrivateKey(),
685
+ * })
686
+ *
687
+ * // Session Key
688
+ * const key = Key.fromSecp256k1({
689
+ * expiry: 1714857600,
690
+ * privateKey: Secp256k1.randomPrivateKey(),
691
+ * role: 'session',
692
+ * })
693
+ * ```
694
+ *
695
+ * @param parameters - Key parameters.
696
+ * @returns Secp256k1 key.
697
+ */
698
+ export declare function fromSecp256k1(parameters: fromSecp256k1.Parameters): {
699
+ expiry: number;
700
+ hash: `0x${string}`;
701
+ id: `0x${string}`;
702
+ publicKey: `0x${string}`;
703
+ role: "admin" | "session";
704
+ type: "secp256k1";
705
+ feeToken?: {
706
+ limit: `${number}` | `${number}.${number}`;
707
+ symbol?: string | undefined;
708
+ } | null | undefined;
709
+ permissions?: {
710
+ calls?: readonly ({
711
+ signature: string;
712
+ to: `0x${string}`;
713
+ } | {
714
+ signature: string;
715
+ to?: undefined;
716
+ } | {
717
+ to: `0x${string}`;
718
+ signature?: undefined;
719
+ })[] | undefined;
720
+ signatureVerification?: {
721
+ addresses: readonly `0x${string}`[];
722
+ } | undefined;
723
+ spend?: readonly {
724
+ limit: bigint;
725
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
726
+ token?: `0x${string}` | undefined;
727
+ }[] | undefined;
728
+ } | undefined;
729
+ chainId?: number | undefined;
730
+ prehash?: boolean | undefined
731
+ /** Private key. */
732
+ | undefined;
733
+ privateKey?: PrivateKeyFn | undefined;
734
+ };
735
+ export declare namespace fromSecp256k1 {
736
+ type Parameters = Pick<from.Value, 'expiry' | 'feeToken' | 'permissions' | 'role'> & OneOf<{
737
+ /** Ethereum address. */
738
+ address: Address.Address;
739
+ } | {
740
+ /** Secp256k1 public key. */
741
+ publicKey: Hex.Hex;
742
+ } | {
743
+ /** Secp256k1 private key. */
744
+ privateKey: Hex.Hex;
745
+ }>;
746
+ }
747
+ /**
748
+ * Instantiates a WebAuthnP256 key from its parameters.
749
+ *
750
+ * @example
751
+ * ```ts
752
+ * import { WebAuthnP256 } from 'ox'
753
+ * import * as Key from './key.js'
754
+ *
755
+ * const credential = await WebAuthnP256.createCredential({ name: 'My Key' })
756
+ *
757
+ * // Admin Key
758
+ * const key = Key.fromWebAuthnP256({
759
+ * credential,
760
+ * })
761
+ *
762
+ * // Session Key
763
+ * const key = Key.fromWebAuthnP256({
764
+ * expiry: 1714857600,
765
+ * credential,
766
+ * role: 'session',
767
+ * })
768
+ * ```
769
+ *
770
+ * @param parameters - Key parameters.
771
+ * @returns WebAuthnP256 key.
772
+ */
773
+ export declare function fromWebAuthnP256(parameters: fromWebAuthnP256.Parameters): {
774
+ expiry: number;
775
+ hash: `0x${string}`;
776
+ id: `0x${string}`;
777
+ publicKey: `0x${string}`;
778
+ role: "admin" | "session";
779
+ type: "webauthn-p256";
780
+ feeToken?: {
781
+ limit: `${number}` | `${number}.${number}`;
782
+ symbol?: string | undefined;
783
+ } | null | undefined;
784
+ permissions?: {
785
+ calls?: readonly ({
786
+ signature: string;
787
+ to: `0x${string}`;
788
+ } | {
789
+ signature: string;
790
+ to?: undefined;
791
+ } | {
792
+ to: `0x${string}`;
793
+ signature?: undefined;
794
+ })[] | undefined;
795
+ signatureVerification?: {
796
+ addresses: readonly `0x${string}`[];
797
+ } | undefined;
798
+ spend?: readonly {
799
+ limit: bigint;
800
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
801
+ token?: `0x${string}` | undefined;
802
+ }[] | undefined;
803
+ } | undefined;
804
+ chainId?: number | undefined;
805
+ prehash?: boolean | undefined
806
+ /** Private key. */
807
+ | undefined;
808
+ privateKey?: OneOf<{
809
+ credential: Pick<WebAuthnP256.P256Credential, "id" | "publicKey">;
810
+ rpId: string | undefined;
811
+ } | {
812
+ privateKey: PrivateKeyFn;
813
+ }> | undefined;
814
+ };
815
+ export declare namespace fromWebAuthnP256 {
816
+ type Parameters = Pick<from.Value, 'chainId' | 'expiry' | 'feeToken' | 'id' | 'permissions' | 'role'> & {
817
+ /** WebAuthnP256 Credential. */
818
+ credential: Pick<WebAuthnP256.P256Credential, 'id' | 'publicKey'>;
819
+ /** Relying Party ID. */
820
+ rpId?: string | undefined;
821
+ };
822
+ }
823
+ /**
824
+ * Instantiates a WebAuthn-wrapped P256 key from its parameters.
825
+ *
826
+ * @example
827
+ * ```ts
828
+ * import { P256 } from 'ox'
829
+ * import * as Key from './key.js'
830
+ *
831
+ * const privateKey = P256.randomPrivateKey()
832
+ *
833
+ * // Admin Key
834
+ * const key = Key.fromHeadlessWebAuthnP256({
835
+ * privateKey,
836
+ * })
837
+ *
838
+ * // Session Key
839
+ * const key = Key.fromHeadlessWebAuthnP256({
840
+ * expiry: 1714857600,
841
+ * privateKey,
842
+ * role: 'session',
843
+ * })
844
+ * ```
845
+ *
846
+ * @param parameters - Key parameters.
847
+ * @returns WebAuthn-wrapped P256 key.
848
+ */
849
+ export declare function fromHeadlessWebAuthnP256(parameters: fromHeadlessWebAuthnP256.Parameters): {
850
+ expiry: number;
851
+ hash: `0x${string}`;
852
+ id: `0x${string}`;
853
+ publicKey: `0x${string}`;
854
+ role: "admin" | "session";
855
+ type: "webauthn-p256";
856
+ feeToken?: {
857
+ limit: `${number}` | `${number}.${number}`;
858
+ symbol?: string | undefined;
859
+ } | null | undefined;
860
+ permissions?: {
861
+ calls?: readonly ({
862
+ signature: string;
863
+ to: `0x${string}`;
864
+ } | {
865
+ signature: string;
866
+ to?: undefined;
867
+ } | {
868
+ to: `0x${string}`;
869
+ signature?: undefined;
870
+ })[] | undefined;
871
+ signatureVerification?: {
872
+ addresses: readonly `0x${string}`[];
873
+ } | undefined;
874
+ spend?: readonly {
875
+ limit: bigint;
876
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
877
+ token?: `0x${string}` | undefined;
878
+ }[] | undefined;
879
+ } | undefined;
880
+ chainId?: number | undefined;
881
+ prehash?: boolean | undefined
882
+ /** Private key. */
883
+ | undefined;
884
+ privateKey?: OneOf<{
885
+ credential: Pick<WebAuthnP256.P256Credential, "id" | "publicKey">;
886
+ rpId: string | undefined;
887
+ } | {
888
+ privateKey: PrivateKeyFn;
889
+ }> | undefined;
890
+ };
891
+ export declare namespace fromHeadlessWebAuthnP256 {
892
+ type Parameters = Pick<from.Value, 'chainId' | 'expiry' | 'feeToken' | 'permissions' | 'role'> & {
893
+ /** P256 private key. */
894
+ privateKey: Hex.Hex;
895
+ };
896
+ }
897
+ /**
898
+ * Instantiates a WebCryptoP256 key from its parameters.
899
+ *
900
+ * @example
901
+ * ```ts
902
+ * import { WebCryptoP256 } from 'ox'
903
+ * import * as Key from './key.js'
904
+ *
905
+ * const keyPair = await WebCryptoP256.createKeyPair()
906
+ *
907
+ * // Admin Key
908
+ * const key = Key.fromWebCryptoP256({
909
+ * keyPair,
910
+ * })
911
+ *
912
+ * // Session Key
913
+ * const key = Key.fromWebCryptoP256({
914
+ * expiry: 1714857600,
915
+ * keyPair,
916
+ * role: 'session',
917
+ * })
918
+ * ```
919
+ *
920
+ * @param parameters - Key parameters.
921
+ * @returns WebCryptoP256 key.
922
+ */
923
+ export declare function fromWebCryptoP256(parameters: fromWebCryptoP256.Parameters): {
924
+ expiry: number;
925
+ hash: `0x${string}`;
926
+ id: `0x${string}`;
927
+ publicKey: `0x${string}`;
928
+ role: "admin" | "session";
929
+ type: "p256";
930
+ feeToken?: {
931
+ limit: `${number}` | `${number}.${number}`;
932
+ symbol?: string | undefined;
933
+ } | null | undefined;
934
+ permissions?: {
935
+ calls?: readonly ({
936
+ signature: string;
937
+ to: `0x${string}`;
938
+ } | {
939
+ signature: string;
940
+ to?: undefined;
941
+ } | {
942
+ to: `0x${string}`;
943
+ signature?: undefined;
944
+ })[] | undefined;
945
+ signatureVerification?: {
946
+ addresses: readonly `0x${string}`[];
947
+ } | undefined;
948
+ spend?: readonly {
949
+ limit: bigint;
950
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
951
+ token?: `0x${string}` | undefined;
952
+ }[] | undefined;
953
+ } | undefined;
954
+ chainId?: number | undefined;
955
+ prehash?: boolean | undefined
956
+ /** Private key. */
957
+ | undefined;
958
+ privateKey?: PrivateKeyFn | undefined;
959
+ } | {
960
+ expiry: number;
961
+ hash: `0x${string}`;
962
+ id: `0x${string}`;
963
+ publicKey: `0x${string}`;
964
+ role: "admin" | "session";
965
+ type: "p256";
966
+ feeToken?: {
967
+ limit: `${number}` | `${number}.${number}`;
968
+ symbol?: string | undefined;
969
+ } | null | undefined;
970
+ permissions?: {
971
+ calls?: readonly ({
972
+ signature: string;
973
+ to: `0x${string}`;
974
+ } | {
975
+ signature: string;
976
+ to?: undefined;
977
+ } | {
978
+ to: `0x${string}`;
979
+ signature?: undefined;
980
+ })[] | undefined;
981
+ signatureVerification?: {
982
+ addresses: readonly `0x${string}`[];
983
+ } | undefined;
984
+ spend?: readonly {
985
+ limit: bigint;
986
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
987
+ token?: `0x${string}` | undefined;
988
+ }[] | undefined;
989
+ } | undefined;
990
+ chainId?: number | undefined;
991
+ prehash?: boolean | undefined
992
+ /** Private key. */
993
+ | undefined;
994
+ privateKey?: CryptoKey | undefined;
995
+ };
996
+ export declare namespace fromWebCryptoP256 {
997
+ type Parameters = Pick<from.Value, 'chainId' | 'expiry' | 'feeToken' | 'permissions' | 'role'> & {
998
+ /** P256 private key. */
999
+ keyPair: Awaited<ReturnType<typeof WebCryptoP256.createKeyPair>>;
1000
+ };
1001
+ }
1002
+ /**
1003
+ * Hashes a key.
1004
+ *
1005
+ * @example
1006
+ * ```ts
1007
+ * import * as Key from './key.js'
1008
+ *
1009
+ * const key = Key.createP256()
1010
+ *
1011
+ * const hash = Key.hash(key)
1012
+ * ```
1013
+ *
1014
+ * @param key - Key.
1015
+ * @returns Hashed key.
1016
+ */
1017
+ export declare function hash(key: Pick<Key, 'publicKey' | 'type'>): Hex.Hex;
1018
+ /**
1019
+ * Serializes a public key.
1020
+ *
1021
+ * @param publicKey - Public key.
1022
+ * @returns Serialized public key.
1023
+ */
1024
+ export declare function serializePublicKey(publicKey: Hex.Hex): Hex.Hex;
1025
+ /**
1026
+ * Serializes a key to a contract-compatible format.
1027
+ *
1028
+ * @example
1029
+ * ```ts
1030
+ * import * as Key from './key.js'
1031
+ *
1032
+ * const key = Key.createP256()
1033
+ *
1034
+ * const serialized = Key.serialize(key)
1035
+ * ```
1036
+ *
1037
+ * @param key - Key.
1038
+ * @returns Serialized key.
1039
+ */
1040
+ export declare function serialize(key: Key): Serialized;
1041
+ export declare function sign(key: Key, parameters: sign.Parameters): Promise<`0x${string}`>;
1042
+ export declare namespace sign {
1043
+ type Parameters = {
1044
+ /**
1045
+ * Address to use for replay-safe signing.
1046
+ * `null` if replay-safe signing is not needed (e.g. signing call bundles).
1047
+ */
1048
+ address: Address.Address | null;
1049
+ /**
1050
+ * Payload to sign.
1051
+ */
1052
+ payload: Hex.Hex;
1053
+ /**
1054
+ * Storage to use for keytype-specific caching (e.g. WebAuthn user verification).
1055
+ */
1056
+ storage?: Storage.Storage | undefined;
1057
+ /**
1058
+ * WebAuthn configuration.
1059
+ */
1060
+ webAuthn?: {
1061
+ createFn?: WebAuthnP256.createCredential.Options['createFn'];
1062
+ getFn?: WebAuthnP256.sign.Options['getFn'];
1063
+ } | undefined;
1064
+ /**
1065
+ * Whether to wrap the signature with key metadata.
1066
+ * @default true
1067
+ */
1068
+ wrap?: boolean | undefined;
1069
+ };
1070
+ }
1071
+ /**
1072
+ * Converts a key to a Relay-compatible format.
1073
+ *
1074
+ * @example
1075
+ * TODO
1076
+ *
1077
+ * @param key - Key.
1078
+ * @returns Relay key.
1079
+ */
1080
+ export declare function toRelay(key: toRelay.Value, options?: toRelay.Options): RequiredBy<Relay, 'prehash'>;
1081
+ export declare namespace toRelay {
1082
+ type Value = PartialBy<Pick<Key, 'expiry' | 'prehash' | 'permissions' | 'publicKey' | 'role' | 'type'>, 'expiry' | 'role'>;
1083
+ type Options = {
1084
+ /** Fee tokens. */
1085
+ feeTokens?: readonly Tokens.Token[] | undefined;
1086
+ /** Orchestrator address. */
1087
+ orchestrator?: Address.Address | undefined;
1088
+ };
1089
+ }
1090
+ /**
1091
+ * Resolves the permissions for the permissions request, and if needed, adds
1092
+ * the fee limit to the spend permissions.
1093
+ *
1094
+ * @param request - Permissions request.
1095
+ * @param options - Options.
1096
+ * @returns Resolved permissions.
1097
+ */
1098
+ export declare function resolvePermissions(key: Pick<Key, 'feeToken' | 'permissions'>, options: resolvePermissions.Options): {
1099
+ calls: ({
1100
+ signature: string;
1101
+ to: `0x${string}`;
1102
+ } | {
1103
+ signature: string;
1104
+ to?: undefined;
1105
+ } | {
1106
+ to: `0x${string}`;
1107
+ signature?: undefined;
1108
+ })[];
1109
+ spend: {
1110
+ limit: bigint;
1111
+ period: "minute" | "hour" | "day" | "week" | "month" | "year";
1112
+ token?: `0x${string}` | undefined;
1113
+ }[];
1114
+ signatureVerification?: {
1115
+ addresses: readonly `0x${string}`[];
1116
+ } | undefined;
1117
+ };
1118
+ export declare namespace resolvePermissions {
1119
+ type Options = {
1120
+ feeTokens?: Tokens.Tokens | null | undefined;
1121
+ };
1122
+ }
1123
+ /**
1124
+ * Gets the fee limit (in units of the fee token) to be used for the
1125
+ * authorized permissions.
1126
+ *
1127
+ * @param request - The permissions request to get the fee limit for.
1128
+ * @param options - Options.
1129
+ * @returns Fee limit (in units of the fee token).
1130
+ */
1131
+ export declare function getFeeToken(key: Pick<Key, 'feeToken' | 'permissions'>, options: getFeeToken.Options): getFeeToken.ReturnType;
1132
+ export declare namespace getFeeToken {
1133
+ type Options = {
1134
+ feeTokens: Tokens.Tokens;
1135
+ };
1136
+ type ReturnType = (Tokens.Token & {
1137
+ value: bigint;
1138
+ }) | undefined;
1139
+ }
1140
+ export declare function serializeWebAuthnSignature(options: serializeWebAuthnSignature.Options): `0x${string}`;
1141
+ export declare namespace serializeWebAuthnSignature {
1142
+ type Options = {
1143
+ metadata: WebAuthnP256.SignMetadata;
1144
+ signature: Signature.Signature<false>;
1145
+ };
1146
+ }
1147
+ export declare function wrapSignature(signature: Hex.Hex, options: wrapSignature.Options): `0x${string}`;
1148
+ declare namespace wrapSignature {
1149
+ type Options = {
1150
+ keyType: Key['type'];
1151
+ prehash?: boolean | undefined;
1152
+ publicKey: Hex.Hex;
1153
+ };
1154
+ }
1155
+ export {};