@ritbit/v4-client-js 2.5.2 → 2.6.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.
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.js +19 -3
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.js +28 -3
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.js +92 -5
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.js +7 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.js +19 -3
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +1 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.js +134 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.js +204 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.js +57 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.js +4 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.js +3 -2
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.js +4 -2
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +1 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.js +151 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.js +134 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.js +248 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.js +34 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.js +71 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.js +282 -0
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.js +63 -0
- package/build/cjs/src/clients/composite-client.js +7 -3
- package/build/cjs/src/clients/constants.js +15 -3
- package/build/cjs/src/clients/lib/accounts.js +44 -5
- package/build/cjs/src/clients/lib/agent-approval-tx.js +83 -0
- package/build/cjs/src/clients/lib/agent-approval.js +119 -0
- package/build/cjs/src/clients/lib/eip712.js +592 -0
- package/build/cjs/src/clients/lib/eth-pubkey.js +68 -0
- package/build/cjs/src/clients/modules/composer.js +15 -2
- package/build/cjs/src/clients/modules/eip712-signer.js +189 -0
- package/build/cjs/src/clients/modules/eth-agent-wallet.js +101 -0
- package/build/cjs/src/clients/modules/eth-wallet.js +91 -0
- package/build/cjs/src/clients/modules/local-wallet.js +9 -2
- package/build/cjs/src/clients/modules/post.js +14 -4
- package/build/cjs/src/clients/modules/signer.js +7 -2
- package/build/cjs/src/index.js +38 -2
- package/build/cjs/src/lib/evm-address.js +92 -0
- package/build/cjs/src/lib/trading-key-utils.js +41 -3
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.d.ts +15 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/models.js +19 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.d.ts +24 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/params.js +28 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.d.ts +43 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.js +91 -4
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.d.ts +4 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/accountplus/tx.rpc.msg.js +8 -2
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.d.ts +9 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/assets/tx.js +19 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts +14 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.d.ts +116 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/params.js +98 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.d.ts +80 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.js +168 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.d.ts +21 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/denomwrap/tx.rpc.msg.js +20 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.d.ts +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/lcd.js +4 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts +4 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.js +3 -2
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.d.ts +2 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.tx.js +4 -2
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts +0 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.d.ts +79 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/genesis.js +115 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.d.ts +116 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/params.js +98 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.d.ts +82 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.js +212 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.d.ts +11 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.lcd.js +30 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.d.ts +29 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/query.rpc.Query.js +33 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.d.ts +123 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.js +246 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.d.ts +36 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.d.ts.map +1 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/wrap/tx.rpc.msg.js +26 -0
- package/build/esm/src/clients/composite-client.d.ts +6 -1
- package/build/esm/src/clients/composite-client.d.ts.map +1 -1
- package/build/esm/src/clients/composite-client.js +7 -3
- package/build/esm/src/clients/constants.d.ts +13 -1
- package/build/esm/src/clients/constants.d.ts.map +1 -1
- package/build/esm/src/clients/constants.js +13 -1
- package/build/esm/src/clients/lib/accounts.d.ts +4 -3
- package/build/esm/src/clients/lib/accounts.d.ts.map +1 -1
- package/build/esm/src/clients/lib/accounts.js +44 -5
- package/build/esm/src/clients/lib/agent-approval-tx.d.ts +46 -0
- package/build/esm/src/clients/lib/agent-approval-tx.d.ts.map +1 -0
- package/build/esm/src/clients/lib/agent-approval-tx.js +79 -0
- package/build/esm/src/clients/lib/agent-approval.d.ts +64 -0
- package/build/esm/src/clients/lib/agent-approval.d.ts.map +1 -0
- package/build/esm/src/clients/lib/agent-approval.js +112 -0
- package/build/esm/src/clients/lib/eip712.d.ts +95 -0
- package/build/esm/src/clients/lib/eip712.d.ts.map +1 -0
- package/build/esm/src/clients/lib/eip712.js +581 -0
- package/build/esm/src/clients/lib/eth-pubkey.d.ts +44 -0
- package/build/esm/src/clients/lib/eth-pubkey.d.ts.map +1 -0
- package/build/esm/src/clients/lib/eth-pubkey.js +61 -0
- package/build/esm/src/clients/modules/composer.d.ts +12 -1
- package/build/esm/src/clients/modules/composer.d.ts.map +1 -1
- package/build/esm/src/clients/modules/composer.js +15 -2
- package/build/esm/src/clients/modules/eip712-signer.d.ts +99 -0
- package/build/esm/src/clients/modules/eip712-signer.d.ts.map +1 -0
- package/build/esm/src/clients/modules/eip712-signer.js +183 -0
- package/build/esm/src/clients/modules/eth-agent-wallet.d.ts +39 -0
- package/build/esm/src/clients/modules/eth-agent-wallet.d.ts.map +1 -0
- package/build/esm/src/clients/modules/eth-agent-wallet.js +97 -0
- package/build/esm/src/clients/modules/eth-wallet.d.ts +32 -0
- package/build/esm/src/clients/modules/eth-wallet.d.ts.map +1 -0
- package/build/esm/src/clients/modules/eth-wallet.js +83 -0
- package/build/esm/src/clients/modules/local-wallet.d.ts +2 -1
- package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -1
- package/build/esm/src/clients/modules/local-wallet.js +9 -2
- package/build/esm/src/clients/modules/post.d.ts +1 -1
- package/build/esm/src/clients/modules/post.d.ts.map +1 -1
- package/build/esm/src/clients/modules/post.js +14 -4
- package/build/esm/src/clients/modules/signer.d.ts +2 -1
- package/build/esm/src/clients/modules/signer.d.ts.map +1 -1
- package/build/esm/src/clients/modules/signer.js +7 -2
- package/build/esm/src/index.d.ts +13 -0
- package/build/esm/src/index.d.ts.map +1 -1
- package/build/esm/src/index.js +9 -1
- package/build/esm/src/lib/evm-address.d.ts +31 -0
- package/build/esm/src/lib/evm-address.d.ts.map +1 -0
- package/build/esm/src/lib/evm-address.js +85 -0
- package/build/esm/src/lib/trading-key-utils.d.ts +3 -0
- package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -1
- package/build/esm/src/lib/trading-key-utils.js +42 -4
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/clients/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mEAAmE,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,cAAc,kBAAkB,CAAC;AAEjC;;;GAGG;AAGH,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAGjD,oBAAY,cAAc;IACxB,OAAO,yCAAyC;IAChD,OAAO,yCAAyC;IAChD,KAAK,gCAAgC;IACrC,OAAO,gCAAgC;CACxC;AAED,oBAAY,aAAa;IACvB,OAAO,4CAA4C;IACnD,OAAO,4CAA4C;IACnD,KAAK,8BAA8B;IACnC,OAAO,oCAAoC;CAC5C;AAED,oBAAY,aAAa;IACvB,OAAO,uCAAuC;CAC/C;AAED,oBAAY,gBAAgB;IAC1B,OAAO,oCAAoC;IAC3C,OAAO,oCAAoC;IAC3C,KAAK,iCAAiC;IACtC,OAAO,4BAA4B;CACpC;AAID,oBAAY,SAAS;IACnB,OAAO,mBAAmB;IAC1B,OAAO,mBAAmB;CAC3B;AACD,eAAO,MAAM,kBAAkB,EAAE,MAAyB,CAAC;AAC3D,eAAO,MAAM,kBAAkB,EAAE,MAAyB,CAAC;AAG3D,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAKD,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAGhE,eAAO,MAAM,4BAA4B,qCAAqC,CAAC;AAG/E,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAC9E,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAG9E,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAG7E,eAAO,MAAM,yCAAyC,kDACL,CAAC;AAGlD,eAAO,MAAM,6BAA6B,0CAA0C,CAAC;AAGrF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAGxF,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAChF,eAAO,MAAM,qCAAqC,8CACL,CAAC;AAC9C,eAAO,MAAM,kCAAkC,2CAA2C,CAAC;AAG3F,eAAO,MAAM,+BAA+B,4CAA4C,CAAC;AAGzF,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AACvF,eAAO,MAAM,oCAAoC,2CAA2C,CAAC;AAG7F,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAC3E,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAG/E,eAAO,MAAM,sCAAsC,4DACQ,CAAC;AAG5D,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;
|
|
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
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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;
|
|
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:
|
|
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
|
|
19
|
-
*
|
|
20
|
-
*
|
|
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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtYXBwcm92YWwtdHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50cy9saWIvYWdlbnQtYXBwcm92YWwtdHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakYsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHNCQUFzQixHQUN2QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUE2QjlELDZFQUE2RTtBQUM3RSxNQUFNLG9CQUFvQixHQUFHLE1BQU8sQ0FBQztBQUVyQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUErQjtJQUNyRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsaUJBQWlCLEVBQUUsd0JBQXdCO1lBQzNDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN0RCxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7U0FD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
|
|
@@ -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"}
|