@ritbit/v4-client-js 2.5.2 → 2.7.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 (155) hide show
  1. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.js +19 -3
  2. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.js +28 -3
  3. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.js +92 -5
  4. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.js +7 -1
  5. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.js +19 -3
  6. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +1 -1
  7. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.js +134 -0
  8. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.js +204 -0
  9. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.js +57 -0
  10. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.js +4 -1
  11. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.js +3 -2
  12. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.js +4 -2
  13. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +1 -1
  14. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.js +151 -0
  15. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.js +134 -0
  16. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.js +248 -0
  17. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.js +34 -0
  18. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.js +71 -0
  19. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.js +282 -0
  20. package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.js +63 -0
  21. package/build/cjs/src/clients/composite-client.js +7 -3
  22. package/build/cjs/src/clients/constants.js +15 -3
  23. package/build/cjs/src/clients/lib/accounts.js +44 -5
  24. package/build/cjs/src/clients/lib/agent-approval-tx.js +83 -0
  25. package/build/cjs/src/clients/lib/agent-approval.js +119 -0
  26. package/build/cjs/src/clients/lib/eip712.js +592 -0
  27. package/build/cjs/src/clients/lib/eth-pubkey.js +68 -0
  28. package/build/cjs/src/clients/modules/account.js +7 -2
  29. package/build/cjs/src/clients/modules/composer.js +15 -2
  30. package/build/cjs/src/clients/modules/eip712-signer.js +189 -0
  31. package/build/cjs/src/clients/modules/eth-agent-wallet.js +101 -0
  32. package/build/cjs/src/clients/modules/eth-wallet.js +91 -0
  33. package/build/cjs/src/clients/modules/local-wallet.js +9 -2
  34. package/build/cjs/src/clients/modules/post.js +14 -4
  35. package/build/cjs/src/clients/modules/signer.js +7 -2
  36. package/build/cjs/src/index.js +38 -2
  37. package/build/cjs/src/lib/evm-address.js +92 -0
  38. package/build/cjs/src/lib/trading-key-utils.js +41 -3
  39. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  40. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.d.ts +15 -0
  41. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.d.ts.map +1 -1
  42. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.js +19 -3
  43. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.d.ts +24 -1
  44. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.d.ts.map +1 -1
  45. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.js +28 -3
  46. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.d.ts +43 -1
  47. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.d.ts.map +1 -1
  48. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.js +91 -4
  49. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.d.ts +4 -1
  50. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.d.ts.map +1 -1
  51. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.js +8 -2
  52. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.d.ts +9 -0
  53. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.d.ts.map +1 -1
  54. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.js +19 -3
  55. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts +14 -1
  56. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts.map +1 -1
  57. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +1 -1
  58. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.d.ts +116 -0
  59. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.d.ts.map +1 -0
  60. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.js +98 -0
  61. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.d.ts +80 -0
  62. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.d.ts.map +1 -0
  63. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.js +168 -0
  64. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.d.ts +21 -0
  65. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.d.ts.map +1 -0
  66. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.js +20 -0
  67. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.d.ts +1 -0
  68. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.d.ts.map +1 -1
  69. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.js +4 -1
  70. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts +4 -0
  71. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts.map +1 -1
  72. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.js +3 -2
  73. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.d.ts +2 -0
  74. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.d.ts.map +1 -1
  75. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.js +4 -2
  76. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts +0 -1
  77. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts.map +1 -1
  78. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +1 -1
  79. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.d.ts +79 -0
  80. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.d.ts.map +1 -0
  81. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.js +115 -0
  82. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.d.ts +116 -0
  83. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.d.ts.map +1 -0
  84. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.js +98 -0
  85. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.d.ts +82 -0
  86. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.d.ts.map +1 -0
  87. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.js +212 -0
  88. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.d.ts +11 -0
  89. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.d.ts.map +1 -0
  90. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.js +30 -0
  91. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.d.ts +29 -0
  92. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.d.ts.map +1 -0
  93. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.js +33 -0
  94. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.d.ts +123 -0
  95. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.d.ts.map +1 -0
  96. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.js +246 -0
  97. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.d.ts +36 -0
  98. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.d.ts.map +1 -0
  99. package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.js +26 -0
  100. package/build/esm/src/clients/composite-client.d.ts +6 -1
  101. package/build/esm/src/clients/composite-client.d.ts.map +1 -1
  102. package/build/esm/src/clients/composite-client.js +7 -3
  103. package/build/esm/src/clients/constants.d.ts +13 -1
  104. package/build/esm/src/clients/constants.d.ts.map +1 -1
  105. package/build/esm/src/clients/constants.js +13 -1
  106. package/build/esm/src/clients/lib/accounts.d.ts +4 -3
  107. package/build/esm/src/clients/lib/accounts.d.ts.map +1 -1
  108. package/build/esm/src/clients/lib/accounts.js +44 -5
  109. package/build/esm/src/clients/lib/agent-approval-tx.d.ts +46 -0
  110. package/build/esm/src/clients/lib/agent-approval-tx.d.ts.map +1 -0
  111. package/build/esm/src/clients/lib/agent-approval-tx.js +79 -0
  112. package/build/esm/src/clients/lib/agent-approval.d.ts +64 -0
  113. package/build/esm/src/clients/lib/agent-approval.d.ts.map +1 -0
  114. package/build/esm/src/clients/lib/agent-approval.js +112 -0
  115. package/build/esm/src/clients/lib/eip712.d.ts +95 -0
  116. package/build/esm/src/clients/lib/eip712.d.ts.map +1 -0
  117. package/build/esm/src/clients/lib/eip712.js +581 -0
  118. package/build/esm/src/clients/lib/eth-pubkey.d.ts +44 -0
  119. package/build/esm/src/clients/lib/eth-pubkey.d.ts.map +1 -0
  120. package/build/esm/src/clients/lib/eth-pubkey.js +61 -0
  121. package/build/esm/src/clients/modules/account.d.ts +5 -1
  122. package/build/esm/src/clients/modules/account.d.ts.map +1 -1
  123. package/build/esm/src/clients/modules/account.js +7 -2
  124. package/build/esm/src/clients/modules/composer.d.ts +12 -1
  125. package/build/esm/src/clients/modules/composer.d.ts.map +1 -1
  126. package/build/esm/src/clients/modules/composer.js +15 -2
  127. package/build/esm/src/clients/modules/eip712-signer.d.ts +99 -0
  128. package/build/esm/src/clients/modules/eip712-signer.d.ts.map +1 -0
  129. package/build/esm/src/clients/modules/eip712-signer.js +183 -0
  130. package/build/esm/src/clients/modules/eth-agent-wallet.d.ts +39 -0
  131. package/build/esm/src/clients/modules/eth-agent-wallet.d.ts.map +1 -0
  132. package/build/esm/src/clients/modules/eth-agent-wallet.js +97 -0
  133. package/build/esm/src/clients/modules/eth-wallet.d.ts +32 -0
  134. package/build/esm/src/clients/modules/eth-wallet.d.ts.map +1 -0
  135. package/build/esm/src/clients/modules/eth-wallet.js +83 -0
  136. package/build/esm/src/clients/modules/local-wallet.d.ts +2 -1
  137. package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -1
  138. package/build/esm/src/clients/modules/local-wallet.js +9 -2
  139. package/build/esm/src/clients/modules/post.d.ts +1 -1
  140. package/build/esm/src/clients/modules/post.d.ts.map +1 -1
  141. package/build/esm/src/clients/modules/post.js +14 -4
  142. package/build/esm/src/clients/modules/signer.d.ts +2 -1
  143. package/build/esm/src/clients/modules/signer.d.ts.map +1 -1
  144. package/build/esm/src/clients/modules/signer.js +7 -2
  145. package/build/esm/src/index.d.ts +13 -0
  146. package/build/esm/src/index.d.ts.map +1 -1
  147. package/build/esm/src/index.js +9 -1
  148. package/build/esm/src/lib/evm-address.d.ts +31 -0
  149. package/build/esm/src/lib/evm-address.d.ts.map +1 -0
  150. package/build/esm/src/lib/evm-address.js +85 -0
  151. package/build/esm/src/lib/trading-key-utils.d.ts +3 -0
  152. package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -1
  153. package/build/esm/src/lib/trading-key-utils.js +42 -4
  154. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  155. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/clients/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/clients/constants.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,8 @@ export const TYPE_URL_MSG_UNDELEGATE = '/cosmos.staking.v1beta1.MsgUndelegate';
86
86
  export const TYPE_URL_MSG_WITHDRAW_DELEGATOR_REWARD = '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward';
87
87
  // x/bridge
88
88
  export const TYPE_URL_MSG_WITHDRAWAL = '/ritbit.bridge.MsgWithdrawal';
89
+ export const TYPE_URL_MSG_WRAP_WITHDRAW = '/ritbit.wrap.MsgWithdraw';
90
+ export const TYPE_URL_MSG_WRAP_REDEEM = '/ritbit.wrap.MsgRedeem';
89
91
  // x/accountplus
90
92
  export const TYPE_URL_MSG_ADD_AUTHENTICATOR = '/ritbit.accountplus.MsgAddAuthenticator';
91
93
  export const TYPE_URL_MSG_REMOVE_AUTHENTICATOR = '/ritbit.accountplus.MsgRemoveAuthenticator';
@@ -176,6 +178,16 @@ export var AuthenticatorType;
176
178
  AuthenticatorType["MESSAGE_FILTER"] = "MessageFilter";
177
179
  AuthenticatorType["CLOB_PAIR_ID_FILTER"] = "ClobPairIdFilter";
178
180
  AuthenticatorType["SUBACCOUNT_FILTER"] = "SubaccountFilter";
181
+ /** Confines fund movements to the authorizing account's own wallet/subaccounts. */
182
+ AuthenticatorType["SELF_TRANSFER_FILTER"] = "SelfTransferFilter";
183
+ /** Authorizes by address: the key is recovered from each signature. */
184
+ AuthenticatorType["ETH_ADDRESS_SIGNATURE_VERIFICATION"] = "EthAddressSignatureVerification";
185
+ /**
186
+ * Not an authenticator but the marker of the readable approval form of
187
+ * MsgAddAuthenticator: `data` is the agent's 20-byte address and the chain
188
+ * builds the tree itself.
189
+ */
190
+ AuthenticatorType["AGENT"] = "Agent";
179
191
  })(AuthenticatorType || (AuthenticatorType = {}));
180
192
  export var TradingRewardAggregationPeriod;
181
193
  (function (TradingRewardAggregationPeriod) {
@@ -268,4 +280,4 @@ export class Network {
268
280
  return this.env;
269
281
  }
270
282
  }
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUl4QixjQUFjLGtCQUFrQixDQUFDO0FBRWpDOzs7R0FHRztBQUVILFdBQVc7QUFDWCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFFakQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsa0VBQWdELENBQUE7SUFDaEQsa0VBQWdELENBQUE7SUFDaEQsdURBQXFDLENBQUE7SUFDckMseURBQXVDLENBQUE7QUFDekMsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QixvRUFBbUQsQ0FBQTtJQUNuRCxvRUFBbUQsQ0FBQTtJQUNuRCxvREFBbUMsQ0FBQTtJQUNuQyw0REFBMkMsQ0FBQTtBQUM3QyxDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUVYO0FBRkQsV0FBWSxhQUFhO0lBQ3ZCLCtEQUE4QyxDQUFBO0FBQ2hELENBQUMsRUFGVyxhQUFhLEtBQWIsYUFBYSxRQUV4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsK0RBQTJDLENBQUE7SUFDM0MsK0RBQTJDLENB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
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUl4QixjQUFjLGtCQUFrQixDQUFDO0FBRWpDOzs7R0FHRztBQUVILFdBQVc7QUFDWCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFFakQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsa0VBQWdELENBQUE7SUFDaEQsa0VBQWdELENBQUE7SUFDaEQsdURBQXFDLENBQUE7SUFDckMseURBQXVDLENBQUE7QUFDekMsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QixvRUFBbUQsQ0FBQTtJQUNuRCxvRUFBbUQsQ0FBQTtJQUNuRCxvREFBbUMsQ0FBQTtJQUNuQyw0REFBMkMsQ0FBQTtBQUM3QyxDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUVYO0FBRkQsV0FBWSxhQUFhO0lBQ3ZCLCtEQUE4QyxDQUFBO0FBQ2hELENBQUMsRUFGVyxhQUFhLEtBQWIsYUFBYSxRQUV4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsK0RBQTJDLENBQUE7SUFDM0MsK0RBQTJDLENB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
@@ -20,9 +20,10 @@ export interface Account {
20
20
  }
21
21
  /**
22
22
  * Bigint-safe replacement for cosmjs's `accountFromAny()`. Handles the account
23
- * types the chain actually uses (BaseAccount, ModuleAccount) itself and falls
24
- * back to the cosmjs parser for exotic ones (vesting etc.), which keeps the old
25
- * behavior for them.
23
+ * types the chain actually uses (BaseAccount, ModuleAccount eth accounts are
24
+ * stored as BaseAccount with an eth_secp256k1 pubkey) plus the EthAccount
25
+ * wrappers other cosmos/evm chains use, and falls back to the cosmjs parser
26
+ * for exotic ones (vesting etc.), which keeps the old behavior for them.
26
27
  */
27
28
  export declare function accountFromAny(input: Any): Account;
28
29
  //# sourceMappingURL=accounts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../../../src/clients/lib/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAeD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAclD"}
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../../../src/clients/lib/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAKvD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAkDD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAkBlD"}
@@ -2,22 +2,58 @@ import { decodeOptionalPubkey } from '@cosmjs/proto-signing';
2
2
  import { accountFromAny as cosmjsAccountFromAny } from '@cosmjs/stargate';
3
3
  import { assert } from '@cosmjs/utils';
4
4
  import { BaseAccount, ModuleAccount } from 'cosmjs-types/cosmos/auth/v1beta1/auth';
5
+ import { Reader } from 'protobufjs/minimal';
6
+ import { decodeEthSecp256k1Pubkey, ETH_SECP256K1_PUBKEY_TYPE_URL } from './eth-pubkey';
5
7
  function toSafeAccountNumber(value) {
6
8
  return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : value;
7
9
  }
10
+ /**
11
+ * Like cosmjs's `decodeOptionalPubkey()`, but also understands the
12
+ * eth_secp256k1 pubkey the chain stores for eth accounts on first use
13
+ * (cosmjs throws "Pubkey type_url ... not recognized" for it). The wire
14
+ * format is the same as `cosmos.crypto.secp256k1.PubKey`.
15
+ */
16
+ function decodeOptionalPubkeyWithEth(pubkeyAny) {
17
+ if (pubkeyAny && pubkeyAny.typeUrl === ETH_SECP256K1_PUBKEY_TYPE_URL) {
18
+ return decodeEthSecp256k1Pubkey(pubkeyAny.value);
19
+ }
20
+ return decodeOptionalPubkey(pubkeyAny);
21
+ }
8
22
  function accountFromBaseAccount(input) {
9
23
  return {
10
24
  address: input.address,
11
- pubkey: decodeOptionalPubkey(input.pubKey),
25
+ pubkey: decodeOptionalPubkeyWithEth(input.pubKey),
12
26
  accountNumber: toSafeAccountNumber(BigInt(input.accountNumber.toString())),
13
27
  sequence: Number(input.sequence),
14
28
  };
15
29
  }
30
+ /**
31
+ * Extracts the nested `base_account` (field 1) out of a serialized EthAccount
32
+ * (`{ BaseAccount base_account = 1; string code_hash = 2; }`). There is no
33
+ * codegen for EthAccount in the client's proto packages (the chain's
34
+ * cosmos/evm version keeps eth accounts as plain BaseAccount), so the outer
35
+ * message is scanned manually as a defensive fallback for chains that do
36
+ * store EthAccount.
37
+ */
38
+ function baseAccountFromEthAccount(value) {
39
+ const reader = Reader.create(value);
40
+ while (reader.pos < reader.len) {
41
+ const tag = reader.uint32();
42
+ // eslint-disable-next-line no-bitwise
43
+ if (tag >>> 3 === 1) {
44
+ return BaseAccount.decode(reader.bytes());
45
+ }
46
+ // eslint-disable-next-line no-bitwise
47
+ reader.skipType(tag & 7);
48
+ }
49
+ throw new Error('EthAccount does not contain a base account');
50
+ }
16
51
  /**
17
52
  * Bigint-safe replacement for cosmjs's `accountFromAny()`. Handles the account
18
- * types the chain actually uses (BaseAccount, ModuleAccount) itself and falls
19
- * back to the cosmjs parser for exotic ones (vesting etc.), which keeps the old
20
- * behavior for them.
53
+ * types the chain actually uses (BaseAccount, ModuleAccount eth accounts are
54
+ * stored as BaseAccount with an eth_secp256k1 pubkey) plus the EthAccount
55
+ * wrappers other cosmos/evm chains use, and falls back to the cosmjs parser
56
+ * for exotic ones (vesting etc.), which keeps the old behavior for them.
21
57
  */
22
58
  export function accountFromAny(input) {
23
59
  switch (input.typeUrl) {
@@ -28,8 +64,11 @@ export function accountFromAny(input) {
28
64
  assert(baseAccount);
29
65
  return accountFromBaseAccount(baseAccount);
30
66
  }
67
+ case '/cosmos.evm.types.v1.EthAccount':
68
+ case '/ethermint.types.v1.EthAccount':
69
+ return accountFromBaseAccount(baseAccountFromEthAccount(input.value));
31
70
  default:
32
71
  return cosmjsAccountFromAny(input);
33
72
  }
34
73
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50cy9saWIvYWNjb3VudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQXNCbkYsU0FBUyxtQkFBbUIsQ0FBQyxLQUFhO0lBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsS0FBa0I7SUFDaEQsT0FBTztRQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixNQUFNLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7S0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBVTtJQUN2QyxRQUFRLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixLQUFLLGtDQUFrQztZQUNyQyxPQUFPLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFakUsS0FBSyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7WUFDMUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwQixPQUFPLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRDtZQUNFLE9BQU8sb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztBQUNILENBQUMifQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50cy9saWIvYWNjb3VudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBcUJ2RixTQUFTLG1CQUFtQixDQUFDLEtBQWE7SUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDJCQUEyQixDQUFDLFNBQTBCO0lBQzdELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssNkJBQTZCLEVBQUUsQ0FBQztRQUNyRSxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxLQUFrQjtJQUNoRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLE1BQU0sRUFBRSwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2pELGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztLQUNqQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLHlCQUF5QixDQUFDLEtBQWlCO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsc0NBQXNDO1FBQ3RDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELHNDQUFzQztRQUN0QyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQVU7SUFDdkMsUUFBUSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsS0FBSyxrQ0FBa0M7WUFDckMsT0FBTyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpFLEtBQUssb0NBQW9DLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNsRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEIsT0FBTyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsS0FBSyxpQ0FBaUMsQ0FBQztRQUN2QyxLQUFLLGdDQUFnQztZQUNuQyxPQUFPLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhFO1lBQ0UsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,46 @@
1
+ import { EncodeObject, Registry } from '@cosmjs/proto-signing';
2
+ import { AgentApproval, agentApprovalDigest } from './agent-approval';
3
+ import { Eip712TypedData } from './eip712';
4
+ /**
5
+ * Assembles the approval transaction whose signature is over the approval
6
+ * itself, not over the SignDoc.
7
+ *
8
+ * The chain rebuilds the payload from the message (see
9
+ * protocol/app/ante/agent_approval.go) and checks the signature against it, so
10
+ * everything the payload does not name has to be absent from the transaction:
11
+ * no fee, no memo, no timeout, no extension options, one message. Those are not
12
+ * stylistic choices — the ante rejects the transaction otherwise, because an
13
+ * unsigned field is a field a relayer could have set.
14
+ */
15
+ export interface AgentApprovalTxOptions {
16
+ /** Bech32 address of the account the agent will act for. */
17
+ sender: string;
18
+ /** The approval the wallet is asked to sign. */
19
+ approval: AgentApproval;
20
+ /** Chain id of the network the transaction is broadcast to. */
21
+ chainId: string;
22
+ /** The sender's account number, from the chain. */
23
+ accountNumber: number | bigint;
24
+ /** Gas limit. Nothing signs it, so the chain caps it (MaxAgentApprovalGas). */
25
+ gas?: number;
26
+ }
27
+ /** Asks the wallet for an eth_signTypedData_v4 signature and returns the 0x hex. */
28
+ export type SignAgentApprovalCallback = (typedData: Eip712TypedData) => Promise<string>;
29
+ /**
30
+ * Builds MsgAddAuthenticator in its agent form: the chain reads the agent's
31
+ * address from `data` and builds the authenticator tree itself, which is what
32
+ * lets the approval be readable — no part of the granted authority travels in
33
+ * the transaction.
34
+ */
35
+ export declare function composeAgentApprovalMsg(options: AgentApprovalTxOptions): EncodeObject;
36
+ /**
37
+ * Signs an agent approval as a payload and returns the broadcastable TxRaw.
38
+ *
39
+ * The signer's public key is recovered from the very signature the wallet
40
+ * returns, so a wallet the app has never seen before can approve an agent
41
+ * without a separate prompt whose only purpose is to expose its key.
42
+ */
43
+ export declare function signAgentApprovalTx(options: AgentApprovalTxOptions, signTypedData: SignAgentApprovalCallback, registry?: Registry): Promise<Uint8Array>;
44
+ /** Re-exported so callers can show the digest they are about to have signed. */
45
+ export { agentApprovalDigest };
46
+ //# sourceMappingURL=agent-approval-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-approval-tx.d.ts","sourceRoot":"","sources":["../../../../../src/clients/lib/agent-approval-tx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAC;AAIlF,OAAO,EAEL,aAAa,EAEb,mBAAmB,EAEpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,EAAE,aAAa,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,oFAAoF;AACpF,MAAM,MAAM,yBAAyB,GAAG,CAAC,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAKxF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAWrF;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,sBAAsB,EAC/B,aAAa,EAAE,yBAAyB,EACxC,QAAQ,GAAE,QAA6B,GACtC,OAAO,CAAC,UAAU,CAAC,CA0CrB;AAeD,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { Int53 } from '@cosmjs/math';
2
+ import { makeAuthInfoBytes } from '@cosmjs/proto-signing';
3
+ import { TxBody, TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
4
+ import { encodeEthSecp256k1Pubkey, ethSecp256k1PubkeyToAny } from './eth-pubkey';
5
+ import { AGENT_AUTHENTICATOR_TYPE, agentAddressBytes, agentApprovalDigest, agentApprovalTypedData, } from './agent-approval';
6
+ import { generateRegistry } from './registry';
7
+ import { recoverPubKeyFromTypedDataSignature } from '../modules/eip712-signer';
8
+ import { TYPE_URL_MSG_ADD_AUTHENTICATOR } from '../constants';
9
+ /** Gas for registering one authenticator; well under the chain's ceiling. */
10
+ const DEFAULT_APPROVAL_GAS = 200000;
11
+ /**
12
+ * Builds MsgAddAuthenticator in its agent form: the chain reads the agent's
13
+ * address from `data` and builds the authenticator tree itself, which is what
14
+ * lets the approval be readable — no part of the granted authority travels in
15
+ * the transaction.
16
+ */
17
+ export function composeAgentApprovalMsg(options) {
18
+ return {
19
+ typeUrl: TYPE_URL_MSG_ADD_AUTHENTICATOR,
20
+ value: {
21
+ sender: options.sender,
22
+ authenticatorType: AGENT_AUTHENTICATOR_TYPE,
23
+ data: agentAddressBytes(options.approval.agentAddress),
24
+ name: options.approval.agentName,
25
+ expiresAt: options.approval.expiresAt,
26
+ },
27
+ };
28
+ }
29
+ /**
30
+ * Signs an agent approval as a payload and returns the broadcastable TxRaw.
31
+ *
32
+ * The signer's public key is recovered from the very signature the wallet
33
+ * returns, so a wallet the app has never seen before can approve an agent
34
+ * without a separate prompt whose only purpose is to expose its key.
35
+ */
36
+ export async function signAgentApprovalTx(options, signTypedData, registry = generateRegistry()) {
37
+ var _a;
38
+ const typedData = agentApprovalTypedData(options.approval);
39
+ const signatureHex = await signTypedData(typedData);
40
+ const signature = parseApprovalSignature(signatureHex);
41
+ const signerPubkey = recoverPubKeyFromTypedDataSignature(typedData, signatureHex);
42
+ const msg = composeAgentApprovalMsg(options);
43
+ const bodyBytes = TxBody.encode(TxBody.fromPartial({
44
+ messages: [registry.encodeAsAny(msg)],
45
+ // Empty on purpose: the payload names none of these, so the ante refuses
46
+ // a transaction that carries them.
47
+ memo: '',
48
+ })).finish();
49
+ const authInfoBytes = makeAuthInfoBytes([
50
+ {
51
+ pubkey: ethSecp256k1PubkeyToAny(encodeEthSecp256k1Pubkey(signerPubkey)),
52
+ // The approval's nonce IS the sequence, so the two cannot disagree.
53
+ sequence: options.approval.nonce,
54
+ },
55
+ ],
56
+ // No fee: registering an agent is a fee-free operation, and a fee is
57
+ // something the signature does not cover.
58
+ [], Int53.fromString(String((_a = options.gas) !== null && _a !== void 0 ? _a : DEFAULT_APPROVAL_GAS)).toNumber(), undefined, undefined);
59
+ return Uint8Array.from(TxRaw.encode(TxRaw.fromPartial({
60
+ bodyBytes,
61
+ authInfoBytes,
62
+ signatures: [signature],
63
+ })).finish());
64
+ }
65
+ /** The wallet's 65-byte r ‖ s ‖ v, as the chain's recovery expects it. */
66
+ function parseApprovalSignature(signatureHex) {
67
+ const hex = signatureHex.startsWith('0x') ? signatureHex.slice(2) : signatureHex;
68
+ const bytes = new Uint8Array(hex.length / 2);
69
+ for (let i = 0; i < bytes.length; i += 1) {
70
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
71
+ }
72
+ if (bytes.length !== 65) {
73
+ throw new Error(`Expected a 65-byte approval signature, got ${bytes.length} bytes`);
74
+ }
75
+ return bytes;
76
+ }
77
+ /** Re-exported so callers can show the digest they are about to have signed. */
78
+ export { agentApprovalDigest };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtYXBwcm92YWwtdHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50cy9saWIvYWdlbnQtYXBwcm92YWwtdHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakYsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHNCQUFzQixHQUN2QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUE2QjlELDZFQUE2RTtBQUM3RSxNQUFNLG9CQUFvQixHQUFHLE1BQU8sQ0FBQztBQUVyQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUErQjtJQUNyRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsaUJBQWlCLEVBQUUsd0JBQXdCO1lBQzNDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN0RCxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7U0FDdEM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLE9BQStCLEVBQy9CLGFBQXdDLEVBQ3hDLFdBQXFCLGdCQUFnQixFQUFFOztJQUV2QyxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFcEQsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkQsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWxGLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzdCLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDakIsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyx5RUFBeUU7UUFDekUsbUNBQW1DO1FBQ25DLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQyxDQUNILENBQUMsTUFBTSxFQUFFLENBQUM7SUFFWCxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FDckM7UUFDRTtZQUNFLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2RSxvRUFBb0U7WUFDcEUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztTQUNqQztLQUNGO0lBQ0QscUVBQXFFO0lBQ3JFLDBDQUEwQztJQUMxQyxFQUFFLEVBQ0YsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBQSxPQUFPLENBQUMsR0FBRyxtQ0FBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQ3hFLFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQztJQUVGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FDcEIsS0FBSyxDQUFDLE1BQU0sQ0FDVixLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ2hCLFNBQVM7UUFDVCxhQUFhO1FBQ2IsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ3hCLENBQUMsQ0FDSCxDQUFDLE1BQU0sRUFBRSxDQUNYLENBQUM7QUFDSixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLFNBQVMsc0JBQXNCLENBQUMsWUFBb0I7SUFDbEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIn0=
@@ -0,0 +1,64 @@
1
+ import { Eip712TypedData } from './eip712';
2
+ /**
3
+ * The approval a wallet is asked to sign when a trading key is authorized.
4
+ *
5
+ * Unlike a cosmos transaction — which EIP-712 renders as a machine-built "Tx"
6
+ * wrapping account_number, sequence, fee, gas and a nested msg0 — this payload
7
+ * is the approval itself: the agent, its name, when it expires, and a nonce.
8
+ * The chain rebuilds exactly this from MsgApproveAgent and checks the signature
9
+ * against it, so what the user read is what was authorized.
10
+ *
11
+ * Every name here is part of the digest and must match the chain byte for byte
12
+ * (protocol/x/accountplus/types/agent_eip712.go). The fixtures in
13
+ * __tests__/fixtures/agent_approval_goldens.json are generated by the chain and
14
+ * are what keeps the two in step.
15
+ */
16
+ export declare const AGENT_APPROVAL_DOMAIN_NAME = "RubinSignTransaction";
17
+ export declare const AGENT_APPROVAL_DOMAIN_VERSION = "1";
18
+ export declare const AGENT_APPROVAL_PRIMARY_TYPE = "RubinTransaction:ApproveAgent";
19
+ export interface AgentApproval {
20
+ /** The chain id from genesis, e.g. "ritbit-mainnet". */
21
+ rubinChain: string;
22
+ /** Bech32 or 0x address of the agent key being approved. */
23
+ agentAddress: string;
24
+ /** Human-readable label; empty is the unnamed session slot. */
25
+ agentName: string;
26
+ /** Unix seconds at which the agent stops working; 0 asks for the default. */
27
+ expiresAt: number;
28
+ /**
29
+ * The account's current sequence, which doubles as the replay guard: the
30
+ * chain enforces it independently of any signature, so a replayed approval
31
+ * carries a stale one and hashes to something the signature does not match.
32
+ */
33
+ nonce: number;
34
+ }
35
+ /**
36
+ * Renders a bech32 address as the 0x form the payload declares. Both are the
37
+ * same 20 bytes; a wallet can only display the hex one.
38
+ */
39
+ export declare function agentAddressToHex(address: string): string;
40
+ /**
41
+ * The agent address that means "approve nobody": a revocation.
42
+ *
43
+ * Withdrawing a key rides the same payload as granting one — same domain, same
44
+ * fields, same signing path — because the moment a user most needs to read the
45
+ * dialog is the moment they are taking a key away. The chain removes the key
46
+ * whose name the payload carries (see IsAgentRevocation in agent.go).
47
+ */
48
+ export declare const AGENT_REVOCATION_ADDRESS = "0x0000000000000000000000000000000000000000";
49
+ /** Builds the typed data the wallet signs. */
50
+ export declare function agentApprovalTypedData(approval: AgentApproval): Eip712TypedData;
51
+ /**
52
+ * The 32-byte digest the wallet signs: keccak(0x19 0x01 ‖ domainSeparator ‖
53
+ * hashStruct(message)).
54
+ */
55
+ export declare function agentApprovalDigest(approval: AgentApproval): Uint8Array;
56
+ /**
57
+ * The authenticator type that marks the readable agent form of
58
+ * MsgAddAuthenticator: `data` is then the agent's 20-byte address and the chain
59
+ * builds the tree itself.
60
+ */
61
+ export declare const AGENT_AUTHENTICATOR_TYPE = "Agent";
62
+ /** The 20 address bytes the agent form carries as `data`. */
63
+ export declare function agentAddressBytes(address: string): Uint8Array;
64
+ //# sourceMappingURL=agent-approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-approval.d.ts","sourceRoot":"","sources":["../../../../../src/clients/lib/agent-approval.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAK3E,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,+CAAe,CAAC;AAErD,8CAA8C;AAC9C,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,CA8C/E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,CAYvE;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAK7D"}
@@ -0,0 +1,112 @@
1
+ import { fromBech32, fromHex, toHex } from '@cosmjs/encoding';
2
+ import { getBytes, TypedDataEncoder } from 'ethers';
3
+ /**
4
+ * The approval a wallet is asked to sign when a trading key is authorized.
5
+ *
6
+ * Unlike a cosmos transaction — which EIP-712 renders as a machine-built "Tx"
7
+ * wrapping account_number, sequence, fee, gas and a nested msg0 — this payload
8
+ * is the approval itself: the agent, its name, when it expires, and a nonce.
9
+ * The chain rebuilds exactly this from MsgApproveAgent and checks the signature
10
+ * against it, so what the user read is what was authorized.
11
+ *
12
+ * Every name here is part of the digest and must match the chain byte for byte
13
+ * (protocol/x/accountplus/types/agent_eip712.go). The fixtures in
14
+ * __tests__/fixtures/agent_approval_goldens.json are generated by the chain and
15
+ * are what keeps the two in step.
16
+ */
17
+ export const AGENT_APPROVAL_DOMAIN_NAME = 'RubinSignTransaction';
18
+ export const AGENT_APPROVAL_DOMAIN_VERSION = '1';
19
+ export const AGENT_APPROVAL_PRIMARY_TYPE = 'RubinTransaction:ApproveAgent';
20
+ /** verifyingContract is unused; the payload is not addressed to a contract. */
21
+ const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
22
+ /**
23
+ * Renders a bech32 address as the 0x form the payload declares. Both are the
24
+ * same 20 bytes; a wallet can only display the hex one.
25
+ */
26
+ export function agentAddressToHex(address) {
27
+ if (address.startsWith('0x')) {
28
+ return address.toLowerCase();
29
+ }
30
+ return `0x${toHex(fromBech32(address).data)}`;
31
+ }
32
+ /**
33
+ * The agent address that means "approve nobody": a revocation.
34
+ *
35
+ * Withdrawing a key rides the same payload as granting one — same domain, same
36
+ * fields, same signing path — because the moment a user most needs to read the
37
+ * dialog is the moment they are taking a key away. The chain removes the key
38
+ * whose name the payload carries (see IsAgentRevocation in agent.go).
39
+ */
40
+ export const AGENT_REVOCATION_ADDRESS = ZERO_ADDRESS;
41
+ /** Builds the typed data the wallet signs. */
42
+ export function agentApprovalTypedData(approval) {
43
+ // The expiry is shown only when it says something. Zero means "give me the
44
+ // chain's default lifetime", and a wallet rendering `expiresAt: 0` reads as
45
+ // "never expires" — the opposite of the truth. So the zero case drops the
46
+ // field, which is a second SHAPE, not a hidden value: EIP-712 hashes the
47
+ // declared field list, so the two produce different digests and neither
48
+ // signature can be replayed as the other. The chain decides which shape
49
+ // applies from the message it executes (agent_eip712.go), never the signer.
50
+ const withExpiry = approval.expiresAt !== 0;
51
+ const fields = [
52
+ { name: 'rubinChain', type: 'string' },
53
+ { name: 'agentAddress', type: 'address' },
54
+ { name: 'agentName', type: 'string' },
55
+ ...(withExpiry ? [{ name: 'expiresAt', type: 'uint64' }] : []),
56
+ { name: 'nonce', type: 'uint64' },
57
+ ];
58
+ const message = {
59
+ rubinChain: approval.rubinChain,
60
+ agentAddress: agentAddressToHex(approval.agentAddress),
61
+ agentName: approval.agentName,
62
+ ...(withExpiry ? { expiresAt: approval.expiresAt } : {}),
63
+ nonce: approval.nonce,
64
+ };
65
+ return {
66
+ types: {
67
+ // No chainId: EIP-712 lets the domain carry any subset of its fields, and
68
+ // a wallet only compares chainId when it is present. Leaving it out means
69
+ // the approval does not depend on which network the wallet happens to be
70
+ // on, and the chain does not have to learn that from the transaction. The
71
+ // binding that matters is rubinChain below.
72
+ EIP712Domain: [
73
+ { name: 'name', type: 'string' },
74
+ { name: 'version', type: 'string' },
75
+ { name: 'verifyingContract', type: 'address' },
76
+ ],
77
+ [AGENT_APPROVAL_PRIMARY_TYPE]: fields,
78
+ },
79
+ primaryType: AGENT_APPROVAL_PRIMARY_TYPE,
80
+ domain: {
81
+ name: AGENT_APPROVAL_DOMAIN_NAME,
82
+ version: AGENT_APPROVAL_DOMAIN_VERSION,
83
+ verifyingContract: ZERO_ADDRESS,
84
+ },
85
+ message,
86
+ };
87
+ }
88
+ /**
89
+ * The 32-byte digest the wallet signs: keccak(0x19 0x01 ‖ domainSeparator ‖
90
+ * hashStruct(message)).
91
+ */
92
+ export function agentApprovalDigest(approval) {
93
+ const typedData = agentApprovalTypedData(approval);
94
+ // ethers derives the primary type from the types map, so the EIP712Domain
95
+ // entry must not be part of what it is handed.
96
+ const { EIP712Domain: _domainType, ...messageTypes } = typedData.types;
97
+ return getBytes(TypedDataEncoder.hash(typedData.domain, messageTypes, typedData.message));
98
+ }
99
+ /**
100
+ * The authenticator type that marks the readable agent form of
101
+ * MsgAddAuthenticator: `data` is then the agent's 20-byte address and the chain
102
+ * builds the tree itself.
103
+ */
104
+ export const AGENT_AUTHENTICATOR_TYPE = 'Agent';
105
+ /** The 20 address bytes the agent form carries as `data`. */
106
+ export function agentAddressBytes(address) {
107
+ if (address.startsWith('0x')) {
108
+ return fromHex(address.slice(2));
109
+ }
110
+ return fromBech32(address).data;
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtYXBwcm92YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50cy9saWIvYWdlbnQtYXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUlwRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsc0JBQXNCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLCtCQUErQixDQUFDO0FBRTNFLCtFQUErRTtBQUMvRSxNQUFNLFlBQVksR0FBRyw0Q0FBNEMsQ0FBQztBQW1CbEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWU7SUFDL0MsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQUM7QUFFckQsOENBQThDO0FBQzlDLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUF1QjtJQUM1RCwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSx5RUFBeUU7SUFDekUsd0VBQXdFO0lBQ3hFLHdFQUF3RTtJQUN4RSw0RUFBNEU7SUFDNUUsTUFBTSxVQUFVLEdBQUcs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
@@ -0,0 +1,95 @@
1
+ import { SignDoc } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
2
+ /**
3
+ * EIP-712 typed-data generation for plain cosmos transactions, so that a
4
+ * browser wallet (MetaMask via wagmi/viem signTypedData) can sign them.
5
+ *
6
+ * This is a byte-for-byte TypeScript port of the chain-side conversion in
7
+ * cosmos/evm ethereum/eip712 (encoding.go, eip712.go, types.go, message.go,
8
+ * domain.go): the chain verifies an EIP-712 signature over a typed-data
9
+ * rendering of the SIGN_MODE_DIRECT SignDoc, where the message payload is the
10
+ * SDK x/tx aminojson (SIGN_MODE_LEGACY_AMINO_JSON) sign doc with the msgs
11
+ * array flattened into msg0/msg1/... fields.
12
+ *
13
+ * Verified against golden vectors generated by the chain itself
14
+ * (__tests__/fixtures/eip712_goldens.json).
15
+ */
16
+ export type AminoJsonValue = string | number | boolean | AminoJsonValue[] | {
17
+ [key: string]: AminoJsonValue;
18
+ };
19
+ export type AminoJsonObject = {
20
+ [key: string]: AminoJsonValue;
21
+ };
22
+ export interface Eip712TypeField {
23
+ name: string;
24
+ type: string;
25
+ }
26
+ export type Eip712Types = Record<string, Eip712TypeField[]>;
27
+ export interface Eip712Domain {
28
+ name: string;
29
+ version: string;
30
+ /** EIP-155 chain id as a 0x-prefixed hex string (geth HexOrDecimal256 form). */
31
+ chainId: string;
32
+ verifyingContract: string;
33
+ salt: string;
34
+ }
35
+ export interface Eip712TypedData {
36
+ types: Eip712Types;
37
+ primaryType: 'Tx';
38
+ domain: Eip712Domain;
39
+ message: AminoJsonObject;
40
+ }
41
+ /** An amino msg: {"type": "<amino name>", "value": {...}}. */
42
+ export interface Eip712AminoMsg {
43
+ type: string;
44
+ value: AminoJsonObject;
45
+ }
46
+ /**
47
+ * Converts the protobuf-encoded value bytes of a msg Any into its amino JSON
48
+ * form, following the SDK x/tx aminojson rules: snake_case field names, 64-bit
49
+ * ints as strings, 32-bit ints as numbers, bytes as base64, and empty/default
50
+ * fields omitted (unless the proto field is marked amino.dont_omitempty).
51
+ */
52
+ export type Eip712AminoConverter = (msgValueBytes: Uint8Array) => Eip712AminoMsg;
53
+ /**
54
+ * Registers (or overrides) the amino converter for a msg typeUrl, extending
55
+ * the set of message types that can be EIP-712 signed.
56
+ */
57
+ export declare function registerEip712AminoConverter(typeUrl: string, converter: Eip712AminoConverter): void;
58
+ /**
59
+ * Port of domain.go createEIP712Domain. The chainId is rendered the way geth's
60
+ * math.HexOrDecimal256 marshals it (0x-prefixed lowercase hex).
61
+ */
62
+ export declare function createEip712Domain(evmChainId: number): Eip712Domain;
63
+ /**
64
+ * Port of encoding.go decodeProtobufSignDoc + message.go FlattenPayloadMessages:
65
+ * decodes a SIGN_MODE_DIRECT SignDoc, renders the equivalent aminojson sign
66
+ * doc payload and flattens the msgs array into msg0/msg1/... fields.
67
+ *
68
+ * Returns the flattened payload (= the typed-data message) and the number of
69
+ * msgs it contains.
70
+ */
71
+ export declare function signDocToEip712Message(signDoc: SignDoc): {
72
+ message: AminoJsonObject;
73
+ numMsgs: number;
74
+ };
75
+ /**
76
+ * Converts a SIGN_MODE_DIRECT SignDoc into the EIP-712 typed data the chain
77
+ * expects a browser wallet to sign (port of cosmos/evm's WrapTxToTypedData
78
+ * over decodeProtobufSignDoc).
79
+ *
80
+ * @param evmChainId The EIP-155 chain id of the chain (e.g. 111984).
81
+ */
82
+ export declare function signDocToEip712TypedData(signDoc: SignDoc, evmChainId: number): Eip712TypedData;
83
+ /** Same as signDocToEip712TypedData, from raw protobuf SignDoc bytes. */
84
+ export declare function signDocBytesToEip712TypedData(signDocBytes: Uint8Array, evmChainId: number): Eip712TypedData;
85
+ /**
86
+ * The EIP-712 digest the wallet signs:
87
+ * keccak256(0x1901 || hashStruct(EIP712Domain) || hashStruct(Tx)).
88
+ *
89
+ * The domain separator is hashed with the DECLARED domain types (geth's
90
+ * apitypes behavior) — verifyingContract and salt are 'string' fields here,
91
+ * not address/bytes32 — so it cannot go through ethers' built-in
92
+ * TypedDataEncoder.hash(), whose fixed domain schema differs.
93
+ */
94
+ export declare function eip712Digest(typedData: Eip712TypedData): Uint8Array;
95
+ //# sourceMappingURL=eip712.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip712.d.ts","sourceRoot":"","sources":["../../../../../src/clients/lib/eip712.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAY,OAAO,EAAU,MAAM,mCAAmC,CAAC;AAwB9E;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,cAAc,EAAE,GAChB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAMD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,UAAU,KAAK,cAAc,CAAC;AAiTjF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,oBAAoB,GAC9B,IAAI,CAEN;AAuND;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAQnE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG;IACxD,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CA2CA;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAQ9F;AAED,yEAAyE;AACzE,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,MAAM,GACjB,eAAe,CAEjB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,UAAU,CAanE"}