ox 0.14.15 → 0.14.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ox
2
2
 
3
+ ## 0.14.16
4
+
5
+ ### Patch Changes
6
+
7
+ - [`3ca1d56`](https://github.com/wevm/ox/commit/3ca1d56ac70a883fad5100e3d4da8208b84f5a20) Thanks [@jxom](https://github.com/jxom)! - Added `TransactionRequest.fromRpc` to `ox/tempo`.
8
+
3
9
  ## 0.14.15
4
10
 
5
11
  ### Patch Changes
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromRpc = fromRpc;
3
4
  exports.toRpc = toRpc;
4
5
  const Hex = require("../core/Hex.js");
5
6
  const ox_TransactionRequest = require("../core/TransactionRequest.js");
@@ -8,6 +9,36 @@ const KeyAuthorization = require("./KeyAuthorization.js");
8
9
  const TempoAddress = require("./TempoAddress.js");
9
10
  const TokenId = require("./TokenId.js");
10
11
  const Transaction = require("./Transaction.js");
12
+ function fromRpc(request) {
13
+ const { authorizationList: _, ...rest } = request;
14
+ const request_ = ox_TransactionRequest.fromRpc(rest);
15
+ if (typeof request.type !== 'undefined')
16
+ request_.type =
17
+ Transaction.fromRpcType[request.type] || request_.type;
18
+ if (request.authorizationList)
19
+ request_.authorizationList = AuthorizationTempo.fromRpcList(request.authorizationList);
20
+ if (request.calls)
21
+ request_.calls = request.calls.map((call) => {
22
+ const mapped = {
23
+ to: call.to,
24
+ data: call.data,
25
+ };
26
+ if (call.value && call.value !== '0x')
27
+ mapped.value = Hex.toBigInt(call.value);
28
+ return mapped;
29
+ });
30
+ if (typeof request.feeToken !== 'undefined')
31
+ request_.feeToken = TokenId.fromAddress(request.feeToken);
32
+ if (request.keyAuthorization)
33
+ request_.keyAuthorization = KeyAuthorization.fromRpc(request.keyAuthorization);
34
+ if (typeof request.validBefore !== 'undefined')
35
+ request_.validBefore = Hex.toNumber(request.validBefore);
36
+ if (typeof request.validAfter !== 'undefined')
37
+ request_.validAfter = Hex.toNumber(request.validAfter);
38
+ if (typeof request.nonceKey !== 'undefined')
39
+ request_.nonceKey = Hex.toBigInt(request.nonceKey);
40
+ return request_;
41
+ }
11
42
  function toRpc(request) {
12
43
  const request_rpc = ox_TransactionRequest.toRpc({
13
44
  ...request,
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":";;AAuGA,sBAoDC;AA1JD,sCAAqC;AAErC,uEAAsE;AACtE,8DAA6D;AAC7D,0DAAyD;AACzD,kDAAiD;AACjD,wCAAuC;AACvC,gDAA+C;AA+F/C,SAAgB,KAAK,CAAC,OAA2B;IAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC9C,GAAG,OAAO;QACV,iBAAiB,EAAE,SAAS;KAC7B,CAAQ,CAAA;IAET,IAAI,OAAO,CAAC,iBAAiB;QAC3B,WAAW,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,CAC1D,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;SACxB,CAAC,CAAC,CAAA;IACL,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5D,IAAI,OAAO,CAAC,gBAAgB;QAC1B,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CACnD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/D,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACtC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,QAAQ;QAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE7C,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,WAAW;QACpC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,gBAAgB,KAAK,WAAW;QAC/C,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC1C,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QACzC,OAAO,CAAC,IAAI,KAAK,OAAO,EACxB,CAAC;QACD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAA;QAC9C,OAAO,WAAW,CAAC,IAAI,CAAA;QACvB,OAAO,WAAW,CAAC,KAAK,CAAA;QACxB,OAAO,WAAW,CAAC,EAAE,CAAA;QACrB,OAAO,WAAW,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":";;AA0EA,0BA0CC;AA2DD,sBAoDC;AAlOD,sCAAqC;AAErC,uEAAsE;AACtE,8DAA6D;AAC7D,0DAAyD;AACzD,kDAAiD;AACjD,wCAAuC;AACvC,gDAA+C;AAkE/C,SAAgB,OAAO,CAAC,OAAY;IAClC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAC5C,IAAW,CACU,CAAA;IAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW;QACrC,QAAQ,CAAC,IAAI;YACX,WAAW,CAAC,WAAW,CACrB,OAAO,CAAC,IAA4C,CACrD,IAAI,QAAQ,CAAC,IAAI,CAAA;IAEtB,IAAI,OAAO,CAAC,iBAAiB;QAC3B,QAAQ,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CACzD,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAuC;gBACjD,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAA;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;gBACnC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CACrC,OAAO,CAAC,QAAgC,CACzC,CAAA;IACH,IAAI,OAAO,CAAC,gBAAgB;QAC1B,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAClD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAsB,CAAC,CAAA;IACrE,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAqB,CAAC,CAAA;IACnE,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAmB,CAAC,CAAA;IAE/D,OAAO,QAAQ,CAAA;AACjB,CAAC;AA2DD,SAAgB,KAAK,CAAC,OAA2B;IAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC9C,GAAG,OAAO;QACV,iBAAiB,EAAE,SAAS;KAC7B,CAAQ,CAAA;IAET,IAAI,OAAO,CAAC,iBAAiB;QAC3B,WAAW,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,CAC1D,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;SACxB,CAAC,CAAC,CAAA;IACL,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5D,IAAI,OAAO,CAAC,gBAAgB;QAC1B,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CACnD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/D,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACtC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,QAAQ;QAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE7C,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,WAAW;QACpC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,gBAAgB,KAAK,WAAW;QAC/C,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC1C,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QACzC,OAAO,CAAC,IAAI,KAAK,OAAO,EACxB,CAAC;QACD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAA;QAC9C,OAAO,WAAW,CAAC,IAAI,CAAA;QACvB,OAAO,WAAW,CAAC,KAAK,CAAA;QACxB,OAAO,WAAW,CAAC,EAAE,CAAA;QACrB,OAAO,WAAW,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/_cjs/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '0.14.15';
4
+ exports.version = '0.14.16';
5
5
  //# sourceMappingURL=version.js.map
@@ -5,6 +5,56 @@ import * as KeyAuthorization from './KeyAuthorization.js';
5
5
  import * as TempoAddress from './TempoAddress.js';
6
6
  import * as TokenId from './TokenId.js';
7
7
  import * as Transaction from './Transaction.js';
8
+ /**
9
+ * Converts a {@link ox#TransactionRequest.Rpc} to a {@link ox#TransactionRequest.TransactionRequest}.
10
+ *
11
+ * @example
12
+ * ```ts twoslash
13
+ * import { TransactionRequest } from 'ox/tempo'
14
+ *
15
+ * const request = TransactionRequest.fromRpc({
16
+ * calls: [{
17
+ * data: '0xdeadbeef',
18
+ * to: '0xcafebabecafebabecafebabecafebabecafebabe',
19
+ * }],
20
+ * feeToken: '0x20c0000000000000000000000000000000000000',
21
+ * type: '0x76',
22
+ * })
23
+ * ```
24
+ *
25
+ * @param request - The RPC request to convert.
26
+ * @returns A transaction request.
27
+ */
28
+ export function fromRpc(request) {
29
+ const { authorizationList: _, ...rest } = request;
30
+ const request_ = ox_TransactionRequest.fromRpc(rest);
31
+ if (typeof request.type !== 'undefined')
32
+ request_.type =
33
+ Transaction.fromRpcType[request.type] || request_.type;
34
+ if (request.authorizationList)
35
+ request_.authorizationList = AuthorizationTempo.fromRpcList(request.authorizationList);
36
+ if (request.calls)
37
+ request_.calls = request.calls.map((call) => {
38
+ const mapped = {
39
+ to: call.to,
40
+ data: call.data,
41
+ };
42
+ if (call.value && call.value !== '0x')
43
+ mapped.value = Hex.toBigInt(call.value);
44
+ return mapped;
45
+ });
46
+ if (typeof request.feeToken !== 'undefined')
47
+ request_.feeToken = TokenId.fromAddress(request.feeToken);
48
+ if (request.keyAuthorization)
49
+ request_.keyAuthorization = KeyAuthorization.fromRpc(request.keyAuthorization);
50
+ if (typeof request.validBefore !== 'undefined')
51
+ request_.validBefore = Hex.toNumber(request.validBefore);
52
+ if (typeof request.validAfter !== 'undefined')
53
+ request_.validAfter = Hex.toNumber(request.validAfter);
54
+ if (typeof request.nonceKey !== 'undefined')
55
+ request_.nonceKey = Hex.toBigInt(request.nonceKey);
56
+ return request_;
57
+ }
8
58
  /**
9
59
  * Converts a {@link ox#TransactionRequest.TransactionRequest} to a {@link ox#TransactionRequest.Rpc}.
10
60
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"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"}
package/_esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export const version = '0.14.15';
2
+ export const version = '0.14.16';
3
3
  //# sourceMappingURL=version.js.map
@@ -33,6 +33,30 @@ export type Rpc = Omit<TransactionRequest<Hex.Hex, Hex.Hex, string>, 'authorizat
33
33
  keyAuthorization?: KeyAuthorization.Rpc | undefined;
34
34
  nonceKey?: Hex.Hex | undefined;
35
35
  };
36
+ /**
37
+ * Converts a {@link ox#TransactionRequest.Rpc} to a {@link ox#TransactionRequest.TransactionRequest}.
38
+ *
39
+ * @example
40
+ * ```ts twoslash
41
+ * import { TransactionRequest } from 'ox/tempo'
42
+ *
43
+ * const request = TransactionRequest.fromRpc({
44
+ * calls: [{
45
+ * data: '0xdeadbeef',
46
+ * to: '0xcafebabecafebabecafebabecafebabecafebabe',
47
+ * }],
48
+ * feeToken: '0x20c0000000000000000000000000000000000000',
49
+ * type: '0x76',
50
+ * })
51
+ * ```
52
+ *
53
+ * @param request - The RPC request to convert.
54
+ * @returns A transaction request.
55
+ */
56
+ export declare function fromRpc(request: Rpc): TransactionRequest;
57
+ export declare namespace fromRpc {
58
+ type ErrorType = AuthorizationTempo.fromRpcList.ErrorType | Hex.toNumber.ErrorType | Hex.toBigInt.ErrorType | Errors.GlobalErrorType;
59
+ }
36
60
  /**
37
61
  * Converts a {@link ox#TransactionRequest.TransactionRequest} to a {@link ox#TransactionRequest.Rpc}.
38
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionRequest.d.ts","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEhD,KAAK,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,CAC5B,UAAU,GAAG,MAAM,EACnB,UAAU,GAAG,MAAM,EACnB,IAAI,SAAS,MAAM,GAAG,MAAM,IAC1B,OAAO,CACT,IAAI,CACF,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EACtE,mBAAmB,CACpB,GAAG;IACF,iBAAiB,CAAC,EACd,kBAAkB,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,GACrD,SAAS,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IACrE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IACtE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;IAC5C,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACpC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CACpC,CACF,CAAA;AAED,gFAAgF;AAChF,MAAM,MAAM,GAAG,GAAG,IAAI,CACpB,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAC5C,mBAAmB,GAAG,kBAAkB,CACzC,GAAG;IACF,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,GAAG,GAAG,SAAS,CAAA;IACnD,QAAQ,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,GAAG,CAoDtD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,SAAS,GACjB,kBAAkB,CAAC,SAAS,CAAC,SAAS,GACtC,GAAG,CAAC,UAAU,CAAC,SAAS,GACxB,MAAM,CAAC,eAAe,CAAA;CAC3B"}
1
+ {"version":3,"file":"TransactionRequest.d.ts","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEhD,KAAK,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,CAC5B,UAAU,GAAG,MAAM,EACnB,UAAU,GAAG,MAAM,EACnB,IAAI,SAAS,MAAM,GAAG,MAAM,IAC1B,OAAO,CACT,IAAI,CACF,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EACtE,mBAAmB,CACpB,GAAG;IACF,iBAAiB,CAAC,EACd,kBAAkB,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,GACrD,SAAS,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IACrE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IACtE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;IAC5C,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACpC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CACpC,CACF,CAAA;AAED,gFAAgF;AAChF,MAAM,MAAM,GAAG,GAAG,IAAI,CACpB,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAC5C,mBAAmB,GAAG,kBAAkB,CACzC,GAAG;IACF,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,GAAG,GAAG,SAAS,CAAA;IACnD,QAAQ,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,kBAAkB,CA0CxD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,SAAS,GACjB,kBAAkB,CAAC,WAAW,CAAC,SAAS,GACxC,GAAG,CAAC,QAAQ,CAAC,SAAS,GACtB,GAAG,CAAC,QAAQ,CAAC,SAAS,GACtB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,GAAG,CAoDtD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,SAAS,GACjB,kBAAkB,CAAC,SAAS,CAAC,SAAS,GACtC,GAAG,CAAC,UAAU,CAAC,SAAS,GACxB,MAAM,CAAC,eAAe,CAAA;CAC3B"}
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export declare const version = "0.14.15";
2
+ export declare const version = "0.14.16";
3
3
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ox",
3
3
  "description": "Ethereum Standard Library",
4
- "version": "0.14.15",
4
+ "version": "0.14.16",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
@@ -0,0 +1,174 @@
1
+ import { TransactionRequest } from 'ox/tempo'
2
+ import { describe, expect, test } from 'vitest'
3
+
4
+ describe('fromRpc', () => {
5
+ test('default', () => {
6
+ const request = TransactionRequest.fromRpc({
7
+ calls: [
8
+ {
9
+ data: '0xdeadbeef',
10
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
11
+ },
12
+ ],
13
+ feeToken: '0x20c0000000000000000000000000000000000000',
14
+ type: '0x76',
15
+ })
16
+ expect(request).toMatchInlineSnapshot(`
17
+ {
18
+ "calls": [
19
+ {
20
+ "data": "0xdeadbeef",
21
+ "to": "0xcafebabecafebabecafebabecafebabecafebabe",
22
+ },
23
+ ],
24
+ "feeToken": 0n,
25
+ "type": "tempo",
26
+ }
27
+ `)
28
+ })
29
+
30
+ test('behavior: calls with value', () => {
31
+ const request = TransactionRequest.fromRpc({
32
+ calls: [
33
+ {
34
+ data: '0xdeadbeef',
35
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
36
+ value: '0x2386f26fc10000',
37
+ },
38
+ ],
39
+ type: '0x76',
40
+ })
41
+ expect(request.calls).toMatchInlineSnapshot(`
42
+ [
43
+ {
44
+ "data": "0xdeadbeef",
45
+ "to": "0xcafebabecafebabecafebabecafebabecafebabe",
46
+ "value": 10000000000000000n,
47
+ },
48
+ ]
49
+ `)
50
+ })
51
+
52
+ test('behavior: validBefore + validAfter', () => {
53
+ const request = TransactionRequest.fromRpc({
54
+ calls: [],
55
+ validBefore: '0x64',
56
+ validAfter: '0x32',
57
+ type: '0x76',
58
+ })
59
+ expect(request.validBefore).toBe(100)
60
+ expect(request.validAfter).toBe(50)
61
+ })
62
+
63
+ test('behavior: nonceKey', () => {
64
+ const request = TransactionRequest.fromRpc({
65
+ calls: [],
66
+ nonceKey: '0xff',
67
+ type: '0x76',
68
+ })
69
+ expect(request.nonceKey).toBe(255n)
70
+ })
71
+
72
+ test('behavior: empty', () => {
73
+ const request = TransactionRequest.fromRpc({})
74
+ expect(request).toMatchInlineSnapshot('{}')
75
+ })
76
+ })
77
+
78
+ describe('toRpc', () => {
79
+ test('default', () => {
80
+ const request = TransactionRequest.toRpc({
81
+ calls: [
82
+ {
83
+ data: '0xdeadbeef',
84
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
85
+ },
86
+ ],
87
+ feeToken: '0x20c0000000000000000000000000000000000000',
88
+ })
89
+ expect(request).toMatchInlineSnapshot(`
90
+ {
91
+ "calls": [
92
+ {
93
+ "data": "0xdeadbeef",
94
+ "to": "0xcafebabecafebabecafebabecafebabecafebabe",
95
+ "value": "0x",
96
+ },
97
+ ],
98
+ "feeToken": "0x20c0000000000000000000000000000000000000",
99
+ "type": "0x76",
100
+ }
101
+ `)
102
+ })
103
+ })
104
+
105
+ describe('roundtrip', () => {
106
+ test('toRpc -> fromRpc', () => {
107
+ const original: TransactionRequest.TransactionRequest = {
108
+ calls: [
109
+ {
110
+ data: '0xdeadbeef',
111
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
112
+ value: 10000000000000000n,
113
+ },
114
+ {
115
+ data: '0x',
116
+ to: '0x1234567890123456789012345678901234567890',
117
+ },
118
+ ],
119
+ feeToken: '0x20c0000000000000000000000000000000000001',
120
+ validBefore: 100,
121
+ validAfter: 50,
122
+ nonceKey: 255n,
123
+ gas: 100000n,
124
+ maxFeePerGas: 1000000000n,
125
+ }
126
+
127
+ const rpc = TransactionRequest.toRpc(original)
128
+ const converted = TransactionRequest.fromRpc(rpc)
129
+
130
+ expect(converted.calls).toEqual(
131
+ original.calls!.map((call) => ({
132
+ to: call.to,
133
+ data: call.data ?? '0x',
134
+ value: call.value,
135
+ })),
136
+ )
137
+ expect(converted.feeToken).toEqual(1n)
138
+ expect(converted.validBefore).toBe(original.validBefore)
139
+ expect(converted.validAfter).toBe(original.validAfter)
140
+ expect(converted.nonceKey).toBe(original.nonceKey)
141
+ expect(converted.gas).toBe(original.gas)
142
+ expect(converted.maxFeePerGas).toBe(original.maxFeePerGas)
143
+ expect(converted.type).toBe('tempo')
144
+ })
145
+
146
+ test('fromRpc -> toRpc', () => {
147
+ const original: TransactionRequest.Rpc = {
148
+ calls: [
149
+ {
150
+ data: '0xdeadbeef',
151
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
152
+ value: '0x2386f26fc10000',
153
+ },
154
+ ],
155
+ feeToken: '0x20c0000000000000000000000000000000000000',
156
+ validBefore: '0x64',
157
+ validAfter: '0x32',
158
+ nonceKey: '0xff',
159
+ gas: '0x186a0',
160
+ type: '0x76',
161
+ }
162
+
163
+ const request = TransactionRequest.fromRpc(original)
164
+ const rpc = TransactionRequest.toRpc(request)
165
+
166
+ expect(rpc.calls).toEqual(original.calls)
167
+ expect(rpc.feeToken).toBe(original.feeToken)
168
+ expect(rpc.validBefore).toBe(original.validBefore)
169
+ expect(rpc.validAfter).toBe(original.validAfter)
170
+ expect(rpc.nonceKey).toBe(original.nonceKey)
171
+ expect(rpc.gas).toBe(original.gas)
172
+ expect(rpc.type).toBe('0x76')
173
+ })
174
+ })
@@ -52,6 +52,78 @@ export type Rpc = Omit<
52
52
  nonceKey?: Hex.Hex | undefined
53
53
  }
54
54
 
55
+ /**
56
+ * Converts a {@link ox#TransactionRequest.Rpc} to a {@link ox#TransactionRequest.TransactionRequest}.
57
+ *
58
+ * @example
59
+ * ```ts twoslash
60
+ * import { TransactionRequest } from 'ox/tempo'
61
+ *
62
+ * const request = TransactionRequest.fromRpc({
63
+ * calls: [{
64
+ * data: '0xdeadbeef',
65
+ * to: '0xcafebabecafebabecafebabecafebabecafebabe',
66
+ * }],
67
+ * feeToken: '0x20c0000000000000000000000000000000000000',
68
+ * type: '0x76',
69
+ * })
70
+ * ```
71
+ *
72
+ * @param request - The RPC request to convert.
73
+ * @returns A transaction request.
74
+ */
75
+ export function fromRpc(request: Rpc): TransactionRequest {
76
+ const { authorizationList: _, ...rest } = request
77
+ const request_ = ox_TransactionRequest.fromRpc(
78
+ rest as any,
79
+ ) as TransactionRequest
80
+
81
+ if (typeof request.type !== 'undefined')
82
+ request_.type =
83
+ Transaction.fromRpcType[
84
+ request.type as keyof typeof Transaction.fromRpcType
85
+ ] || request_.type
86
+
87
+ if (request.authorizationList)
88
+ request_.authorizationList = AuthorizationTempo.fromRpcList(
89
+ request.authorizationList,
90
+ )
91
+ if (request.calls)
92
+ request_.calls = request.calls.map((call) => {
93
+ const mapped: Call<bigint, TempoAddress.Address> = {
94
+ to: call.to,
95
+ data: call.data,
96
+ }
97
+ if (call.value && call.value !== '0x')
98
+ mapped.value = Hex.toBigInt(call.value)
99
+ return mapped
100
+ })
101
+ if (typeof request.feeToken !== 'undefined')
102
+ request_.feeToken = TokenId.fromAddress(
103
+ request.feeToken as TempoAddress.Address,
104
+ )
105
+ if (request.keyAuthorization)
106
+ request_.keyAuthorization = KeyAuthorization.fromRpc(
107
+ request.keyAuthorization,
108
+ )
109
+ if (typeof request.validBefore !== 'undefined')
110
+ request_.validBefore = Hex.toNumber(request.validBefore as Hex.Hex)
111
+ if (typeof request.validAfter !== 'undefined')
112
+ request_.validAfter = Hex.toNumber(request.validAfter as Hex.Hex)
113
+ if (typeof request.nonceKey !== 'undefined')
114
+ request_.nonceKey = Hex.toBigInt(request.nonceKey as Hex.Hex)
115
+
116
+ return request_
117
+ }
118
+
119
+ export declare namespace fromRpc {
120
+ export type ErrorType =
121
+ | AuthorizationTempo.fromRpcList.ErrorType
122
+ | Hex.toNumber.ErrorType
123
+ | Hex.toBigInt.ErrorType
124
+ | Errors.GlobalErrorType
125
+ }
126
+
55
127
  /**
56
128
  * Converts a {@link ox#TransactionRequest.TransactionRequest} to a {@link ox#TransactionRequest.Rpc}.
57
129
  *
package/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** @internal */
2
- export const version = '0.14.15'
2
+ export const version = '0.14.16'