@agoric/vats 0.15.2-dev-3d662f8.0 → 0.15.2-dev-1cd6408.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agoric/vats",
3
- "version": "0.15.2-dev-3d662f8.0+3d662f8",
3
+ "version": "0.15.2-dev-1cd6408.0+1cd6408",
4
4
  "description": "Agoric's Vat library",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -22,18 +22,18 @@
22
22
  "author": "Agoric",
23
23
  "license": "Apache-2.0",
24
24
  "dependencies": {
25
- "@agoric/assert": "0.6.1-dev-3d662f8.0+3d662f8",
26
- "@agoric/ertp": "0.16.3-dev-3d662f8.0+3d662f8",
27
- "@agoric/governance": "0.10.4-dev-3d662f8.0+3d662f8",
28
- "@agoric/internal": "0.3.3-dev-3d662f8.0+3d662f8",
29
- "@agoric/network": "0.1.1-dev-3d662f8.0+3d662f8",
30
- "@agoric/notifier": "0.6.3-dev-3d662f8.0+3d662f8",
31
- "@agoric/store": "0.9.3-dev-3d662f8.0+3d662f8",
32
- "@agoric/swingset-vat": "0.32.3-dev-3d662f8.0+3d662f8",
33
- "@agoric/time": "0.3.3-dev-3d662f8.0+3d662f8",
34
- "@agoric/vat-data": "0.5.3-dev-3d662f8.0+3d662f8",
35
- "@agoric/zoe": "0.26.3-dev-3d662f8.0+3d662f8",
36
- "@agoric/zone": "0.2.3-dev-3d662f8.0+3d662f8",
25
+ "@agoric/assert": "0.6.1-dev-1cd6408.0+1cd6408",
26
+ "@agoric/ertp": "0.16.3-dev-1cd6408.0+1cd6408",
27
+ "@agoric/governance": "0.10.4-dev-1cd6408.0+1cd6408",
28
+ "@agoric/internal": "0.3.3-dev-1cd6408.0+1cd6408",
29
+ "@agoric/network": "0.1.1-dev-1cd6408.0+1cd6408",
30
+ "@agoric/notifier": "0.6.3-dev-1cd6408.0+1cd6408",
31
+ "@agoric/store": "0.9.3-dev-1cd6408.0+1cd6408",
32
+ "@agoric/swingset-vat": "0.32.3-dev-1cd6408.0+1cd6408",
33
+ "@agoric/time": "0.3.3-dev-1cd6408.0+1cd6408",
34
+ "@agoric/vat-data": "0.5.3-dev-1cd6408.0+1cd6408",
35
+ "@agoric/zoe": "0.26.3-dev-1cd6408.0+1cd6408",
36
+ "@agoric/zone": "0.2.3-dev-1cd6408.0+1cd6408",
37
37
  "@endo/far": "^1.0.4",
38
38
  "@endo/import-bundle": "^1.0.4",
39
39
  "@endo/marshal": "^1.3.0",
@@ -44,7 +44,7 @@
44
44
  "jessie.js": "^0.3.2"
45
45
  },
46
46
  "devDependencies": {
47
- "@agoric/swingset-liveslots": "0.10.3-dev-3d662f8.0+3d662f8",
47
+ "@agoric/swingset-liveslots": "0.10.3-dev-1cd6408.0+1cd6408",
48
48
  "@endo/bundle-source": "^3.1.0",
49
49
  "@endo/init": "^1.0.4",
50
50
  "ava": "^5.3.0",
@@ -77,5 +77,5 @@
77
77
  "typeCoverage": {
78
78
  "atLeast": 89.69
79
79
  },
80
- "gitHead": "3d662f8942693391430a675dad4e68b9867a5e89"
80
+ "gitHead": "1cd6408e27271160227f8aaa12d9771ea73a1da1"
81
81
  }
package/src/ibc.d.ts CHANGED
@@ -17,7 +17,7 @@ export function prepareIBCProtocol(zone: import('@agoric/base-zone').Zone, power
17
17
  isRetryableReason?: ((reason: any) => boolean) | undefined;
18
18
  watchPromise?: ((p: PromiseLike<any>, watcher: import("@agoric/vow/src/watch-promise.js").PromiseWatcher, ...args: unknown[]) => void) | undefined;
19
19
  } | undefined) => {
20
- when: <T = any, TResult1 = import("@agoric/vow/src/E.js").Unwrap<T>, TResult2 = never>(specimenP: T, onFulfilled?: ((value: import("@agoric/vow/src/E.js").Unwrap<T>) => TResult1 | PromiseLike<TResult1>) | undefined, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined) => Promise<TResult1 | TResult2>;
20
+ when: <T, TResult1 = import("@agoric/vow").Unwrap<T>, TResult2 = never>(specimenP: T, onFulfilled?: ((value: import("@agoric/vow").Unwrap<T>) => TResult1 | PromiseLike<TResult1>) | undefined, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined) => Promise<TResult1 | TResult2>;
21
21
  watch: <T_1 = any, TResult1_1 = T_1, TResult2_1 = T_1>(specimenP: import("@agoric/vow").ERef<T_1 | import("@agoric/vow").Vow<T_1>>, watcher?: import("@agoric/vow").Watcher<T_1, TResult1_1, TResult2_1> | undefined, watcherContext?: unknown) => import("@agoric/vow").Vow<TResult1_1 | TResult2_1>;
22
22
  makeVowKit: <T_2>() => import("@agoric/vow").VowKit<T_2>;
23
23
  allVows: (vows: any) => import("@agoric/vow").Vow<any>;
package/src/ibc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ibc.d.ts","sourceRoot":"","sources":["ibc.js"],"names":[],"mappings":"AA2DO,kDADK,OAAO,mBAAmB,EAAE,IAAI;;IA+CtC;;;;;;;OAOG;qBANQ,UAAU,eACV,KAAK,YACL,iBAAiB;QAEF,iBAAiB;QAC9B,WAAW,KAAK,CAAC;;GA6CnC;AAMM,yCAHI,OAAO,mBAAmB,EAAE,IAAI,UAChC;;;;;;;;EAAiD;qBAgBlC,eAAe;mBACjB,aAAa;;;;;;;;;;;;;;;EA6lBpC;AAKM,uCADK,OAAO,mBAAmB,EAAE,IAAI;;GAkB3C;4BAnxBa,OAAO,YAAY,EAAE,aAAa;wBAGnC,MAAM;2BAEN,MAAM;8BAEN,MAAM;;;oBAML,YAAY;iBACZ,SAAS;yBACT,YAAY;sBACZ,SAAS;;;aAKT,MAAM;gBACN,MAAM;;;WAGN,SAAS,GAAG,WAAW;oBACvB,MAAM,EAAE;YACR,MAAM;eACN,MAAM;kBACN,YAAY;aACZ,MAAM;;yBAEP,OAAO,aAAa,EAAE,MAAM,CAAC,kBAAkB,CAAC;uBAEhD,KAAK,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC,GAAG;IACjE,SAAa,EAAE,QAAQ,CAAC;IACxB,UAAc,EAAE,UAAU,CAAC;IAC3B,YAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC"}
1
+ {"version":3,"file":"ibc.d.ts","sourceRoot":"","sources":["ibc.js"],"names":[],"mappings":"AA2DO,kDADK,OAAO,mBAAmB,EAAE,IAAI;;IA+CtC;;;;;;;OAOG;qBANQ,UAAU,eACV,KAAK,YACL,iBAAiB;QAEF,iBAAiB;QAC9B,WAAW,KAAK,CAAC;;GA6CnC;AAMM,yCAHI,OAAO,mBAAmB,EAAE,IAAI,UAChC;;;;;;;;EAAiD;qBAgBlC,eAAe;mBACjB,aAAa;;;;;;;;;;;;;;;EAqmBpC;AAKM,uCADK,OAAO,mBAAmB,EAAE,IAAI;;GAkB3C;4BA3xBa,OAAO,YAAY,EAAE,aAAa;wBAGnC,MAAM;2BAEN,MAAM;8BAEN,MAAM;;;oBAML,YAAY;iBACZ,SAAS;yBACT,YAAY;sBACZ,SAAS;;;aAKT,MAAM;gBACN,MAAM;;;WAGN,SAAS,GAAG,WAAW;oBACvB,MAAM,EAAE;YACR,MAAM;eACN,MAAM;kBACN,YAAY;aACZ,MAAM;;yBAEP,OAAO,aAAa,EAAE,MAAM,CAAC,kBAAkB,CAAC;uBAEhD,KAAK,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC,GAAG;IACjE,SAAa,EAAE,QAAQ,CAAC;IACxB,UAAc,EAAE,UAAU,CAAC;IAC3B,YAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC"}
package/src/ibc.js CHANGED
@@ -12,8 +12,8 @@ import '@agoric/network/exported.js';
12
12
  // empty acknowledgements as distinct from unacknowledged packets.
13
13
  const DEFAULT_ACKNOWLEDGEMENT = '\x00';
14
14
 
15
- // Default timeout after 10 minutes.
16
- const DEFAULT_PACKET_TIMEOUT_NS = 10n * 60n * 1_000_000_000n;
15
+ // Default timeout after 60 minutes.
16
+ const DEFAULT_PACKET_TIMEOUT_NS = 60n * 60n * 1_000_000_000n;
17
17
 
18
18
  /** @typedef {import('./types.js').BridgeHandler} BridgeHandler */
19
19
 
@@ -194,13 +194,18 @@ export const prepareIBCProtocol = (zone, powers) => {
194
194
  'IBCProtocolHandler',
195
195
  undefined,
196
196
  ibcdev => {
197
- /** @type {MapStore<string, Connection>} */
197
+ /** @type {MapStore<string, import('@agoric/vow').Remote<Connection>>} */
198
198
  const channelKeyToConnP = detached.mapStore('channelKeyToConnP');
199
199
 
200
200
  /** @type {MapStore<string, ConnectingInfo>} */
201
201
  const channelKeyToInfo = detached.mapStore('channelKeyToInfo');
202
202
 
203
- /** @type {MapStore<string, InboundAttempt>} */
203
+ /**
204
+ * @type {MapStore<
205
+ * string,
206
+ * import('@agoric/vow').Remote<InboundAttempt>
207
+ * >}
208
+ */
204
209
  const channelKeyToAttempt = detached.mapStore('channelKeyToAttempt');
205
210
 
206
211
  /** @type {MapStore<string, Outbound[]>} */
@@ -230,8 +235,9 @@ export const prepareIBCProtocol = (zone, powers) => {
230
235
  srcPortToOutbounds,
231
236
  channelKeyToSeqAck,
232
237
  portToPendingConns,
233
- lastPortID: 0, // Nonce for creating port identifiers.
234
- /** @type {ProtocolImpl | undefined} */ protocolImpl: undefined,
238
+ lastPortID: 0n, // Nonce for creating port identifiers.
239
+ /** @type {import('@agoric/vow').Remote<ProtocolImpl> | null} */
240
+ protocolImpl: null,
235
241
  };
236
242
  },
237
243
  {
@@ -245,7 +251,7 @@ export const prepareIBCProtocol = (zone, powers) => {
245
251
  return '';
246
252
  },
247
253
  async generatePortID(_localAddr, _protocolHandler) {
248
- this.state.lastPortID += 1;
254
+ this.state.lastPortID += 1n;
249
255
  return `port-${this.state.lastPortID}`;
250
256
  },
251
257
  async onBind(port, localAddr, _protocolHandler) {
@@ -315,7 +321,10 @@ export const prepareIBCProtocol = (zone, powers) => {
315
321
  onConnectP: kit,
316
322
  localAddr,
317
323
  };
318
- if (!srcPortToOutbounds.has(portID)) {
324
+ if (srcPortToOutbounds.has(portID)) {
325
+ const outbounds = srcPortToOutbounds.get(portID);
326
+ srcPortToOutbounds.set(portID, harden([...outbounds, ob]));
327
+ } else {
319
328
  srcPortToOutbounds.init(portID, harden([ob]));
320
329
  }
321
330
 
@@ -426,11 +435,10 @@ export const prepareIBCProtocol = (zone, powers) => {
426
435
  // e => console.warn('Manual packet', e, 'failed:', e),
427
436
  // );
428
437
 
438
+ assert(protocolImpl);
439
+
429
440
  return watch(
430
- /** @type {ProtocolImpl} */ (protocolImpl).inbound(
431
- localAddr,
432
- remoteAddr,
433
- ),
441
+ E(protocolImpl).inbound(localAddr, remoteAddr),
434
442
  this.facets.protocolImplInboundWatcher,
435
443
  {
436
444
  obj,
@@ -556,7 +564,7 @@ export const prepareIBCProtocol = (zone, powers) => {
556
564
  const conn = channelKeyToConnP.get(channelKey);
557
565
  const data = base64ToBytes(data64);
558
566
 
559
- return watch(conn.send(data), this.facets.ackWatcher, {
567
+ return watch(E(conn).send(data), this.facets.ackWatcher, {
560
568
  packet,
561
569
  });
562
570
  }
@@ -592,7 +600,7 @@ export const prepareIBCProtocol = (zone, powers) => {
592
600
  if (channelKeyToConnP.has(channelKey)) {
593
601
  const conn = channelKeyToConnP.get(channelKey);
594
602
  channelKeyToConnP.delete(channelKey);
595
- void conn.close();
603
+ void E(conn).close();
596
604
  }
597
605
  break;
598
606
  }
@@ -664,7 +672,7 @@ export const prepareIBCProtocol = (zone, powers) => {
664
672
  return seqToAck.get(sequence);
665
673
  }
666
674
  const kit = makeVowKit();
667
- seqToAck.init(sequence, harden(kit));
675
+ seqToAck.init(sequence, kit);
668
676
  return kit;
669
677
  },
670
678
  },
@@ -1 +1 @@
1
- {"version":3,"file":"network-proposal.d.ts","sourceRoot":"","sources":["network-proposal.js"],"names":[],"mappings":"AAiBO,+CAHI,QAAQ,GAAG,OAAO,kGAoC5B;AAqCM,gOAhBI,eAAe,GAAG;IAC5B,OAAW,EAAE;QAAE,eAAe,EAAE,UAAU,GAAG,CAAC,CAAA;KAAE,CAAC;IACjD,OAAW,EAAE;QAAE,UAAU,EAAE,SAAS,GAAG,CAAC,CAAA;KAAE,CAAC;CACxC;;oBAEqB,YAAY;gBAAU,YAAY;;kBAiF1D;AAEM;;;;;;;;;;;;;;;;;;;;;;;;;EAsBL;;;;;;;;;;;;;;;;;;;;iCAtGmB,SAAS,KAAK,UAAU,YAAY,KAAK,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;sBAE5D;IACZ,OAAW,EAAE,KAAK,UAAU,CAAC,CAAC;IAC9B,GAAO,EAAE,KAAK,MAAM,CAAC,CAAC;IACtB,YAAgB,EAAE,KAAK,eAAe,GAAG,SAAS,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"network-proposal.d.ts","sourceRoot":"","sources":["network-proposal.js"],"names":[],"mappings":"AAoBO,+CAHI,QAAQ,GAAG,OAAO,kGAuC5B;AAqCM,gOAhBI,eAAe,GAAG;IAC5B,OAAW,EAAE;QAAE,eAAe,EAAE,UAAU,GAAG,CAAC,CAAA;KAAE,CAAC;IACjD,OAAW,EAAE;QAAE,UAAU,EAAE,SAAS,GAAG,CAAC,CAAA;KAAE,CAAC;CACxC;;oBAEqB,YAAY;gBAAU,YAAY;;kBA4E1D;AAEM;;;;;;;;;;;;;;;;;;;;;;;;;EAsBL;;;;;;;;;;;;;;;;;;;;iCAjGmB,SAAS,KAAK,UAAU,YAAY,KAAK,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;sBAE5D;IACZ,OAAW,EAAE,KAAK,UAAU,CAAC,CAAC;IAC9B,GAAO,EAAE,KAAK,MAAM,CAAC,CAAC;IACtB,YAAgB,EAAE,KAAK,eAAe,GAAG,SAAS,CAAC,CAAC;CACjD"}
@@ -4,10 +4,13 @@
4
4
  */
5
5
  import { E } from '@endo/far';
6
6
  import { BridgeId as BRIDGE_ID } from '@agoric/internal';
7
- import { prepareVowTools } from '@agoric/vat-data/vow.js';
8
- import { makeHeapZone } from '@agoric/zone';
7
+
9
8
  import { makeScalarBigMapStore } from '@agoric/vat-data';
10
9
 
10
+ // Heap-based vow resolution is used for this module because the
11
+ // bootstrap vat can't yet be upgraded.
12
+ import { when } from '@agoric/vat-data/vow.js';
13
+
11
14
  const NUM_IBC_PORTS_PER_CLIENT = 3;
12
15
  const INTERCHAIN_ACCOUNT_CONTROLLER_PORT_PREFIX = 'icacontroller-';
13
16
 
@@ -16,9 +19,12 @@ const INTERCHAIN_ACCOUNT_CONTROLLER_PORT_PREFIX = 'icacontroller-';
16
19
  * @param {ERef<import('../types.js').ScopedBridgeManager>} [dibcBridgeManager]
17
20
  */
18
21
  export const registerNetworkProtocols = async (vats, dibcBridgeManager) => {
22
+ /** @type {Promise<void>[]} */
19
23
  const ps = [];
20
24
 
21
- const loopbackHandler = await E(vats.network).makeLoopbackProtocolHandler();
25
+ const loopbackHandler = /** @type {Remote<ProtocolHandler>} */ (
26
+ await E(vats.network).makeLoopbackProtocolHandler()
27
+ );
22
28
  // Every vat has a loopback device.
23
29
  ps.push(E(vats.network).registerProtocolHandler(['/local'], loopbackHandler));
24
30
 
@@ -42,8 +48,8 @@ export const registerNetworkProtocols = async (vats, dibcBridgeManager) => {
42
48
  ),
43
49
  );
44
50
  } else {
45
- const loHandler = await E(vats.network).makeLoopbackProtocolHandler(
46
- 'ibc-channel/channel-',
51
+ const loHandler = /** @type {Remote<ProtocolHandler>} */ (
52
+ await E(vats.network).makeLoopbackProtocolHandler('ibc-channel/channel-')
47
53
  );
48
54
  ps.push(E(vats.network).registerProtocolHandler(['/ibc-port'], loHandler));
49
55
  }
@@ -134,7 +140,7 @@ export const setupNetworkProtocols = async (
134
140
  lastICAPort += 1;
135
141
  bindAddr += `${INTERCHAIN_ACCOUNT_CONTROLLER_PORT_PREFIX}${lastICAPort}`;
136
142
  }
137
- const port = E(vats.network).bind(bindAddr);
143
+ const port = when(E(vats.network).bind(bindAddr));
138
144
  ibcportP.push(port);
139
145
  }
140
146
  return Promise.all(ibcportP);
@@ -145,15 +151,10 @@ export const setupNetworkProtocols = async (
145
151
  // ibc-port etc.
146
152
  await registerNetworkProtocols(vats, dibcBridgeManager);
147
153
 
148
- // Heap-based vow resolution is used for this module because the
149
- // bootstrap vat can't yet be upgraded.
150
- const powers = prepareVowTools(makeHeapZone());
151
-
152
- const { when } = powers;
153
154
  // Add an echo listener on our ibc-port network (whether real or virtual).
154
155
  const echoPort = await when(E(vats.network).bind('/ibc-port/echo'));
155
156
  const { listener } = await E(vats.network).makeEchoConnectionKit();
156
- await E(echoPort).addListener(listener);
157
+ await when(E(echoPort).addListener(listener));
157
158
  return E(client).assignBundle([_a => ({ ibcport: makePorts() })]);
158
159
  };
159
160
 
@@ -3,10 +3,10 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
3
3
  onCreate(_impl: any, _protocolHandler: any): Promise<void>;
4
4
  generatePortID(_localAddr: any, _protocolHandler: any): Promise<string>;
5
5
  onBind(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
6
- onConnect(_port: any, localAddr: any, remoteAddr: any, _chandler: any, protocolHandler: any): Promise<import("@agoric/vow").Vow<any>>;
6
+ onConnect(_port: any, localAddr: string, remoteAddr: string): PromiseVow<AttemptDescription>;
7
7
  onInstantiate(_port: any, _localAddr: any, _remote: any, _protocol: any): Promise<string>;
8
8
  onListen(port: any, localAddr: any, listenHandler: any, _protocolHandler: any): Promise<void>;
9
- onListenRemove(port: Port, localAddr: string, listenHandler: ListenHandler, _protocolHandler: any): Promise<void>;
9
+ onListenRemove(port: Remote<Port>, localAddr: string, listenHandler: Remote<ListenHandler>, _protocolHandler: any): Promise<void>;
10
10
  onRevoke(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
11
11
  }>;
12
12
  makeEchoConnectionKit: () => import("@endo/exo/src/exo-makers").GuardedKit<{
@@ -23,9 +23,9 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
23
23
  };
24
24
  }>;
25
25
  /** @param {Parameters<typeof protocol.registerProtocolHandler>} args */
26
- registerProtocolHandler: (paths: string[], protocolHandler: ProtocolHandler) => void;
26
+ registerProtocolHandler: (paths: string[], protocolHandler: Remote<ProtocolHandler>) => void;
27
27
  /** @param {Parameters<typeof protocol.unregisterProtocolHandler>} args */
28
- unregisterProtocolHandler: (prefix: string, protocolHandler: ProtocolHandler) => void;
28
+ unregisterProtocolHandler: (prefix: string, protocolHandler: Remote<ProtocolHandler>) => void;
29
29
  /** @param {Parameters<typeof protocol.bind>} args */
30
30
  bind: (localAddr: string) => Promise<Port | import("@agoric/vow").Vow<Port>>;
31
31
  } & import("@endo/eventual-send").RemotableBrand<{}, {
@@ -33,10 +33,10 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
33
33
  onCreate(_impl: any, _protocolHandler: any): Promise<void>;
34
34
  generatePortID(_localAddr: any, _protocolHandler: any): Promise<string>;
35
35
  onBind(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
36
- onConnect(_port: any, localAddr: any, remoteAddr: any, _chandler: any, protocolHandler: any): Promise<import("@agoric/vow").Vow<any>>;
36
+ onConnect(_port: any, localAddr: string, remoteAddr: string): PromiseVow<AttemptDescription>;
37
37
  onInstantiate(_port: any, _localAddr: any, _remote: any, _protocol: any): Promise<string>;
38
38
  onListen(port: any, localAddr: any, listenHandler: any, _protocolHandler: any): Promise<void>;
39
- onListenRemove(port: Port, localAddr: string, listenHandler: ListenHandler, _protocolHandler: any): Promise<void>;
39
+ onListenRemove(port: Remote<Port>, localAddr: string, listenHandler: Remote<ListenHandler>, _protocolHandler: any): Promise<void>;
40
40
  onRevoke(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
41
41
  }>;
42
42
  makeEchoConnectionKit: () => import("@endo/exo/src/exo-makers").GuardedKit<{
@@ -53,9 +53,9 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
53
53
  };
54
54
  }>;
55
55
  /** @param {Parameters<typeof protocol.registerProtocolHandler>} args */
56
- registerProtocolHandler: (paths: string[], protocolHandler: ProtocolHandler) => void;
56
+ registerProtocolHandler: (paths: string[], protocolHandler: Remote<ProtocolHandler>) => void;
57
57
  /** @param {Parameters<typeof protocol.unregisterProtocolHandler>} args */
58
- unregisterProtocolHandler: (prefix: string, protocolHandler: ProtocolHandler) => void;
58
+ unregisterProtocolHandler: (prefix: string, protocolHandler: Remote<ProtocolHandler>) => void;
59
59
  /** @param {Parameters<typeof protocol.bind>} args */
60
60
  bind: (localAddr: string) => Promise<Port | import("@agoric/vow").Vow<Port>>;
61
61
  }>;