ox 0.14.7 → 0.14.9
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 +12 -0
- package/_cjs/erc8021/Attribution.js +74 -2
- package/_cjs/erc8021/Attribution.js.map +1 -1
- package/_cjs/erc8021/index.js.map +1 -1
- package/_cjs/tempo/KeyAuthorization.js +2 -2
- package/_cjs/tempo/KeyAuthorization.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/erc8021/Attribution.js +118 -9
- package/_esm/erc8021/Attribution.js.map +1 -1
- package/_esm/erc8021/index.js +5 -0
- package/_esm/erc8021/index.js.map +1 -1
- package/_esm/tempo/KeyAuthorization.js +2 -2
- package/_esm/tempo/KeyAuthorization.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/erc8021/Attribution.d.ts +70 -8
- package/_types/erc8021/Attribution.d.ts.map +1 -1
- package/_types/erc8021/index.d.ts +5 -0
- package/_types/erc8021/index.d.ts.map +1 -1
- package/_types/tempo/KeyAuthorization.d.ts +1 -1
- package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/erc8021/Attribution.ts +190 -11
- package/erc8021/index.ts +5 -0
- package/package.json +1 -1
- package/tempo/KeyAuthorization.test.ts +41 -0
- package/tempo/KeyAuthorization.ts +3 -3
- package/tempo/e2e.test.ts +1 -1
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.14.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#201](https://github.com/wevm/ox/pull/201) [`ea94ea6`](https://github.com/wevm/ox/commit/ea94ea627eec365de22ade3126dc39b824cc53f9) Thanks [@decofe](https://github.com/decofe)! - Fixed `KeyAuthorization.fromRpc` to preserve `undefined` expiry instead of defaulting to `0`.
|
|
8
|
+
|
|
9
|
+
## 0.14.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`0d0575e`](https://github.com/wevm/ox/commit/0d0575e36503403ce245eaaaf29aac106bad508a) Thanks [@jxom](https://github.com/jxom)! - Added ERC-8021 Schema 2 (CBOR-encoded) attribution support to the `Attribution` module.
|
|
14
|
+
|
|
3
15
|
## 0.14.7
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -4,19 +4,26 @@ exports.ercSuffixSize = exports.ercSuffix = void 0;
|
|
|
4
4
|
exports.getSchemaId = getSchemaId;
|
|
5
5
|
exports.toDataSuffix = toDataSuffix;
|
|
6
6
|
exports.fromData = fromData;
|
|
7
|
+
const Cbor = require("../core/Cbor.js");
|
|
7
8
|
const Hex = require("../core/Hex.js");
|
|
8
9
|
exports.ercSuffix = '0x80218021802180218021802180218021';
|
|
9
10
|
exports.ercSuffixSize = Hex.size(exports.ercSuffix);
|
|
10
11
|
function getSchemaId(attribution) {
|
|
12
|
+
if ('appCode' in attribution || 'walletCode' in attribution)
|
|
13
|
+
return 2;
|
|
11
14
|
if ('codeRegistry' in attribution)
|
|
12
15
|
return 1;
|
|
13
16
|
return 0;
|
|
14
17
|
}
|
|
15
18
|
function toDataSuffix(attribution) {
|
|
16
|
-
const
|
|
19
|
+
const schemaId = getSchemaId(attribution);
|
|
20
|
+
if (schemaId === 2) {
|
|
21
|
+
const schema2 = attribution;
|
|
22
|
+
return schema2ToDataSuffix(schema2);
|
|
23
|
+
}
|
|
24
|
+
const codesHex = Hex.fromString((attribution.codes ?? []).join(','));
|
|
17
25
|
const codesLength = Hex.size(codesHex);
|
|
18
26
|
const codesLengthHex = Hex.fromNumber(codesLength, { size: 1 });
|
|
19
|
-
const schemaId = getSchemaId(attribution);
|
|
20
27
|
const schemaIdHex = Hex.fromNumber(schemaId, { size: 1 });
|
|
21
28
|
if (schemaId === 1) {
|
|
22
29
|
const schema1 = attribution;
|
|
@@ -60,6 +67,9 @@ function fromData(data) {
|
|
|
60
67
|
id: 1,
|
|
61
68
|
};
|
|
62
69
|
}
|
|
70
|
+
if (schemaId === 2) {
|
|
71
|
+
return schema2FromData(data);
|
|
72
|
+
}
|
|
63
73
|
return undefined;
|
|
64
74
|
}
|
|
65
75
|
function registryFromData(data) {
|
|
@@ -89,4 +99,66 @@ function registryToData(registry) {
|
|
|
89
99
|
const paddedChainId = Hex.padLeft(chainIdAsHex, chainIdLen);
|
|
90
100
|
return Hex.concat(registry.address, paddedChainId, Hex.fromNumber(chainIdLen, { size: 1 }));
|
|
91
101
|
}
|
|
102
|
+
function schema2ToDataSuffix(attribution) {
|
|
103
|
+
const cborMap = {};
|
|
104
|
+
if (attribution.appCode)
|
|
105
|
+
cborMap.a = attribution.appCode;
|
|
106
|
+
if (attribution.walletCode)
|
|
107
|
+
cborMap.w = attribution.walletCode;
|
|
108
|
+
if (attribution.registries) {
|
|
109
|
+
const r = {};
|
|
110
|
+
if (attribution.registries.app) {
|
|
111
|
+
r.a = {
|
|
112
|
+
c: Hex.fromNumber(attribution.registries.app.chainId),
|
|
113
|
+
a: attribution.registries.app.address,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (attribution.registries.wallet) {
|
|
117
|
+
r.w = {
|
|
118
|
+
c: Hex.fromNumber(attribution.registries.wallet.chainId),
|
|
119
|
+
a: attribution.registries.wallet.address,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (r.a || r.w)
|
|
123
|
+
cborMap.r = r;
|
|
124
|
+
}
|
|
125
|
+
if (attribution.metadata && Object.keys(attribution.metadata).length > 0)
|
|
126
|
+
cborMap.m = attribution.metadata;
|
|
127
|
+
const cborHex = Cbor.encode(cborMap);
|
|
128
|
+
const cborBytes = Hex.size(cborHex);
|
|
129
|
+
return Hex.concat(cborHex, Hex.fromNumber(cborBytes, { size: 2 }), Hex.fromNumber(2, { size: 1 }), exports.ercSuffix);
|
|
130
|
+
}
|
|
131
|
+
function schema2FromData(data) {
|
|
132
|
+
const cborLengthHex = Hex.slice(data, -exports.ercSuffixSize - 1 - 2, -exports.ercSuffixSize - 1);
|
|
133
|
+
const cborLength = Hex.toNumber(cborLengthHex);
|
|
134
|
+
const cborStart = -exports.ercSuffixSize - 1 - 2 - cborLength;
|
|
135
|
+
const cborEnd = -exports.ercSuffixSize - 1 - 2;
|
|
136
|
+
const cborHex = Hex.slice(data, cborStart, cborEnd);
|
|
137
|
+
const decoded = Cbor.decode(cborHex);
|
|
138
|
+
const result = { id: 2 };
|
|
139
|
+
if (typeof decoded.a === 'string')
|
|
140
|
+
result.appCode = decoded.a;
|
|
141
|
+
if (typeof decoded.w === 'string')
|
|
142
|
+
result.walletCode = decoded.w;
|
|
143
|
+
if (decoded.r) {
|
|
144
|
+
const registries = {};
|
|
145
|
+
if (decoded.r.a?.c && decoded.r.a?.a) {
|
|
146
|
+
registries.app = {
|
|
147
|
+
address: decoded.r.a.a,
|
|
148
|
+
chainId: Hex.toNumber(decoded.r.a.c),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (decoded.r.w?.c && decoded.r.w?.a) {
|
|
152
|
+
registries.wallet = {
|
|
153
|
+
address: decoded.r.w.a,
|
|
154
|
+
chainId: Hex.toNumber(decoded.r.w.c),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (registries.app || registries.wallet)
|
|
158
|
+
result.registries = registries;
|
|
159
|
+
}
|
|
160
|
+
if (decoded.m && typeof decoded.m === 'object')
|
|
161
|
+
result.metadata = decoded.m;
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
92
164
|
//# sourceMappingURL=Attribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attribution.js","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Attribution.js","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":";;;AA0CA,kDAA+C"}
|
|
@@ -38,12 +38,12 @@ function from(authorization, options = {}) {
|
|
|
38
38
|
return resolved;
|
|
39
39
|
}
|
|
40
40
|
function fromRpc(authorization) {
|
|
41
|
-
const { chainId, keyId, expiry
|
|
41
|
+
const { chainId, keyId, expiry, limits, keyType } = authorization;
|
|
42
42
|
const signature = SignatureEnvelope.fromRpc(authorization.signature);
|
|
43
43
|
return {
|
|
44
44
|
address: keyId,
|
|
45
45
|
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
46
|
-
expiry: Number(expiry),
|
|
46
|
+
...(expiry != null ? { expiry: Number(expiry) } : {}),
|
|
47
47
|
limits: limits?.map((limit) => ({
|
|
48
48
|
token: limit.token,
|
|
49
49
|
limit: BigInt(limit.limit),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":";;AAoQA,oBA6BC;AAwDD,0BAcC;AA6CD,8BAoCC;AA4CD,wCAEC;AAgCD,kCAGC;AAkCD,oBAIC;AAoCD,8BAGC;AAwCD,sBAcC;AAqCD,0BAkCC;AAjtBD,wCAAuC;AACvC,sCAAqC;AAErC,sCAAqC;AACrC,4DAA2D;AAC3D,kDAAiD;AA6PjD,SAAgB,IAAI,CAIlB,aAA+C,EAC/C,UAAmC,EAAE;IAErC,IAAI,OAAO,IAAI,aAAa;QAAE,OAAO,OAAO,CAAC,aAAoB,CAAU,CAAA;IAC3E,MAAM,IAAI,GAAG,aAEZ,CAAA;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI;QACP,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAA+B,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,CAAC;oBACJ,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAA6B,CAAC;iBAC7D,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IACD,IAAI,OAAO,CAAC,SAAS;QACnB,OAAO;YACL,GAAG,QAAQ;YACX,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAA;IACZ,OAAO,QAAiB,CAAA;AAC1B,CAAC;AAwDD,SAAgB,OAAO,CAAC,aAAkB;IACxC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
package/_cjs/version.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Cbor from '../core/Cbor.js';
|
|
1
2
|
import * as Hex from '../core/Hex.js';
|
|
2
3
|
/**
|
|
3
4
|
* ERC-8021 suffix identifier.
|
|
@@ -27,12 +28,19 @@ export const ercSuffixSize = /*#__PURE__*/ Hex.size(ercSuffix);
|
|
|
27
28
|
* }
|
|
28
29
|
* })
|
|
29
30
|
* // @log: 1
|
|
31
|
+
*
|
|
32
|
+
* const schemaId3 = Attribution.getSchemaId({
|
|
33
|
+
* appCode: 'baseapp',
|
|
34
|
+
* })
|
|
35
|
+
* // @log: 2
|
|
30
36
|
* ```
|
|
31
37
|
*
|
|
32
38
|
* @param attribution - The attribution object.
|
|
33
|
-
* @returns The schema ID (0 for canonical registry, 1 for custom registry).
|
|
39
|
+
* @returns The schema ID (0 for canonical registry, 1 for custom registry, 2 for CBOR-encoded).
|
|
34
40
|
*/
|
|
35
41
|
export function getSchemaId(attribution) {
|
|
42
|
+
if ('appCode' in attribution || 'walletCode' in attribution)
|
|
43
|
+
return 2;
|
|
36
44
|
if ('codeRegistry' in attribution)
|
|
37
45
|
return 1;
|
|
38
46
|
return 0;
|
|
@@ -67,23 +75,40 @@ export function getSchemaId(attribution) {
|
|
|
67
75
|
* })
|
|
68
76
|
* ```
|
|
69
77
|
*
|
|
78
|
+
* @example
|
|
79
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
80
|
+
*
|
|
81
|
+
* ```ts twoslash
|
|
82
|
+
* import { Attribution } from 'ox/erc8021'
|
|
83
|
+
*
|
|
84
|
+
* const suffix = Attribution.toDataSuffix({
|
|
85
|
+
* appCode: 'baseapp',
|
|
86
|
+
* walletCode: 'privy',
|
|
87
|
+
* metadata: { source: 'webapp' },
|
|
88
|
+
* })
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
70
91
|
* @param attribution - The attribution to convert.
|
|
71
92
|
* @returns The data suffix as a {@link ox#Hex.Hex} value.
|
|
72
93
|
*/
|
|
73
94
|
export function toDataSuffix(attribution) {
|
|
95
|
+
// Determine schema ID
|
|
96
|
+
const schemaId = getSchemaId(attribution);
|
|
97
|
+
// Schema 2: CBOR-encoded
|
|
98
|
+
if (schemaId === 2) {
|
|
99
|
+
const schema2 = attribution;
|
|
100
|
+
return schema2ToDataSuffix(schema2);
|
|
101
|
+
}
|
|
74
102
|
// Encode the codes as ASCII strings separated by commas
|
|
75
|
-
const codesHex = Hex.fromString(attribution.codes.join(','));
|
|
103
|
+
const codesHex = Hex.fromString((attribution.codes ?? []).join(','));
|
|
76
104
|
// Get the byte length of the encoded codes
|
|
77
105
|
const codesLength = Hex.size(codesHex);
|
|
78
106
|
// Encode the codes length as 1 byte
|
|
79
107
|
const codesLengthHex = Hex.fromNumber(codesLength, { size: 1 });
|
|
80
|
-
// Determine schema ID
|
|
81
|
-
const schemaId = getSchemaId(attribution);
|
|
82
108
|
const schemaIdHex = Hex.fromNumber(schemaId, { size: 1 });
|
|
83
|
-
//
|
|
109
|
+
// Schema 1: codeRegistryAddress (20 bytes) ∥ chainId ∥ chainIdLength (1 byte) ∥ codes ∥ codesLength (1 byte) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
84
110
|
if (schemaId === 1) {
|
|
85
111
|
const schema1 = attribution;
|
|
86
|
-
// Schema 1: codeRegistryAddress (20 bytes) ∥ chainId ∥ chainIdLength (1 byte) ∥ codes ∥ codesLength (1 byte) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
87
112
|
return Hex.concat(registryToData(schema1.codeRegistry), codesHex, codesLengthHex, schemaIdHex, ercSuffix);
|
|
88
113
|
}
|
|
89
114
|
// Schema 0: codes ∥ codesLength ∥ schemaId ∥ ercSuffix
|
|
@@ -115,14 +140,26 @@ export function toDataSuffix(attribution) {
|
|
|
115
140
|
* )
|
|
116
141
|
* // @log: {
|
|
117
142
|
* // @log: codes: ['baseapp', 'morpho'],
|
|
118
|
-
* // @log:
|
|
119
|
-
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc
|
|
143
|
+
* // @log: codeRegistry: {
|
|
144
|
+
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc',
|
|
120
145
|
* // @log: chainId: 8453,
|
|
121
|
-
* // @log: }
|
|
146
|
+
* // @log: },
|
|
122
147
|
* // @log: id: 1
|
|
123
148
|
* // @log: }
|
|
124
149
|
* ```
|
|
125
150
|
*
|
|
151
|
+
* @example
|
|
152
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
153
|
+
*
|
|
154
|
+
* ```ts twoslash
|
|
155
|
+
* import { Attribution } from 'ox/erc8021'
|
|
156
|
+
*
|
|
157
|
+
* const attribution = Attribution.fromData(
|
|
158
|
+
* '0xdddddddda161616762617365617070000b0280218021802180218021802180218021'
|
|
159
|
+
* )
|
|
160
|
+
* // @log: { appCode: 'baseapp', id: 2 }
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
126
163
|
* @param data - The transaction calldata containing the attribution suffix.
|
|
127
164
|
* @returns The extracted attribution, or undefined if no valid attribution is found.
|
|
128
165
|
*/
|
|
@@ -173,6 +210,10 @@ export function fromData(data) {
|
|
|
173
210
|
id: 1,
|
|
174
211
|
};
|
|
175
212
|
}
|
|
213
|
+
// Schema 2: CBOR-encoded
|
|
214
|
+
if (schemaId === 2) {
|
|
215
|
+
return schema2FromData(data);
|
|
216
|
+
}
|
|
176
217
|
// Unknown schema ID
|
|
177
218
|
return undefined;
|
|
178
219
|
}
|
|
@@ -209,4 +250,72 @@ function registryToData(registry) {
|
|
|
209
250
|
const paddedChainId = Hex.padLeft(chainIdAsHex, chainIdLen);
|
|
210
251
|
return Hex.concat(registry.address, paddedChainId, Hex.fromNumber(chainIdLen, { size: 1 }));
|
|
211
252
|
}
|
|
253
|
+
function schema2ToDataSuffix(attribution) {
|
|
254
|
+
// Build the CBOR map using single-letter keys per the spec
|
|
255
|
+
const cborMap = {};
|
|
256
|
+
if (attribution.appCode)
|
|
257
|
+
cborMap.a = attribution.appCode;
|
|
258
|
+
if (attribution.walletCode)
|
|
259
|
+
cborMap.w = attribution.walletCode;
|
|
260
|
+
if (attribution.registries) {
|
|
261
|
+
const r = {};
|
|
262
|
+
if (attribution.registries.app) {
|
|
263
|
+
r.a = {
|
|
264
|
+
c: Hex.fromNumber(attribution.registries.app.chainId),
|
|
265
|
+
a: attribution.registries.app.address,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
if (attribution.registries.wallet) {
|
|
269
|
+
r.w = {
|
|
270
|
+
c: Hex.fromNumber(attribution.registries.wallet.chainId),
|
|
271
|
+
a: attribution.registries.wallet.address,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
if (r.a || r.w)
|
|
275
|
+
cborMap.r = r;
|
|
276
|
+
}
|
|
277
|
+
if (attribution.metadata && Object.keys(attribution.metadata).length > 0)
|
|
278
|
+
cborMap.m = attribution.metadata;
|
|
279
|
+
// Encode to CBOR
|
|
280
|
+
const cborHex = Cbor.encode(cborMap);
|
|
281
|
+
const cborBytes = Hex.size(cborHex);
|
|
282
|
+
// cborData ∥ cborLength (2 bytes) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
283
|
+
return Hex.concat(cborHex, Hex.fromNumber(cborBytes, { size: 2 }), Hex.fromNumber(2, { size: 1 }), ercSuffix);
|
|
284
|
+
}
|
|
285
|
+
function schema2FromData(data) {
|
|
286
|
+
// cborLength is 2 bytes before schema ID
|
|
287
|
+
const cborLengthHex = Hex.slice(data, -ercSuffixSize - 1 - 2, -ercSuffixSize - 1);
|
|
288
|
+
const cborLength = Hex.toNumber(cborLengthHex);
|
|
289
|
+
// Extract CBOR data
|
|
290
|
+
const cborStart = -ercSuffixSize - 1 - 2 - cborLength;
|
|
291
|
+
const cborEnd = -ercSuffixSize - 1 - 2;
|
|
292
|
+
const cborHex = Hex.slice(data, cborStart, cborEnd);
|
|
293
|
+
// Decode CBOR
|
|
294
|
+
const decoded = Cbor.decode(cborHex);
|
|
295
|
+
const result = { id: 2 };
|
|
296
|
+
if (typeof decoded.a === 'string')
|
|
297
|
+
result.appCode = decoded.a;
|
|
298
|
+
if (typeof decoded.w === 'string')
|
|
299
|
+
result.walletCode = decoded.w;
|
|
300
|
+
if (decoded.r) {
|
|
301
|
+
const registries = {};
|
|
302
|
+
if (decoded.r.a?.c && decoded.r.a?.a) {
|
|
303
|
+
registries.app = {
|
|
304
|
+
address: decoded.r.a.a,
|
|
305
|
+
chainId: Hex.toNumber(decoded.r.a.c),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
if (decoded.r.w?.c && decoded.r.w?.a) {
|
|
309
|
+
registries.wallet = {
|
|
310
|
+
address: decoded.r.w.a,
|
|
311
|
+
chainId: Hex.toNumber(decoded.r.w.c),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
if (registries.app || registries.wallet)
|
|
315
|
+
result.registries = registries;
|
|
316
|
+
}
|
|
317
|
+
if (decoded.m && typeof decoded.m === 'object')
|
|
318
|
+
result.metadata = decoded.m;
|
|
319
|
+
return result;
|
|
320
|
+
}
|
|
212
321
|
//# sourceMappingURL=Attribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attribution.js","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Attribution.js","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAEvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AA4FrC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,oCAA6C,CAAA;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,WAAW,CAAC,WAAwB;IAClD,IAAI,SAAS,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW;QAAE,OAAO,CAAC,CAAA;IACrE,IAAI,cAAc,IAAI,WAAW;QAAE,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,CAAA;AACV,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,YAAY,CAAC,WAAwB;IACnD,sBAAsB;IACtB,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;IAEzC,yBAAyB;IACzB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,WAAmC,CAAA;QACnD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,wDAAwD;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAEpE,2CAA2C;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEtC,oCAAoC;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAE/D,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAEzD,6IAA6I;IAC7I,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,WAAmC,CAAA;QACnD,OAAO,GAAG,CAAC,MAAM,CACf,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EACpC,QAAQ,EACR,cAAc,EACd,WAAW,EACX,SAAS,CACV,CAAA;IACH,CAAC;IAED,uDAAuD;IACvD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AACrE,CAAC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,gGAAgG;IAChG,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9C,0CAA0C;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAA;IAC9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAE1C,mDAAmD;IACnD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAE1C,+BAA+B;IAC/B,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,iDAAiD;QACjD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAC9B,IAAI,EACJ,CAAC,aAAa,GAAG,CAAC,EAClB,CAAC,aAAa,GAAG,CAAC,CACnB,CAAA;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAEhD,gBAAgB;QAChB,MAAM,UAAU,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,WAAW,CAAA;QACnD,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAElE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;IACzB,CAAC;IAED,4BAA4B;IAC5B,2IAA2I;IAC3I,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,iDAAiD;QACjD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAC9B,IAAI,EACJ,CAAC,aAAa,GAAG,CAAC,EAClB,CAAC,aAAa,GAAG,CAAC,CACnB,CAAA;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAEhD,gBAAgB;QAChB,MAAM,UAAU,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,WAAW,CAAA;QACnD,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAElE,+DAA+D;QAC/D,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;QACrE,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAEhD,OAAO;YACL,KAAK;YACL,YAAY;YACZ,EAAE,EAAE,CAAC;SACN,CAAA;IACH,CAAC;IACD,yBAAyB;IACzB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,oBAAoB;IACpB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAa;IAEb,4DAA4D;IAC5D,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe;QAAE,OAAO,SAAS,CAAA;IAEtD,iEAAiE;IACjE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE9C,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEtC,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,EAAE,GAAG,UAAU,GAAG,CAAC,CAAA;IAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAiB;QAAE,OAAO,SAAS,CAAA;IAExD,gFAAgF;IAChF,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IAC5D,+EAA+E;IAC/E,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,YAAY,GAAiC;QACjD,OAAO,EAAE,UAA6B;QACtC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;KAClC,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,QAAsC;IAC5D,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACzC,uFAAuF;IACvF,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAC,MAAM,CACf,QAAQ,CAAC,OAAkB,EAC3B,aAAa,EACb,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CACxC,CAAA;AACH,CAAC;AAyBD,SAAS,mBAAmB,CAAC,WAAiC;IAC5D,2DAA2D;IAC3D,MAAM,OAAO,GAAmB,EAAE,CAAA;IAElC,IAAI,WAAW,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAA;IACxD,IAAI,WAAW,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAA;IAE9D,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAwB,EAAE,CAAA;QACjC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC,GAAG;gBACJ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrD,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO;aACtC,CAAA;QACH,CAAC;QACD,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC,CAAC,CAAC,GAAG;gBACJ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxD,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;aACzC,CAAA;QACH,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QACtE,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAA;IAElC,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEnC,kEAAkE;IAClE,OAAO,GAAG,CAAC,MAAM,CACf,OAAO,EACP,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACtC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAC9B,SAAS,CACV,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAa;IACpC,yCAAyC;IACzC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAC7B,IAAI,EACJ,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,EACtB,CAAC,aAAa,GAAG,CAAC,CACnB,CAAA;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE9C,oBAAoB;IACpB,MAAM,SAAS,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;IACrD,MAAM,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAEnD,cAAc;IACd,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAiB,OAAO,CAAC,CAAA;IAEpD,MAAM,MAAM,GAAyB,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;IAE9C,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;IAC7D,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAA;IAEhE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;QACd,MAAM,UAAU,GAAmC,EAAE,CAAA;QACrD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,GAAG;gBACf,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAoB;gBACzC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,CAAC;aAChD,CAAA;QACH,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,MAAM,GAAG;gBAClB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAoB;gBACzC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,CAAC;aAChD,CAAA;QACH,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM;YAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAA;IACzE,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAA;IAE3E,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/_esm/erc8021/index.js
CHANGED
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
* codes: ['baseapp', 'morpho'],
|
|
16
16
|
* codeRegistry: { address: '0x0000000000000000000000000000000000000000', chainId: 1 },
|
|
17
17
|
* })
|
|
18
|
+
*
|
|
19
|
+
* const dataSuffix3 = Attribution.toDataSuffix({
|
|
20
|
+
* appCode: 'baseapp',
|
|
21
|
+
* walletCode: 'privy',
|
|
22
|
+
* })
|
|
18
23
|
* ```
|
|
19
24
|
*
|
|
20
25
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
@@ -188,12 +188,12 @@ export function from(authorization, options = {}) {
|
|
|
188
188
|
* @returns A signed {@link ox#AuthorizationTempo.AuthorizationTempo}.
|
|
189
189
|
*/
|
|
190
190
|
export function fromRpc(authorization) {
|
|
191
|
-
const { chainId, keyId, expiry
|
|
191
|
+
const { chainId, keyId, expiry, limits, keyType } = authorization;
|
|
192
192
|
const signature = SignatureEnvelope.fromRpc(authorization.signature);
|
|
193
193
|
return {
|
|
194
194
|
address: keyId,
|
|
195
195
|
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
196
|
-
expiry: Number(expiry),
|
|
196
|
+
...(expiry != null ? { expiry: Number(expiry) } : {}),
|
|
197
197
|
limits: limits?.map((limit) => ({
|
|
198
198
|
token: limit.token,
|
|
199
199
|
limit: BigInt(limit.limit),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAqHjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuIG;AACH,MAAM,UAAU,IAAI,CAIlB,aAA+C,EAC/C,UAAmC,EAAE;IAErC,IAAI,OAAO,IAAI,aAAa;QAAE,OAAO,OAAO,CAAC,aAAoB,CAAU,CAAA;IAC3E,MAAM,IAAI,GAAG,aAEZ,CAAA;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI;QACP,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAA+B,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,CAAC;oBACJ,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAA6B,CAAC;iBAC7D,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IACD,IAAI,OAAO,CAAC,SAAS;QACnB,OAAO;YACL,GAAG,QAAQ;YACX,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAA;IACZ,OAAO,QAAiB,CAAA;AAC1B,CAAC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,aAAkB;IACxC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
package/_esm/version.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type * as Address from '../core/Address.js';
|
|
2
|
+
import * as Cbor from '../core/Cbor.js';
|
|
2
3
|
import type * as Errors from '../core/Errors.js';
|
|
3
4
|
import * as Hex from '../core/Hex.js';
|
|
4
5
|
import type { OneOf } from '../core/internal/types.js';
|
|
@@ -8,7 +9,7 @@ import type { OneOf } from '../core/internal/types.js';
|
|
|
8
9
|
* Represents attribution metadata that can be appended to transaction calldata
|
|
9
10
|
* to track entities involved in facilitating a transaction.
|
|
10
11
|
*/
|
|
11
|
-
export type Attribution = OneOf<AttributionSchemaId0 | AttributionSchemaId1>;
|
|
12
|
+
export type Attribution = OneOf<AttributionSchemaId0 | AttributionSchemaId1 | AttributionSchemaId2>;
|
|
12
13
|
/**
|
|
13
14
|
* Schema 0: Canonical Registry Attribution.
|
|
14
15
|
*
|
|
@@ -38,13 +39,44 @@ export type AttributionSchemaId1Registry = {
|
|
|
38
39
|
/** Chain Id of the chain the custom code registry contract is deployed on. */
|
|
39
40
|
chainId: number;
|
|
40
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Schema 2: CBOR-Encoded Attribution.
|
|
44
|
+
*
|
|
45
|
+
* Uses CBOR encoding for extensible transaction annotation with optional fields,
|
|
46
|
+
* support for arbitrary metadata, and coexistence with other suffix-based systems.
|
|
47
|
+
*/
|
|
48
|
+
export type AttributionSchemaId2 = {
|
|
49
|
+
/** Application attribution code. */
|
|
50
|
+
appCode?: string | undefined;
|
|
51
|
+
/** Wallet attribution code. */
|
|
52
|
+
walletCode?: string | undefined;
|
|
53
|
+
/** Custom code registries keyed by entity type. */
|
|
54
|
+
registries?: AttributionSchemaId2Registries | undefined;
|
|
55
|
+
/** Arbitrary metadata key-value pairs. */
|
|
56
|
+
metadata?: Record<string, unknown> | undefined;
|
|
57
|
+
/** Schema identifier (2 for CBOR-encoded). */
|
|
58
|
+
id?: 2 | undefined;
|
|
59
|
+
};
|
|
60
|
+
export type AttributionSchemaId2Registries = {
|
|
61
|
+
/** Custom registry for the application entity. */
|
|
62
|
+
app?: AttributionSchemaId2Registry | undefined;
|
|
63
|
+
/** Custom registry for the wallet entity. */
|
|
64
|
+
wallet?: AttributionSchemaId2Registry | undefined;
|
|
65
|
+
};
|
|
66
|
+
export type AttributionSchemaId2Registry = {
|
|
67
|
+
/** Address of the custom code registry contract. */
|
|
68
|
+
address: Address.Address;
|
|
69
|
+
/** Chain ID of the chain the custom code registry contract is deployed on. */
|
|
70
|
+
chainId: number;
|
|
71
|
+
};
|
|
41
72
|
/**
|
|
42
73
|
* Attribution schema identifier.
|
|
43
74
|
*
|
|
44
75
|
* - `0`: Canonical registry
|
|
45
76
|
* - `1`: Custom registry
|
|
77
|
+
* - `2`: CBOR-encoded
|
|
46
78
|
*/
|
|
47
|
-
export type SchemaId = NonNullable<AttributionSchemaId0['id'] | AttributionSchemaId1['id']>;
|
|
79
|
+
export type SchemaId = NonNullable<AttributionSchemaId0['id'] | AttributionSchemaId1['id'] | AttributionSchemaId2['id']>;
|
|
48
80
|
/**
|
|
49
81
|
* ERC-8021 suffix identifier.
|
|
50
82
|
*/
|
|
@@ -73,10 +105,15 @@ export declare const ercSuffixSize: number;
|
|
|
73
105
|
* }
|
|
74
106
|
* })
|
|
75
107
|
* // @log: 1
|
|
108
|
+
*
|
|
109
|
+
* const schemaId3 = Attribution.getSchemaId({
|
|
110
|
+
* appCode: 'baseapp',
|
|
111
|
+
* })
|
|
112
|
+
* // @log: 2
|
|
76
113
|
* ```
|
|
77
114
|
*
|
|
78
115
|
* @param attribution - The attribution object.
|
|
79
|
-
* @returns The schema ID (0 for canonical registry, 1 for custom registry).
|
|
116
|
+
* @returns The schema ID (0 for canonical registry, 1 for custom registry, 2 for CBOR-encoded).
|
|
80
117
|
*/
|
|
81
118
|
export declare function getSchemaId(attribution: Attribution): SchemaId;
|
|
82
119
|
export declare namespace getSchemaId {
|
|
@@ -112,12 +149,25 @@ export declare namespace getSchemaId {
|
|
|
112
149
|
* })
|
|
113
150
|
* ```
|
|
114
151
|
*
|
|
152
|
+
* @example
|
|
153
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
154
|
+
*
|
|
155
|
+
* ```ts twoslash
|
|
156
|
+
* import { Attribution } from 'ox/erc8021'
|
|
157
|
+
*
|
|
158
|
+
* const suffix = Attribution.toDataSuffix({
|
|
159
|
+
* appCode: 'baseapp',
|
|
160
|
+
* walletCode: 'privy',
|
|
161
|
+
* metadata: { source: 'webapp' },
|
|
162
|
+
* })
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
115
165
|
* @param attribution - The attribution to convert.
|
|
116
166
|
* @returns The data suffix as a {@link ox#Hex.Hex} value.
|
|
117
167
|
*/
|
|
118
168
|
export declare function toDataSuffix(attribution: Attribution): Hex.Hex;
|
|
119
169
|
export declare namespace toDataSuffix {
|
|
120
|
-
type ErrorType = getSchemaId.ErrorType | Hex.concat.ErrorType | Hex.fromString.ErrorType | Hex.fromNumber.ErrorType | Hex.size.ErrorType | Errors.GlobalErrorType;
|
|
170
|
+
type ErrorType = getSchemaId.ErrorType | Hex.concat.ErrorType | Hex.fromString.ErrorType | Hex.fromNumber.ErrorType | Hex.size.ErrorType | Cbor.encode.ErrorType | Errors.GlobalErrorType;
|
|
121
171
|
}
|
|
122
172
|
/**
|
|
123
173
|
* Extracts an {@link ox#Attribution.Attribution} from transaction calldata.
|
|
@@ -145,19 +195,31 @@ export declare namespace toDataSuffix {
|
|
|
145
195
|
* )
|
|
146
196
|
* // @log: {
|
|
147
197
|
* // @log: codes: ['baseapp', 'morpho'],
|
|
148
|
-
* // @log:
|
|
149
|
-
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc
|
|
198
|
+
* // @log: codeRegistry: {
|
|
199
|
+
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc',
|
|
150
200
|
* // @log: chainId: 8453,
|
|
151
|
-
* // @log: }
|
|
201
|
+
* // @log: },
|
|
152
202
|
* // @log: id: 1
|
|
153
203
|
* // @log: }
|
|
154
204
|
* ```
|
|
155
205
|
*
|
|
206
|
+
* @example
|
|
207
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
208
|
+
*
|
|
209
|
+
* ```ts twoslash
|
|
210
|
+
* import { Attribution } from 'ox/erc8021'
|
|
211
|
+
*
|
|
212
|
+
* const attribution = Attribution.fromData(
|
|
213
|
+
* '0xdddddddda161616762617365617070000b0280218021802180218021802180218021'
|
|
214
|
+
* )
|
|
215
|
+
* // @log: { appCode: 'baseapp', id: 2 }
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
156
218
|
* @param data - The transaction calldata containing the attribution suffix.
|
|
157
219
|
* @returns The extracted attribution, or undefined if no valid attribution is found.
|
|
158
220
|
*/
|
|
159
221
|
export declare function fromData(data: Hex.Hex): Attribution | undefined;
|
|
160
222
|
export declare namespace fromData {
|
|
161
|
-
type ErrorType = Hex.slice.ErrorType | Hex.toNumber.ErrorType | Hex.toString.ErrorType | Hex.size.ErrorType | Errors.GlobalErrorType;
|
|
223
|
+
type ErrorType = Hex.slice.ErrorType | Hex.toNumber.ErrorType | Hex.toString.ErrorType | Hex.size.ErrorType | Cbor.decode.ErrorType | Errors.GlobalErrorType;
|
|
162
224
|
}
|
|
163
225
|
//# sourceMappingURL=Attribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attribution.d.ts","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"Attribution.d.ts","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,11 @@ export type {};
|
|
|
17
17
|
* codes: ['baseapp', 'morpho'],
|
|
18
18
|
* codeRegistry: { address: '0x0000000000000000000000000000000000000000', chainId: 1 },
|
|
19
19
|
* })
|
|
20
|
+
*
|
|
21
|
+
* const dataSuffix3 = Attribution.toDataSuffix({
|
|
22
|
+
* appCode: 'baseapp',
|
|
23
|
+
* walletCode: 'privy',
|
|
24
|
+
* })
|
|
20
25
|
* ```
|
|
21
26
|
*
|
|
22
27
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,YAAY,EAAE,CAAA;AAEd
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../erc8021/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,YAAY,EAAE,CAAA;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
@@ -32,7 +32,7 @@ export type KeyAuthorization<signed extends boolean = boolean, bigintType = bigi
|
|
|
32
32
|
address: addressType;
|
|
33
33
|
/** Chain ID for replay protection. */
|
|
34
34
|
chainId: bigintType;
|
|
35
|
-
/** Unix timestamp when key expires (
|
|
35
|
+
/** Unix timestamp when key expires (undefined = never expires). */
|
|
36
36
|
expiry?: numberType | null | undefined;
|
|
37
37
|
/** TIP20 spending limits for this key. */
|
|
38
38
|
limits?: readonly TokenLimit<bigintType, addressType>[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.d.ts","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,UAAU,GAAG,MAAM,EACnB,UAAU,GAAG,MAAM,EACnB,WAAW,GAAG,OAAO,CAAC,OAAO,IAC3B;IACF,2DAA2D;IAC3D,OAAO,EAAE,WAAW,CAAA;IACpB,sCAAsC;IACtC,OAAO,EAAE,UAAU,CAAA;IACnB,
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.d.ts","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
package/_types/version.d.ts
CHANGED
package/erc8021/Attribution.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type * as Address from '../core/Address.js'
|
|
2
|
+
import * as Cbor from '../core/Cbor.js'
|
|
2
3
|
import type * as Errors from '../core/Errors.js'
|
|
3
4
|
import * as Hex from '../core/Hex.js'
|
|
4
5
|
import type { OneOf } from '../core/internal/types.js'
|
|
@@ -9,7 +10,9 @@ import type { OneOf } from '../core/internal/types.js'
|
|
|
9
10
|
* Represents attribution metadata that can be appended to transaction calldata
|
|
10
11
|
* to track entities involved in facilitating a transaction.
|
|
11
12
|
*/
|
|
12
|
-
export type Attribution = OneOf<
|
|
13
|
+
export type Attribution = OneOf<
|
|
14
|
+
AttributionSchemaId0 | AttributionSchemaId1 | AttributionSchemaId2
|
|
15
|
+
>
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* Schema 0: Canonical Registry Attribution.
|
|
@@ -44,14 +47,50 @@ export type AttributionSchemaId1Registry = {
|
|
|
44
47
|
chainId: number
|
|
45
48
|
}
|
|
46
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Schema 2: CBOR-Encoded Attribution.
|
|
52
|
+
*
|
|
53
|
+
* Uses CBOR encoding for extensible transaction annotation with optional fields,
|
|
54
|
+
* support for arbitrary metadata, and coexistence with other suffix-based systems.
|
|
55
|
+
*/
|
|
56
|
+
export type AttributionSchemaId2 = {
|
|
57
|
+
/** Application attribution code. */
|
|
58
|
+
appCode?: string | undefined
|
|
59
|
+
/** Wallet attribution code. */
|
|
60
|
+
walletCode?: string | undefined
|
|
61
|
+
/** Custom code registries keyed by entity type. */
|
|
62
|
+
registries?: AttributionSchemaId2Registries | undefined
|
|
63
|
+
/** Arbitrary metadata key-value pairs. */
|
|
64
|
+
metadata?: Record<string, unknown> | undefined
|
|
65
|
+
/** Schema identifier (2 for CBOR-encoded). */
|
|
66
|
+
id?: 2 | undefined
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export type AttributionSchemaId2Registries = {
|
|
70
|
+
/** Custom registry for the application entity. */
|
|
71
|
+
app?: AttributionSchemaId2Registry | undefined
|
|
72
|
+
/** Custom registry for the wallet entity. */
|
|
73
|
+
wallet?: AttributionSchemaId2Registry | undefined
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export type AttributionSchemaId2Registry = {
|
|
77
|
+
/** Address of the custom code registry contract. */
|
|
78
|
+
address: Address.Address
|
|
79
|
+
/** Chain ID of the chain the custom code registry contract is deployed on. */
|
|
80
|
+
chainId: number
|
|
81
|
+
}
|
|
82
|
+
|
|
47
83
|
/**
|
|
48
84
|
* Attribution schema identifier.
|
|
49
85
|
*
|
|
50
86
|
* - `0`: Canonical registry
|
|
51
87
|
* - `1`: Custom registry
|
|
88
|
+
* - `2`: CBOR-encoded
|
|
52
89
|
*/
|
|
53
90
|
export type SchemaId = NonNullable<
|
|
54
|
-
|
|
91
|
+
| AttributionSchemaId0['id']
|
|
92
|
+
| AttributionSchemaId1['id']
|
|
93
|
+
| AttributionSchemaId2['id']
|
|
55
94
|
>
|
|
56
95
|
|
|
57
96
|
/**
|
|
@@ -84,12 +123,18 @@ export const ercSuffixSize = /*#__PURE__*/ Hex.size(ercSuffix)
|
|
|
84
123
|
* }
|
|
85
124
|
* })
|
|
86
125
|
* // @log: 1
|
|
126
|
+
*
|
|
127
|
+
* const schemaId3 = Attribution.getSchemaId({
|
|
128
|
+
* appCode: 'baseapp',
|
|
129
|
+
* })
|
|
130
|
+
* // @log: 2
|
|
87
131
|
* ```
|
|
88
132
|
*
|
|
89
133
|
* @param attribution - The attribution object.
|
|
90
|
-
* @returns The schema ID (0 for canonical registry, 1 for custom registry).
|
|
134
|
+
* @returns The schema ID (0 for canonical registry, 1 for custom registry, 2 for CBOR-encoded).
|
|
91
135
|
*/
|
|
92
136
|
export function getSchemaId(attribution: Attribution): SchemaId {
|
|
137
|
+
if ('appCode' in attribution || 'walletCode' in attribution) return 2
|
|
93
138
|
if ('codeRegistry' in attribution) return 1
|
|
94
139
|
return 0
|
|
95
140
|
}
|
|
@@ -128,12 +173,34 @@ export declare namespace getSchemaId {
|
|
|
128
173
|
* })
|
|
129
174
|
* ```
|
|
130
175
|
*
|
|
176
|
+
* @example
|
|
177
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
178
|
+
*
|
|
179
|
+
* ```ts twoslash
|
|
180
|
+
* import { Attribution } from 'ox/erc8021'
|
|
181
|
+
*
|
|
182
|
+
* const suffix = Attribution.toDataSuffix({
|
|
183
|
+
* appCode: 'baseapp',
|
|
184
|
+
* walletCode: 'privy',
|
|
185
|
+
* metadata: { source: 'webapp' },
|
|
186
|
+
* })
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
131
189
|
* @param attribution - The attribution to convert.
|
|
132
190
|
* @returns The data suffix as a {@link ox#Hex.Hex} value.
|
|
133
191
|
*/
|
|
134
192
|
export function toDataSuffix(attribution: Attribution): Hex.Hex {
|
|
193
|
+
// Determine schema ID
|
|
194
|
+
const schemaId = getSchemaId(attribution)
|
|
195
|
+
|
|
196
|
+
// Schema 2: CBOR-encoded
|
|
197
|
+
if (schemaId === 2) {
|
|
198
|
+
const schema2 = attribution as AttributionSchemaId2
|
|
199
|
+
return schema2ToDataSuffix(schema2)
|
|
200
|
+
}
|
|
201
|
+
|
|
135
202
|
// Encode the codes as ASCII strings separated by commas
|
|
136
|
-
const codesHex = Hex.fromString(attribution.codes.join(','))
|
|
203
|
+
const codesHex = Hex.fromString((attribution.codes ?? []).join(','))
|
|
137
204
|
|
|
138
205
|
// Get the byte length of the encoded codes
|
|
139
206
|
const codesLength = Hex.size(codesHex)
|
|
@@ -141,14 +208,11 @@ export function toDataSuffix(attribution: Attribution): Hex.Hex {
|
|
|
141
208
|
// Encode the codes length as 1 byte
|
|
142
209
|
const codesLengthHex = Hex.fromNumber(codesLength, { size: 1 })
|
|
143
210
|
|
|
144
|
-
// Determine schema ID
|
|
145
|
-
const schemaId = getSchemaId(attribution)
|
|
146
211
|
const schemaIdHex = Hex.fromNumber(schemaId, { size: 1 })
|
|
147
212
|
|
|
148
|
-
//
|
|
213
|
+
// Schema 1: codeRegistryAddress (20 bytes) ∥ chainId ∥ chainIdLength (1 byte) ∥ codes ∥ codesLength (1 byte) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
149
214
|
if (schemaId === 1) {
|
|
150
215
|
const schema1 = attribution as AttributionSchemaId1
|
|
151
|
-
// Schema 1: codeRegistryAddress (20 bytes) ∥ chainId ∥ chainIdLength (1 byte) ∥ codes ∥ codesLength (1 byte) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
152
216
|
return Hex.concat(
|
|
153
217
|
registryToData(schema1.codeRegistry),
|
|
154
218
|
codesHex,
|
|
@@ -169,6 +233,7 @@ export declare namespace toDataSuffix {
|
|
|
169
233
|
| Hex.fromString.ErrorType
|
|
170
234
|
| Hex.fromNumber.ErrorType
|
|
171
235
|
| Hex.size.ErrorType
|
|
236
|
+
| Cbor.encode.ErrorType
|
|
172
237
|
| Errors.GlobalErrorType
|
|
173
238
|
}
|
|
174
239
|
|
|
@@ -198,14 +263,26 @@ export declare namespace toDataSuffix {
|
|
|
198
263
|
* )
|
|
199
264
|
* // @log: {
|
|
200
265
|
* // @log: codes: ['baseapp', 'morpho'],
|
|
201
|
-
* // @log:
|
|
202
|
-
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc
|
|
266
|
+
* // @log: codeRegistry: {
|
|
267
|
+
* // @log: address: '0xcccccccccccccccccccccccccccccccccccccccc',
|
|
203
268
|
* // @log: chainId: 8453,
|
|
204
|
-
* // @log: }
|
|
269
|
+
* // @log: },
|
|
205
270
|
* // @log: id: 1
|
|
206
271
|
* // @log: }
|
|
207
272
|
* ```
|
|
208
273
|
*
|
|
274
|
+
* @example
|
|
275
|
+
* ### Schema 2 (CBOR-Encoded)
|
|
276
|
+
*
|
|
277
|
+
* ```ts twoslash
|
|
278
|
+
* import { Attribution } from 'ox/erc8021'
|
|
279
|
+
*
|
|
280
|
+
* const attribution = Attribution.fromData(
|
|
281
|
+
* '0xdddddddda161616762617365617070000b0280218021802180218021802180218021'
|
|
282
|
+
* )
|
|
283
|
+
* // @log: { appCode: 'baseapp', id: 2 }
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
209
286
|
* @param data - The transaction calldata containing the attribution suffix.
|
|
210
287
|
* @returns The extracted attribution, or undefined if no valid attribution is found.
|
|
211
288
|
*/
|
|
@@ -270,6 +347,10 @@ export function fromData(data: Hex.Hex): Attribution | undefined {
|
|
|
270
347
|
id: 1,
|
|
271
348
|
}
|
|
272
349
|
}
|
|
350
|
+
// Schema 2: CBOR-encoded
|
|
351
|
+
if (schemaId === 2) {
|
|
352
|
+
return schema2FromData(data)
|
|
353
|
+
}
|
|
273
354
|
|
|
274
355
|
// Unknown schema ID
|
|
275
356
|
return undefined
|
|
@@ -325,5 +406,103 @@ export declare namespace fromData {
|
|
|
325
406
|
| Hex.toNumber.ErrorType
|
|
326
407
|
| Hex.toString.ErrorType
|
|
327
408
|
| Hex.size.ErrorType
|
|
409
|
+
| Cbor.decode.ErrorType
|
|
328
410
|
| Errors.GlobalErrorType
|
|
329
411
|
}
|
|
412
|
+
|
|
413
|
+
// ---- Schema 2 helpers ----
|
|
414
|
+
|
|
415
|
+
/** Internal CBOR map shape matching the ERC-8021 spec. */
|
|
416
|
+
type Schema2CborMap = {
|
|
417
|
+
a?: string
|
|
418
|
+
w?: string
|
|
419
|
+
r?: {
|
|
420
|
+
a?: { c: string; a: string }
|
|
421
|
+
w?: { c: string; a: string }
|
|
422
|
+
}
|
|
423
|
+
m?: Record<string, unknown>
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
function schema2ToDataSuffix(attribution: AttributionSchemaId2): Hex.Hex {
|
|
427
|
+
// Build the CBOR map using single-letter keys per the spec
|
|
428
|
+
const cborMap: Schema2CborMap = {}
|
|
429
|
+
|
|
430
|
+
if (attribution.appCode) cborMap.a = attribution.appCode
|
|
431
|
+
if (attribution.walletCode) cborMap.w = attribution.walletCode
|
|
432
|
+
|
|
433
|
+
if (attribution.registries) {
|
|
434
|
+
const r: Schema2CborMap['r'] = {}
|
|
435
|
+
if (attribution.registries.app) {
|
|
436
|
+
r.a = {
|
|
437
|
+
c: Hex.fromNumber(attribution.registries.app.chainId),
|
|
438
|
+
a: attribution.registries.app.address,
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (attribution.registries.wallet) {
|
|
442
|
+
r.w = {
|
|
443
|
+
c: Hex.fromNumber(attribution.registries.wallet.chainId),
|
|
444
|
+
a: attribution.registries.wallet.address,
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
if (r.a || r.w) cborMap.r = r
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
if (attribution.metadata && Object.keys(attribution.metadata).length > 0)
|
|
451
|
+
cborMap.m = attribution.metadata
|
|
452
|
+
|
|
453
|
+
// Encode to CBOR
|
|
454
|
+
const cborHex = Cbor.encode(cborMap)
|
|
455
|
+
const cborBytes = Hex.size(cborHex)
|
|
456
|
+
|
|
457
|
+
// cborData ∥ cborLength (2 bytes) ∥ schemaId (1 byte) ∥ ercSuffix
|
|
458
|
+
return Hex.concat(
|
|
459
|
+
cborHex,
|
|
460
|
+
Hex.fromNumber(cborBytes, { size: 2 }),
|
|
461
|
+
Hex.fromNumber(2, { size: 1 }),
|
|
462
|
+
ercSuffix,
|
|
463
|
+
)
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
function schema2FromData(data: Hex.Hex): AttributionSchemaId2 | undefined {
|
|
467
|
+
// cborLength is 2 bytes before schema ID
|
|
468
|
+
const cborLengthHex = Hex.slice(
|
|
469
|
+
data,
|
|
470
|
+
-ercSuffixSize - 1 - 2,
|
|
471
|
+
-ercSuffixSize - 1,
|
|
472
|
+
)
|
|
473
|
+
const cborLength = Hex.toNumber(cborLengthHex)
|
|
474
|
+
|
|
475
|
+
// Extract CBOR data
|
|
476
|
+
const cborStart = -ercSuffixSize - 1 - 2 - cborLength
|
|
477
|
+
const cborEnd = -ercSuffixSize - 1 - 2
|
|
478
|
+
const cborHex = Hex.slice(data, cborStart, cborEnd)
|
|
479
|
+
|
|
480
|
+
// Decode CBOR
|
|
481
|
+
const decoded = Cbor.decode<Schema2CborMap>(cborHex)
|
|
482
|
+
|
|
483
|
+
const result: AttributionSchemaId2 = { id: 2 }
|
|
484
|
+
|
|
485
|
+
if (typeof decoded.a === 'string') result.appCode = decoded.a
|
|
486
|
+
if (typeof decoded.w === 'string') result.walletCode = decoded.w
|
|
487
|
+
|
|
488
|
+
if (decoded.r) {
|
|
489
|
+
const registries: AttributionSchemaId2Registries = {}
|
|
490
|
+
if (decoded.r.a?.c && decoded.r.a?.a) {
|
|
491
|
+
registries.app = {
|
|
492
|
+
address: decoded.r.a.a as Address.Address,
|
|
493
|
+
chainId: Hex.toNumber(decoded.r.a.c as Hex.Hex),
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
if (decoded.r.w?.c && decoded.r.w?.a) {
|
|
497
|
+
registries.wallet = {
|
|
498
|
+
address: decoded.r.w.a as Address.Address,
|
|
499
|
+
chainId: Hex.toNumber(decoded.r.w.c as Hex.Hex),
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
if (registries.app || registries.wallet) result.registries = registries
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
if (decoded.m && typeof decoded.m === 'object') result.metadata = decoded.m
|
|
506
|
+
|
|
507
|
+
return result
|
|
508
|
+
}
|
package/erc8021/index.ts
CHANGED
|
@@ -19,6 +19,11 @@ export type {}
|
|
|
19
19
|
* codes: ['baseapp', 'morpho'],
|
|
20
20
|
* codeRegistry: { address: '0x0000000000000000000000000000000000000000', chainId: 1 },
|
|
21
21
|
* })
|
|
22
|
+
*
|
|
23
|
+
* const dataSuffix3 = Attribution.toDataSuffix({
|
|
24
|
+
* appCode: 'baseapp',
|
|
25
|
+
* walletCode: 'privy',
|
|
26
|
+
* })
|
|
22
27
|
* ```
|
|
23
28
|
*
|
|
24
29
|
* @example
|
package/package.json
CHANGED
|
@@ -639,6 +639,24 @@ describe('fromRpc', () => {
|
|
|
639
639
|
|
|
640
640
|
expect(authorization.chainId).toBe(0n)
|
|
641
641
|
})
|
|
642
|
+
|
|
643
|
+
test('omits expiry when null (never expires)', () => {
|
|
644
|
+
const authorization = KeyAuthorization.fromRpc({
|
|
645
|
+
chainId: '0x1',
|
|
646
|
+
expiry: null,
|
|
647
|
+
keyId: address,
|
|
648
|
+
keyType: 'secp256k1',
|
|
649
|
+
limits: [{ token, limit: '0x989680' }],
|
|
650
|
+
signature: {
|
|
651
|
+
type: 'secp256k1',
|
|
652
|
+
r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
|
|
653
|
+
s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
|
|
654
|
+
yParity: '0x0',
|
|
655
|
+
},
|
|
656
|
+
})
|
|
657
|
+
|
|
658
|
+
expect(authorization.expiry).toBeUndefined()
|
|
659
|
+
})
|
|
642
660
|
})
|
|
643
661
|
|
|
644
662
|
describe('fromTuple', () => {
|
|
@@ -1380,6 +1398,29 @@ describe('toRpc', () => {
|
|
|
1380
1398
|
|
|
1381
1399
|
expect(restored).toEqual(authorization)
|
|
1382
1400
|
})
|
|
1401
|
+
|
|
1402
|
+
test('round-trip: toRpc -> fromRpc (no expiry)', () => {
|
|
1403
|
+
const authorization = KeyAuthorization.from({
|
|
1404
|
+
address,
|
|
1405
|
+
chainId: 0n,
|
|
1406
|
+
type: 'secp256k1',
|
|
1407
|
+
limits: [
|
|
1408
|
+
{
|
|
1409
|
+
token,
|
|
1410
|
+
limit: Value.from('10', 6),
|
|
1411
|
+
},
|
|
1412
|
+
],
|
|
1413
|
+
signature: SignatureEnvelope.from(signature_secp256k1),
|
|
1414
|
+
})
|
|
1415
|
+
|
|
1416
|
+
const rpc = KeyAuthorization.toRpc(authorization)
|
|
1417
|
+
expect(rpc.expiry).toBeNull()
|
|
1418
|
+
|
|
1419
|
+
const restored = KeyAuthorization.fromRpc(rpc)
|
|
1420
|
+
expect(restored.expiry).toBeUndefined()
|
|
1421
|
+
expect(restored.address).toBe(authorization.address)
|
|
1422
|
+
expect(restored.chainId).toBe(authorization.chainId)
|
|
1423
|
+
})
|
|
1383
1424
|
})
|
|
1384
1425
|
|
|
1385
1426
|
describe('toTuple', () => {
|
|
@@ -38,7 +38,7 @@ export type KeyAuthorization<
|
|
|
38
38
|
address: addressType
|
|
39
39
|
/** Chain ID for replay protection. */
|
|
40
40
|
chainId: bigintType
|
|
41
|
-
/** Unix timestamp when key expires (
|
|
41
|
+
/** Unix timestamp when key expires (undefined = never expires). */
|
|
42
42
|
expiry?: numberType | null | undefined
|
|
43
43
|
/** TIP20 spending limits for this key. */
|
|
44
44
|
limits?: readonly TokenLimit<bigintType, addressType>[] | undefined
|
|
@@ -344,12 +344,12 @@ export declare namespace from {
|
|
|
344
344
|
* @returns A signed {@link ox#AuthorizationTempo.AuthorizationTempo}.
|
|
345
345
|
*/
|
|
346
346
|
export function fromRpc(authorization: Rpc): Signed {
|
|
347
|
-
const { chainId, keyId, expiry
|
|
347
|
+
const { chainId, keyId, expiry, limits, keyType } = authorization
|
|
348
348
|
const signature = SignatureEnvelope.fromRpc(authorization.signature)
|
|
349
349
|
return {
|
|
350
350
|
address: keyId,
|
|
351
351
|
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
352
|
-
expiry: Number(expiry),
|
|
352
|
+
...(expiry != null ? { expiry: Number(expiry) } : {}),
|
|
353
353
|
limits: limits?.map((limit) => ({
|
|
354
354
|
token: limit.token,
|
|
355
355
|
limit: BigInt(limit.limit),
|
package/tempo/e2e.test.ts
CHANGED
|
@@ -1590,7 +1590,7 @@ describe('behavior: keyAuthorization', () => {
|
|
|
1590
1590
|
|
|
1591
1591
|
expect(response.from).toBe(root.address)
|
|
1592
1592
|
expect(response.keyAuthorization).toBeDefined()
|
|
1593
|
-
expect(response.keyAuthorization?.expiry).
|
|
1593
|
+
expect(response.keyAuthorization?.expiry).toBeUndefined()
|
|
1594
1594
|
expect(response.keyAuthorization?.limits).toEqual(keyAuth.limits)
|
|
1595
1595
|
}
|
|
1596
1596
|
})
|
package/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = '0.14.
|
|
2
|
+
export const version = '0.14.9'
|