@agenticprimitives/agent-naming 1.0.0-alpha.46 → 1.0.0-alpha.48

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/dist/constants.js CHANGED
@@ -6,8 +6,9 @@
6
6
  * on-chain `atl:agentType` record on the SA subject is the authority (spec 346 §2.3).
7
7
  *
8
8
  * `.ws` is a package-level alias normalizing to `workspace`; it is not an on-chain root.
9
- * `.impact` / `.agent` are UNTYPED LEGACY roots: they resolve, they are not validated, and they close to
10
- * new claims once the owning apps migrate (spec 346 §3.5).
9
+ * `.agent` is the one UNTYPED LEGACY root: it resolves, it is not validated, and it closes to new claims once
10
+ * the owning apps migrate (spec 346 §3.5). A word in neither list is an unknown root and is refused (`unknown_tld`);
11
+ * a retired root is not kept as an alias (test/grammar.test.ts, "a retired root fails closed").
11
12
  */
12
13
  import { keccak256, toHex } from 'viem';
13
14
  import { rootClassForDerivedType } from '@agenticprimitives/types';
@@ -18,8 +19,8 @@ import { verticalAgentTypeForTld, verticalAgentTlds, verticalRootKindForTld } fr
18
19
  export const AGENT_TLDS = ['me', 'org', 'team', 'svc', 'workspace', 'treasury', 'registry', 'church', 'circle', 'household'];
19
20
  /** Package-level aliases applied during normalization (never on-chain roots). */
20
21
  export const AGENT_TLD_ALIASES = Object.freeze({ ws: 'workspace' });
21
- /** Untyped legacy roots — resolvable, never suffix-validated, closed to new claims after app adoption. */
22
- export const LEGACY_TLDS = ['impact', 'agent'];
22
+ /** Untyped legacy roots — resolvable, never suffix-validated, closed to new claims after app adoption. `.agent` only. */
23
+ export const LEGACY_TLDS = ['agent'];
23
24
  /**
24
25
  * Labels that MUST NOT be claimed under any root or inside any context: the type words (they would
25
26
  * collide with the DNS type level `<label>.<type>.<zone>`, spec 346 §5), the alias, and the fixed
@@ -34,6 +35,12 @@ export const RESERVED_LABELS = Object.freeze([
34
35
  'api',
35
36
  'well-known',
36
37
  ]);
38
+ /**
39
+ * The labels `AgentNameRegistry` reserves in its constructor (spec 445 / generation 4 / B2, NAME-8): exactly the
40
+ * non-type words of `RESERVED_LABELS`. The chain reserves a TYPE word only once that root is initialized
41
+ * (`isTypedRootLabel`); the SDK reserves all of them statically, so it stays the stricter pre-check.
42
+ */
43
+ export const CHAIN_SEEDED_RESERVED_LABELS = Object.freeze(['ws', 'www', 'mtls', 'edge', 'api', 'well-known']);
37
44
  const TLD_TO_DERIVED = Object.freeze({
38
45
  me: 'person',
39
46
  org: 'org',
@@ -112,6 +119,27 @@ export function tldForDerivedType(t) {
112
119
  }
113
120
  /** Re-exported for callers that only import agent-naming: derived type → closed root (ADR-0046). */
114
121
  export { rootClassForDerivedType };
122
+ /**
123
+ * Is `label` one that names no agent anywhere — a type word, the alias, a registered vertical suffix or a fixed
124
+ * infrastructure host (spec 346 §3.1)? Stated once so the grammar, the claim helpers and the DNS projection agree.
125
+ */
126
+ export function isReservedLabel(label) {
127
+ return RESERVED_LABELS.includes(label) || canonicalTld(label) !== null;
128
+ }
129
+ /**
130
+ * The type suffix a single label ENDS in — `alice-home-church` → `church` — or null. The suffix is the segment
131
+ * after the LAST hyphen, compared with the closed suffix set (a suffix never contains a hyphen: the ten generic
132
+ * ones do not, and `registerVerticalAgentTypes` refuses one that does), so the split is unique: a label reads as
133
+ * at most one `<label>-<type>`. Spec 445 / audit NAME-8: this one function decides both which bare labels have no
134
+ * DNS host and how a host is read back, so the two cannot drift.
135
+ */
136
+ export function typeSuffixOfLabel(label) {
137
+ const i = label.lastIndexOf('-');
138
+ if (i <= 0 || i === label.length - 1)
139
+ return null;
140
+ const tail = label.slice(i + 1);
141
+ return allAgentTlds().includes(tail) ? tail : null;
142
+ }
115
143
  /** Root class a suffix resolves to (`suffix → derived type → root`). */
116
144
  export function rootClassForTld(tld) {
117
145
  return rootClassForDerivedType(derivedTypeForTld(tld));
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/custody.d.ts CHANGED
@@ -29,6 +29,11 @@ export interface ContractCall {
29
29
  * Build a call to register `<label>.<parent>` under the parent
30
30
  * namespace. Caller MUST be the parent's owner OR subregistry
31
31
  * delegate (msg.sender check on chain).
32
+ *
33
+ * Spec 445 / NAME-8: when `parentNode` is a ROOT this process knows (a typed, legacy or vertical root) the label is
34
+ * an agent's and the claim rule applies (`labelClaimViolation`): reserved labels refused, and under a bare-host
35
+ * root a label ending in `-<type>` refused. Any other parent (a context registering its type-nodes, an app's own
36
+ * subtree) is not judged here — a type word IS the label of a type-node.
32
37
  */
33
38
  export declare function buildRegisterSubnameCall(args: {
34
39
  registry: Address;
@@ -40,7 +45,13 @@ export declare function buildRegisterSubnameCall(args: {
40
45
  }): ContractCall;
41
46
  /**
42
47
  * Build a call to rotate the owner Smart Agent for a name.
43
- * Caller MUST be the current owner.
48
+ * Caller MUST be the current owner, and the name must not be expired (`NameExpired`).
49
+ *
50
+ * Spec 445 / generation 4 / B2 (REG-4): RECORDS DO NOT CARRY OVER. Moving the name to a DIFFERENT owner bumps its
51
+ * record epoch (`RecordEpochBumped`), and `AgentNameAttributeResolver` keys every record by `(node, epoch)` — so
52
+ * after this call `atl:addr`, `atl:agentType` and every other record of the node read empty, and transferring back
53
+ * does not resurrect them. The new owner writes its own records. The `resolver` and `subregistry` POINTERS are not
54
+ * reset: a receiver of a transferred name must check them.
44
55
  */
45
56
  export declare function buildRotateNameOwnerCall(args: {
46
57
  registry: Address;
@@ -121,19 +132,86 @@ export declare function buildRecordCalls(args: {
121
132
  records: import('./types.js').AgentNameRecords;
122
133
  }): ContractCall[];
123
134
  /**
124
- * Build a call to claim `<label>.<parent>` through a deployed
125
- * PermissionlessSubregistry instance. The caller pays gas; the
126
- * registered child name is owned by `newOwner` (typically the
127
- * caller's own PSA OR an account they control).
135
+ * Spec 445 / generation 4 / B2 (REG-5) — the PermissionlessSubregistry claim is COMMIT-REVEAL. The two windows are
136
+ * contract constants (`MIN_COMMIT_AGE()` / `MAX_COMMIT_AGE()`); they are mirrored here so a client can schedule the
137
+ * reveal without a read, and a test pins them to the contract.
138
+ */
139
+ export declare const SUBREGISTRY_MIN_COMMIT_AGE_SECONDS = 10;
140
+ export declare const SUBREGISTRY_MAX_COMMIT_AGE_SECONDS = 86400;
141
+ /** 32 fresh random bytes for one claim. The CLIENT keeps it between the commit and the reveal, and never sends it
142
+ * anywhere before the reveal — whoever learns it before the reveal can reveal for the same owner, nothing more
143
+ * (the commitment binds `newOwner`, so a copied secret never yields the name to anyone else). */
144
+ export declare function generateClaimSecret(): Hex;
145
+ /**
146
+ * The commitment `PermissionlessSubregistry.makeCommitment(label, newOwner, secret)` computes, off chain:
147
+ * `keccak256(abi.encode(subregistry, chainId, keccak256(bytes(label)), newOwner, secret))`. The label is normalized
148
+ * first — the reveal sends the normalized label, so the commitment must be over the same bytes.
149
+ */
150
+ export declare function subregistryCommitment(args: {
151
+ subregistry: Address;
152
+ chainId: number | bigint;
153
+ label: string;
154
+ newOwner: Address;
155
+ secret: Hex;
156
+ }): Hex;
157
+ /**
158
+ * STEP 1 of a PermissionlessSubregistry claim: `commit(commitment)`. The label is NOT visible on chain until the
159
+ * reveal, so a watcher of the mempool cannot take the name first.
160
+ *
161
+ * THE WAITING PERIOD. The reveal (`buildSubregistryRegisterCall`, same label / owner / secret) must land in a LATER
162
+ * transaction at least `SUBREGISTRY_MIN_COMMIT_AGE_SECONDS` (10 s of chain time) after this one is mined, and no more
163
+ * than `SUBREGISTRY_MAX_COMMIT_AGE_SECONDS` (1 day) after it — too early reverts `CommitmentTooNew(commitment,
164
+ * matureAt)`, too late `CommitmentExpired`. Both calls therefore can NOT share one user operation or one batch: a
165
+ * flow that claimed a name in one transaction is now two, with a wait between. The commitment is single-use, and a
166
+ * live one cannot be re-committed (`CommitmentPending`); after it expires, commit again (a fresh secret is best).
167
+ *
168
+ * The label is validated here exactly as at the reveal (normalization + NAME-8), so a claim the reveal would refuse
169
+ * never spends a commit.
170
+ */
171
+ export declare function buildSubregistryCommitCall(args: {
172
+ subregistry: Address;
173
+ chainId: number | bigint;
174
+ label: string;
175
+ newOwner: Address;
176
+ secret: Hex;
177
+ /** As in `buildSubregistryRegisterCall`: the root this subregistry serves; omitted ⇒ judged as a bare-host root. */
178
+ root?: string;
179
+ }): ContractCall & {
180
+ commitment: Hex;
181
+ };
182
+ /**
183
+ * STEP 2 — the REVEAL: `register(label, newOwner, secret)` through a deployed PermissionlessSubregistry. It succeeds
184
+ * only against a MATURED commitment from `buildSubregistryCommitCall` with the same label, owner and secret (see the
185
+ * waiting period there). The caller pays gas; any account may send the reveal (a relayer) — the name goes to
186
+ * `newOwner`, which the commitment fixed.
128
187
  *
129
- * Anti-spam: one claim per `msg.sender` is enforced on chain; the
130
- * call reverts with `AlreadyClaimed(existingNode)` if the caller
131
- * has previously claimed a name through this subregistry instance.
188
+ * One reveal per `msg.sender` is enforced on chain (`AlreadyClaimed(existingNode)`) — a courtesy limit, not sybil
189
+ * resistance. The chain also refuses reserved labels (`ReservedLabel`) and, under a bare-host root, labels that read
190
+ * as a typed name (`LabelReadsAsTypedName`); the same rule is checked here first.
132
191
  */
133
192
  export declare function buildSubregistryRegisterCall(args: {
134
193
  subregistry: Address;
135
194
  label: string;
136
195
  newOwner: Address;
196
+ /** The secret the matching commitment was made with. */
197
+ secret: Hex;
198
+ /**
199
+ * The root this subregistry serves (`'me'`, `'team'`, a legacy root…). Spec 445 / NAME-8: a subregistry address
200
+ * does not say which root it is, so an OMITTED root is judged as a bare-host root — a label ending in `-<type>`
201
+ * is refused. A caller claiming `somali-corridor-team` under `.team` says `root: 'team'`.
202
+ */
203
+ root?: string;
204
+ }): ContractCall;
205
+ /**
206
+ * `renew(node, newExpiry)` — spec 445 / generation 4 / B2 (REG-6). Expiry is the PARENT's term: the caller MUST be
207
+ * the parent authority (the parent node's owner or its subregistry), never the name's holder. Extension only:
208
+ * `newExpiry` is `0` (make permanent) or later than both the current expiry and now, else `ExpiryNotExtended()`. A
209
+ * root has no parent and cannot be renewed. Every shipped path registers permanent names (expiry 0).
210
+ */
211
+ export declare function buildRenewNameCall(args: {
212
+ registry: Address;
213
+ node: Hex;
214
+ newExpiry: bigint | number;
137
215
  }): ContractCall;
138
216
  /**
139
217
  * Step 1b of the bootstrap (spec 346 §3.6): declare the SA's derived type on its OWN profile subject.
@@ -160,6 +238,11 @@ export declare function buildDeclareAgentTypeCalls(args: {
160
238
  * on the new node, and set the primary name. The caller MUST have run `validateTypedClaim` (or
161
239
  * `AgentNamingClient.checkTypedName`) — this builder only refuses a suffix/type disagreement it can see
162
240
  * locally. `setPrimaryName` requires `msg.sender == owner`; the subregistry claim may be sent by anyone.
241
+ *
242
+ * Spec 445 / generation 4 / B2 (REG-5): the claim is TWO transactions. Send `commit` first; after it is mined, wait
243
+ * at least `SUBREGISTRY_MIN_COMMIT_AGE_SECONDS` (and at most a day — see `buildSubregistryCommitCall`), then send
244
+ * `claim` (the reveal) followed by `records` and `primaryName`. `secret` is the client's (`generateClaimSecret()`),
245
+ * kept between the two; `chainId` is the subregistry's chain, part of the commitment.
163
246
  */
164
247
  export declare function buildTypedClaimCalls(args: {
165
248
  name: string;
@@ -168,8 +251,12 @@ export declare function buildTypedClaimCalls(args: {
168
251
  resolver: Address;
169
252
  subregistries: Partial<Record<string, Address>>;
170
253
  agentType: DerivedAgentType;
254
+ chainId: number | bigint;
255
+ secret: Hex;
171
256
  records?: Omit<AgentNameRecords, 'agentKind' | 'addr'>;
172
257
  }): {
258
+ commit: ContractCall;
259
+ commitment: Hex;
173
260
  claim: ContractCall;
174
261
  records: ContractCall[];
175
262
  primaryName: ContractCall;
@@ -1 +1 @@
1
- {"version":3,"file":"custody.d.ts","sourceRoot":"","sources":["../src/custody.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custody.d.ts","sourceRoot":"","sources":["../src/custody.ts"],"names":[],"mappings":"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"}
package/dist/custody.js CHANGED
@@ -15,24 +15,32 @@
15
15
  * Phase 4 lands the encoders; the client (`AgentNamingClient`) layers
16
16
  * walletClient submission on top.
17
17
  */
18
- import { encodeFunctionData } from 'viem';
18
+ import { encodeAbiParameters, encodeFunctionData, keccak256, toBytes, toHex } from 'viem';
19
19
  import { normalizeLabel } from './normalize.js';
20
20
  import { agentNameAttributeResolverAbi, agentNameRegistryAbi, permissionlessSubregistryAbi, } from './abis.js';
21
21
  import { PREDICATE_ID, AGENT_KIND_ID, AGENT_TYPE_ID, encodeAccounts } from './records.js';
22
22
  import { agentProfileResolverTypeAbi } from './abis.js';
23
23
  import { rootClassForDerivedType } from '@agenticprimitives/types';
24
24
  import { parseAgentName } from './grammar.js';
25
- import { ROLE_TYPED } from './claim.js';
25
+ import { ROLE_TYPED, assertClaimableLabel, knownRootOfNode } from './claim.js';
26
26
  import { derivedTypeForTld } from './constants.js';
27
27
  // ─── Registry writes ───────────────────────────────────────────────
28
28
  /**
29
29
  * Build a call to register `<label>.<parent>` under the parent
30
30
  * namespace. Caller MUST be the parent's owner OR subregistry
31
31
  * delegate (msg.sender check on chain).
32
+ *
33
+ * Spec 445 / NAME-8: when `parentNode` is a ROOT this process knows (a typed, legacy or vertical root) the label is
34
+ * an agent's and the claim rule applies (`labelClaimViolation`): reserved labels refused, and under a bare-host
35
+ * root a label ending in `-<type>` refused. Any other parent (a context registering its type-nodes, an app's own
36
+ * subtree) is not judged here — a type word IS the label of a type-node.
32
37
  */
33
38
  export function buildRegisterSubnameCall(args) {
34
39
  // AN-1: normalize + reject on the WRITE path (homoglyph/case/zero-width squat defense).
35
40
  const label = normalizeLabel(args.label);
41
+ const root = knownRootOfNode(args.parentNode);
42
+ if (root)
43
+ assertClaimableLabel(label, { root });
36
44
  return {
37
45
  to: args.registry,
38
46
  value: 0n,
@@ -51,7 +59,13 @@ export function buildRegisterSubnameCall(args) {
51
59
  }
52
60
  /**
53
61
  * Build a call to rotate the owner Smart Agent for a name.
54
- * Caller MUST be the current owner.
62
+ * Caller MUST be the current owner, and the name must not be expired (`NameExpired`).
63
+ *
64
+ * Spec 445 / generation 4 / B2 (REG-4): RECORDS DO NOT CARRY OVER. Moving the name to a DIFFERENT owner bumps its
65
+ * record epoch (`RecordEpochBumped`), and `AgentNameAttributeResolver` keys every record by `(node, epoch)` — so
66
+ * after this call `atl:addr`, `atl:agentType` and every other record of the node read empty, and transferring back
67
+ * does not resurrect them. The new owner writes its own records. The `resolver` and `subregistry` POINTERS are not
68
+ * reset: a receiver of a transferred name must check them.
55
69
  */
56
70
  export function buildRotateNameOwnerCall(args) {
57
71
  return {
@@ -240,28 +254,101 @@ export function buildRecordCalls(args) {
240
254
  }
241
255
  // ─── PermissionlessSubregistry ─────────────────────────────────────
242
256
  /**
243
- * Build a call to claim `<label>.<parent>` through a deployed
244
- * PermissionlessSubregistry instance. The caller pays gas; the
245
- * registered child name is owned by `newOwner` (typically the
246
- * caller's own PSA OR an account they control).
257
+ * Spec 445 / generation 4 / B2 (REG-5) — the PermissionlessSubregistry claim is COMMIT-REVEAL. The two windows are
258
+ * contract constants (`MIN_COMMIT_AGE()` / `MAX_COMMIT_AGE()`); they are mirrored here so a client can schedule the
259
+ * reveal without a read, and a test pins them to the contract.
260
+ */
261
+ export const SUBREGISTRY_MIN_COMMIT_AGE_SECONDS = 10;
262
+ export const SUBREGISTRY_MAX_COMMIT_AGE_SECONDS = 86_400;
263
+ /** 32 fresh random bytes for one claim. The CLIENT keeps it between the commit and the reveal, and never sends it
264
+ * anywhere before the reveal — whoever learns it before the reveal can reveal for the same owner, nothing more
265
+ * (the commitment binds `newOwner`, so a copied secret never yields the name to anyone else). */
266
+ export function generateClaimSecret() {
267
+ return toHex(crypto.getRandomValues(new Uint8Array(32)));
268
+ }
269
+ /**
270
+ * The commitment `PermissionlessSubregistry.makeCommitment(label, newOwner, secret)` computes, off chain:
271
+ * `keccak256(abi.encode(subregistry, chainId, keccak256(bytes(label)), newOwner, secret))`. The label is normalized
272
+ * first — the reveal sends the normalized label, so the commitment must be over the same bytes.
273
+ */
274
+ export function subregistryCommitment(args) {
275
+ const label = normalizeLabel(args.label);
276
+ return keccak256(encodeAbiParameters([{ type: 'address' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'address' }, { type: 'bytes32' }], [args.subregistry, BigInt(args.chainId), keccak256(toBytes(label)), args.newOwner, args.secret]));
277
+ }
278
+ /**
279
+ * STEP 1 of a PermissionlessSubregistry claim: `commit(commitment)`. The label is NOT visible on chain until the
280
+ * reveal, so a watcher of the mempool cannot take the name first.
247
281
  *
248
- * Anti-spam: one claim per `msg.sender` is enforced on chain; the
249
- * call reverts with `AlreadyClaimed(existingNode)` if the caller
250
- * has previously claimed a name through this subregistry instance.
282
+ * THE WAITING PERIOD. The reveal (`buildSubregistryRegisterCall`, same label / owner / secret) must land in a LATER
283
+ * transaction at least `SUBREGISTRY_MIN_COMMIT_AGE_SECONDS` (10 s of chain time) after this one is mined, and no more
284
+ * than `SUBREGISTRY_MAX_COMMIT_AGE_SECONDS` (1 day) after it — too early reverts `CommitmentTooNew(commitment,
285
+ * matureAt)`, too late `CommitmentExpired`. Both calls therefore can NOT share one user operation or one batch: a
286
+ * flow that claimed a name in one transaction is now two, with a wait between. The commitment is single-use, and a
287
+ * live one cannot be re-committed (`CommitmentPending`); after it expires, commit again (a fresh secret is best).
288
+ *
289
+ * The label is validated here exactly as at the reveal (normalization + NAME-8), so a claim the reveal would refuse
290
+ * never spends a commit.
291
+ */
292
+ export function buildSubregistryCommitCall(args) {
293
+ const label = normalizeLabel(args.label);
294
+ assertClaimableLabel(label, { root: args.root ?? null });
295
+ assertSecret(args.secret);
296
+ const commitment = subregistryCommitment({ ...args, label });
297
+ return {
298
+ to: args.subregistry,
299
+ value: 0n,
300
+ data: encodeFunctionData({ abi: permissionlessSubregistryAbi, functionName: 'commit', args: [commitment] }),
301
+ commitment,
302
+ };
303
+ }
304
+ function assertSecret(secret) {
305
+ if (typeof secret !== 'string' || !/^0x[0-9a-fA-F]{64}$/.test(secret))
306
+ throw new Error('[agent-naming] a claim secret is 32 bytes (0x + 64 hex) — generateClaimSecret()');
307
+ if (/^0x0{64}$/.test(secret))
308
+ throw new Error('[agent-naming] a claim secret must not be zero — anyone could compute the commitment');
309
+ }
310
+ /**
311
+ * STEP 2 — the REVEAL: `register(label, newOwner, secret)` through a deployed PermissionlessSubregistry. It succeeds
312
+ * only against a MATURED commitment from `buildSubregistryCommitCall` with the same label, owner and secret (see the
313
+ * waiting period there). The caller pays gas; any account may send the reveal (a relayer) — the name goes to
314
+ * `newOwner`, which the commitment fixed.
315
+ *
316
+ * One reveal per `msg.sender` is enforced on chain (`AlreadyClaimed(existingNode)`) — a courtesy limit, not sybil
317
+ * resistance. The chain also refuses reserved labels (`ReservedLabel`) and, under a bare-host root, labels that read
318
+ * as a typed name (`LabelReadsAsTypedName`); the same rule is checked here first.
251
319
  */
252
320
  export function buildSubregistryRegisterCall(args) {
253
321
  // AN-1: normalize + reject on the WRITE path (homoglyph/case/zero-width squat defense).
254
322
  const label = normalizeLabel(args.label);
323
+ // NAME-8: reserved labels and (under a bare-host root) labels that read as a typed name are not claimable here.
324
+ assertClaimableLabel(label, { root: args.root ?? null });
325
+ assertSecret(args.secret);
255
326
  return {
256
327
  to: args.subregistry,
257
328
  value: 0n,
258
329
  data: encodeFunctionData({
259
330
  abi: permissionlessSubregistryAbi,
260
331
  functionName: 'register',
261
- args: [label, args.newOwner],
332
+ args: [label, args.newOwner, args.secret],
262
333
  }),
263
334
  };
264
335
  }
336
+ /**
337
+ * `renew(node, newExpiry)` — spec 445 / generation 4 / B2 (REG-6). Expiry is the PARENT's term: the caller MUST be
338
+ * the parent authority (the parent node's owner or its subregistry), never the name's holder. Extension only:
339
+ * `newExpiry` is `0` (make permanent) or later than both the current expiry and now, else `ExpiryNotExtended()`. A
340
+ * root has no parent and cannot be renewed. Every shipped path registers permanent names (expiry 0).
341
+ */
342
+ export function buildRenewNameCall(args) {
343
+ const newExpiry = BigInt(args.newExpiry);
344
+ if (newExpiry < 0n || newExpiry >= 1n << 64n)
345
+ throw new Error('[agent-naming] newExpiry is a uint64 (0 = permanent)');
346
+ return {
347
+ to: args.registry,
348
+ value: 0n,
349
+ data: encodeFunctionData({ abi: agentNameRegistryAbi, functionName: 'renew', args: [args.node, newExpiry] }),
350
+ };
351
+ }
265
352
  // ─── Typed naming (spec 346) ────────────────────────────────────────
266
353
  /**
267
354
  * Step 1b of the bootstrap (spec 346 §3.6): declare the SA's derived type on its OWN profile subject.
@@ -325,6 +412,11 @@ export function buildDeclareAgentTypeCalls(args) {
325
412
  * on the new node, and set the primary name. The caller MUST have run `validateTypedClaim` (or
326
413
  * `AgentNamingClient.checkTypedName`) — this builder only refuses a suffix/type disagreement it can see
327
414
  * locally. `setPrimaryName` requires `msg.sender == owner`; the subregistry claim may be sent by anyone.
415
+ *
416
+ * Spec 445 / generation 4 / B2 (REG-5): the claim is TWO transactions. Send `commit` first; after it is mined, wait
417
+ * at least `SUBREGISTRY_MIN_COMMIT_AGE_SECONDS` (and at most a day — see `buildSubregistryCommitCall`), then send
418
+ * `claim` (the reveal) followed by `records` and `primaryName`. `secret` is the client's (`generateClaimSecret()`),
419
+ * kept between the two; `chainId` is the subregistry's chain, part of the commitment.
328
420
  */
329
421
  export function buildTypedClaimCalls(args) {
330
422
  const p = parseAgentName(args.name);
@@ -338,13 +430,15 @@ export function buildTypedClaimCalls(args) {
338
430
  const subregistry = args.subregistries[p.handle.tld];
339
431
  if (!subregistry)
340
432
  throw new Error(`[agent-naming] no PermissionlessSubregistry configured for ".${p.handle.tld}"`);
341
- const claim = buildSubregistryRegisterCall({ subregistry, label: p.handle.label, newOwner: args.owner });
433
+ const claimArgs = { subregistry, label: p.handle.label, newOwner: args.owner, root: p.handle.tld, secret: args.secret };
434
+ const { commitment, ...commit } = buildSubregistryCommitCall({ ...claimArgs, chainId: args.chainId });
435
+ const claim = buildSubregistryRegisterCall(claimArgs);
342
436
  const records = buildRecordCalls({
343
437
  resolver: args.resolver,
344
438
  node: p.node,
345
439
  records: { ...(args.records ?? {}), addr: args.owner, agentKind: rootClassForDerivedType(args.agentType) },
346
440
  });
347
441
  const primaryName = buildSetPrimaryNameCall({ registry: args.registry, node: p.node });
348
- return { claim, records, primaryName, node: p.node };
442
+ return { commit, commitment, claim, records, primaryName, node: p.node };
349
443
  }
350
444
  //# sourceMappingURL=custody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custody.js","sourceRoot":"","sources":["../src/custody.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAsB,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAyB,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,gBAAgB,CAAC;AAUlE,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAOxC;IACC,wFAAwF;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE;gBACJ,IAAI,CAAC,UAAU;gBACf,KAAK;gBACL,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,IAAK,4CAAwD;gBAC1E,IAAI,CAAC,MAAM,IAAI,EAAE;aAClB;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAIxC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACjC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAI3C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;SACpC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAIvC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;SACpC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAGvC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SAClB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,sEAAsE;AAEtE,uEAAuE;AACvE,MAAM,UAAU,2BAA2B,CAAC,IAK3C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,6BAA6B;YAClC,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAKhD;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,6BAA6B;YAClC,YAAY,EAAE,yBAAyB;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAK5C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,6BAA6B;YAClC,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,4BAA4B,CAAC,IAK5C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,6BAA6B;YAClC,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,sEAAsE;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAIhC;IACC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC;YACpC,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,SAAsB,CAAC;SACrD,CAAC,CAAC,CAAC;IACN,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3H,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3H,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAChI,CAAC;IACD,IAAI,OAAO,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;IACtJ,CAAC;IACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAClI,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvH,CAAC;IACD,yHAAyH;IACzH,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7I,CAAC;IACD,mFAAmF;IACnF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5H,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AAEtE;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAI5C;IACC,wFAAwF;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,WAAW;QACpB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,4BAA4B;YACjC,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;SAC7B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,uEAAuE;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAW1C;IACC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,SAAS,4BAA4B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,kBAAkB,CAAC;gBACvB,GAAG,EAAE,2BAA2B;gBAChC,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;aAC3G,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,2BAA2B;YAChC,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1E,CAAC;KACH,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,kBAAkB,CAAC;gBACvB,GAAG,EAAE,2BAA2B;gBAChC,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;aAC/D,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,kBAAkB,CAAC;gBACvB,GAAG,EAAE,2BAA2B;gBAChC,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;aAC5D,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAQpC;IACC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,MAAO,CAAC,GAAG,WAAW,QAAQ,sBAAsB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAO,CAAC,GAAe,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC,MAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,4BAA4B,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,MAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1G,MAAM,OAAO,GAAG,gBAAgB,CAAC;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;KAC3G,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,uBAAuB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"custody.js","sourceRoot":"","sources":["../src/custody.ts"],"names":[],"mappings":"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"}