@helia/interface 0.0.0-270bb98 → 0.0.0-7460719

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.
@@ -0,0 +1,104 @@
1
+ import type { AbortOptions } from '@libp2p/interfaces';
2
+ import type { ProgressEvent, ProgressOptions } from 'progress-events';
3
+ import type { CID } from 'multiformats/cid';
4
+ import type { BitswapNotifyProgressEvents, BitswapWantProgressEvents } from 'ipfs-bitswap';
5
+ import type { AwaitIterable } from './index.js';
6
+ export interface Pair {
7
+ cid: CID;
8
+ block: Uint8Array;
9
+ }
10
+ export type PutBlockProgressEvents = ProgressEvent<'blocks:put:duplicate', CID> | ProgressEvent<'blocks:put:bitswap:notify', CID> | ProgressEvent<'blocks:put:blockstore:put', CID> | BitswapNotifyProgressEvents;
11
+ export type PutManyBlocksProgressEvents = ProgressEvent<'blocks:put-many:duplicate', CID> | ProgressEvent<'blocks:put-many:bitswap:notify', CID> | ProgressEvent<'blocks:put-many:blockstore:put-many'> | BitswapNotifyProgressEvents;
12
+ export type GetBlockProgressEvents = ProgressEvent<'blocks:get:bitswap:want', CID> | ProgressEvent<'blocks:get:blockstore:get', CID> | ProgressEvent<'blocks:get:blockstore:put', CID> | BitswapWantProgressEvents;
13
+ export type GetManyBlocksProgressEvents = ProgressEvent<'blocks:get-many:blockstore:get-many'> | ProgressEvent<'blocks:get-many:bitswap:want', CID> | ProgressEvent<'blocks:get-many:blockstore:put', CID> | BitswapWantProgressEvents;
14
+ export type DeleteBlockProgressEvents = ProgressEvent<'blocks:delete:blockstore:delete', CID>;
15
+ export type DeleteManyBlocksProgressEvents = ProgressEvent<'blocks:delete-many:blockstore:delete-many'>;
16
+ export interface Blocks {
17
+ /**
18
+ * Store the passed block under the passed CID
19
+ *
20
+ * @example
21
+ *
22
+ * ```js
23
+ * await store.put([{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }])
24
+ * ```
25
+ */
26
+ put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions<PutBlockProgressEvents>) => Promise<void>;
27
+ /**
28
+ * Retrieve the value stored under the given key
29
+ *
30
+ * @example
31
+ * ```js
32
+ * const value = await store.get(new Key('awesome'))
33
+ * console.log('got content: %s', value.toString('utf8'))
34
+ * // => got content: datastore
35
+ * ```
36
+ */
37
+ get: (key: CID, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>) => Promise<Uint8Array>;
38
+ /**
39
+ * Check for the existence of a value for the passed key
40
+ *
41
+ * @example
42
+ * ```js
43
+ *const exists = await store.has(new Key('awesome'))
44
+ *
45
+ *if (exists) {
46
+ * console.log('it is there')
47
+ *} else {
48
+ * console.log('it is not there')
49
+ *}
50
+ *```
51
+ */
52
+ has: (key: CID, options?: AbortOptions) => Promise<boolean>;
53
+ /**
54
+ * Remove the record for the passed key
55
+ *
56
+ * @example
57
+ *
58
+ * ```js
59
+ * await store.delete(new Key('awesome'))
60
+ * console.log('deleted awesome content :(')
61
+ * ```
62
+ */
63
+ delete: (key: CID, options?: AbortOptions & ProgressOptions<DeleteBlockProgressEvents>) => Promise<void>;
64
+ /**
65
+ * Store the given key/value pairs
66
+ *
67
+ * @example
68
+ * ```js
69
+ * const source = [{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }]
70
+ *
71
+ * for await (const { key, value } of store.putMany(source)) {
72
+ * console.info(`put content for key ${key}`)
73
+ * }
74
+ * ```
75
+ */
76
+ putMany: (source: AwaitIterable<Pair>, options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>) => AsyncIterable<Pair>;
77
+ /**
78
+ * Retrieve values for the passed keys
79
+ *
80
+ * @example
81
+ * ```js
82
+ * for await (const value of store.getMany([new Key('awesome')])) {
83
+ * console.log('got content:', new TextDecoder('utf8').decode(value))
84
+ * // => got content: datastore
85
+ * }
86
+ * ```
87
+ */
88
+ getMany: (source: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<GetManyBlocksProgressEvents>) => AsyncIterable<Uint8Array>;
89
+ /**
90
+ * Remove values for the passed keys
91
+ *
92
+ * @example
93
+ *
94
+ * ```js
95
+ * const source = [new Key('awesome')]
96
+ *
97
+ * for await (const key of store.deleteMany(source)) {
98
+ * console.log(`deleted content with key ${key}`)
99
+ * }
100
+ * ```
101
+ */
102
+ deleteMany: (source: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>) => AsyncIterable<CID>;
103
+ }
104
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":""}
@@ -14,14 +14,14 @@
14
14
  * ```
15
15
  */
16
16
  import type { Libp2p } from '@libp2p/interface-libp2p';
17
- import type { Blockstore } from 'interface-blockstore';
18
17
  import type { AbortOptions } from '@libp2p/interfaces';
19
18
  import type { PeerId } from '@libp2p/interface-peer-id';
20
- import type { Multiaddr } from '@multiformats/multiaddr';
21
19
  import type { Datastore } from 'interface-datastore';
22
20
  import type { Pins } from './pins.js';
23
21
  import type { ProgressEvent, ProgressOptions } from 'progress-events';
24
22
  import type { CID } from 'multiformats/cid';
23
+ import type { Blocks } from './blocks.js';
24
+ export type AwaitIterable<T> = Iterable<T> | AsyncIterable<T>;
25
25
  /**
26
26
  * The API presented by a Helia node.
27
27
  */
@@ -33,7 +33,7 @@ export interface Helia {
33
33
  /**
34
34
  * Where the blocks are stored
35
35
  */
36
- blockstore: Blockstore;
36
+ blockstore: Blocks;
37
37
  /**
38
38
  * A key/value store
39
39
  */
@@ -42,21 +42,6 @@ export interface Helia {
42
42
  * Pinning operations for blocks in the blockstore
43
43
  */
44
44
  pins: Pins;
45
- /**
46
- * Returns information about this node
47
- *
48
- * @example
49
- *
50
- * ```typescript
51
- * import { createHelia } from 'helia'
52
- *
53
- * const node = await createHelia()
54
- * const id = await node.info()
55
- * console.info(id)
56
- * // { peerId: PeerId(12D3Foo), ... }
57
- * ```
58
- */
59
- info: (options?: InfoOptions) => Promise<InfoResponse>;
60
45
  /**
61
46
  * Starts the Helia node
62
47
  */
@@ -70,7 +55,7 @@ export interface Helia {
70
55
  */
71
56
  gc: (options?: GCOptions) => Promise<void>;
72
57
  }
73
- export type GcEvents = ProgressEvent<'helia:gc:deleted', CID>;
58
+ export type GcEvents = ProgressEvent<'helia:gc:deleted', CID> | ProgressEvent<'helia:gc:error', Error>;
74
59
  export interface GCOptions extends AbortOptions, ProgressOptions<GcEvents> {
75
60
  }
76
61
  export interface InfoOptions extends AbortOptions {
@@ -80,30 +65,4 @@ export interface InfoOptions extends AbortOptions {
80
65
  */
81
66
  peerId?: PeerId;
82
67
  }
83
- export interface InfoResponse {
84
- /**
85
- * The ID of the peer this info is about
86
- */
87
- peerId: PeerId;
88
- /**
89
- * The multiaddrs the peer is listening on
90
- */
91
- multiaddrs: Multiaddr[];
92
- /**
93
- * The peer's reported agent version
94
- */
95
- agentVersion: string;
96
- /**
97
- * The peer's reported protocol version
98
- */
99
- protocolVersion: string;
100
- /**
101
- * The protocols the peer supports
102
- */
103
- protocols: string[];
104
- /**
105
- * The status of the node
106
- */
107
- status: 'running' | 'stopped';
108
- }
109
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;OAEG;IACH,IAAI,EAAE,IAAI,CAAA;IAEV;;;;;;;;;;;;;OAaG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAEtD;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzB;;OAEG;IACH,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,MAAM,QAAQ,GAClB,aAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAExC,MAAM,WAAW,SAAU,SAAQ,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC;CAEzE;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAA;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAA;IAEnB;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAC9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;OAEG;IACH,IAAI,EAAE,IAAI,CAAA;IAEV;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzB;;OAEG;IACH,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,MAAM,QAAQ,GAClB,aAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,GACtC,aAAa,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;AAExC,MAAM,WAAW,SAAU,SAAQ,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC;CAEzE;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/interface",
3
- "version": "0.0.0-270bb98",
3
+ "version": "0.0.0-7460719",
4
4
  "description": "The Helia API",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/master/packages/interface#readme",
@@ -47,6 +47,10 @@
47
47
  "types": "./dist/src/index.d.ts",
48
48
  "import": "./dist/src/index.js"
49
49
  },
50
+ "./blocks": {
51
+ "types": "./dist/src/blocks.d.ts",
52
+ "import": "./dist/src/blocks.js"
53
+ },
50
54
  "./pins": {
51
55
  "types": "./dist/src/pins.d.ts",
52
56
  "import": "./dist/src/pins.js"
@@ -154,9 +158,8 @@
154
158
  "@libp2p/interface-libp2p": "^1.1.0",
155
159
  "@libp2p/interface-peer-id": "^2.0.1",
156
160
  "@libp2p/interfaces": "^3.3.1",
157
- "@multiformats/multiaddr": "^11.1.5",
158
- "interface-blockstore": "^4.0.1",
159
- "interface-datastore": "^7.0.3",
161
+ "interface-datastore": "^8.0.0",
162
+ "ipfs-bitswap": "^17.0.0",
160
163
  "multiformats": "^11.0.1",
161
164
  "progress-events": "^1.0.0"
162
165
  },
package/src/blocks.ts ADDED
@@ -0,0 +1,144 @@
1
+ import type { AbortOptions } from '@libp2p/interfaces'
2
+ import type { ProgressEvent, ProgressOptions } from 'progress-events'
3
+ import type { CID } from 'multiformats/cid'
4
+ import type { BitswapNotifyProgressEvents, BitswapWantProgressEvents } from 'ipfs-bitswap'
5
+ import type { AwaitIterable } from './index.js'
6
+
7
+ export interface Pair {
8
+ cid: CID
9
+ block: Uint8Array
10
+ }
11
+
12
+ export type PutBlockProgressEvents =
13
+ ProgressEvent<'blocks:put:duplicate', CID> |
14
+ ProgressEvent<'blocks:put:bitswap:notify', CID> |
15
+ ProgressEvent<'blocks:put:blockstore:put', CID> |
16
+ BitswapNotifyProgressEvents
17
+
18
+ export type PutManyBlocksProgressEvents =
19
+ ProgressEvent<'blocks:put-many:duplicate', CID> |
20
+ ProgressEvent<'blocks:put-many:bitswap:notify', CID> |
21
+ ProgressEvent<'blocks:put-many:blockstore:put-many'> |
22
+ BitswapNotifyProgressEvents
23
+
24
+ export type GetBlockProgressEvents =
25
+ ProgressEvent<'blocks:get:bitswap:want', CID> |
26
+ ProgressEvent<'blocks:get:blockstore:get', CID> |
27
+ ProgressEvent<'blocks:get:blockstore:put', CID> |
28
+ BitswapWantProgressEvents
29
+
30
+ export type GetManyBlocksProgressEvents =
31
+ ProgressEvent<'blocks:get-many:blockstore:get-many'> |
32
+ ProgressEvent<'blocks:get-many:bitswap:want', CID> |
33
+ ProgressEvent<'blocks:get-many:blockstore:put', CID> |
34
+ BitswapWantProgressEvents
35
+
36
+ export type DeleteBlockProgressEvents =
37
+ ProgressEvent<'blocks:delete:blockstore:delete', CID>
38
+
39
+ export type DeleteManyBlocksProgressEvents =
40
+ ProgressEvent<'blocks:delete-many:blockstore:delete-many'>
41
+
42
+ export interface Blocks {
43
+ /**
44
+ * Store the passed block under the passed CID
45
+ *
46
+ * @example
47
+ *
48
+ * ```js
49
+ * await store.put([{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }])
50
+ * ```
51
+ */
52
+ put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions<PutBlockProgressEvents>) => Promise<void>
53
+
54
+ /**
55
+ * Retrieve the value stored under the given key
56
+ *
57
+ * @example
58
+ * ```js
59
+ * const value = await store.get(new Key('awesome'))
60
+ * console.log('got content: %s', value.toString('utf8'))
61
+ * // => got content: datastore
62
+ * ```
63
+ */
64
+ get: (key: CID, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>) => Promise<Uint8Array>
65
+
66
+ /**
67
+ * Check for the existence of a value for the passed key
68
+ *
69
+ * @example
70
+ * ```js
71
+ *const exists = await store.has(new Key('awesome'))
72
+ *
73
+ *if (exists) {
74
+ * console.log('it is there')
75
+ *} else {
76
+ * console.log('it is not there')
77
+ *}
78
+ *```
79
+ */
80
+ has: (key: CID, options?: AbortOptions) => Promise<boolean>
81
+
82
+ /**
83
+ * Remove the record for the passed key
84
+ *
85
+ * @example
86
+ *
87
+ * ```js
88
+ * await store.delete(new Key('awesome'))
89
+ * console.log('deleted awesome content :(')
90
+ * ```
91
+ */
92
+ delete: (key: CID, options?: AbortOptions & ProgressOptions<DeleteBlockProgressEvents>) => Promise<void>
93
+
94
+ /**
95
+ * Store the given key/value pairs
96
+ *
97
+ * @example
98
+ * ```js
99
+ * const source = [{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }]
100
+ *
101
+ * for await (const { key, value } of store.putMany(source)) {
102
+ * console.info(`put content for key ${key}`)
103
+ * }
104
+ * ```
105
+ */
106
+ putMany: (
107
+ source: AwaitIterable<Pair>,
108
+ options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>
109
+ ) => AsyncIterable<Pair>
110
+
111
+ /**
112
+ * Retrieve values for the passed keys
113
+ *
114
+ * @example
115
+ * ```js
116
+ * for await (const value of store.getMany([new Key('awesome')])) {
117
+ * console.log('got content:', new TextDecoder('utf8').decode(value))
118
+ * // => got content: datastore
119
+ * }
120
+ * ```
121
+ */
122
+ getMany: (
123
+ source: AwaitIterable<CID>,
124
+ options?: AbortOptions & ProgressOptions<GetManyBlocksProgressEvents>
125
+ ) => AsyncIterable<Uint8Array>
126
+
127
+ /**
128
+ * Remove values for the passed keys
129
+ *
130
+ * @example
131
+ *
132
+ * ```js
133
+ * const source = [new Key('awesome')]
134
+ *
135
+ * for await (const key of store.deleteMany(source)) {
136
+ * console.log(`deleted content with key ${key}`)
137
+ * }
138
+ * ```
139
+ */
140
+ deleteMany: (
141
+ source: AwaitIterable<CID>,
142
+ options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>
143
+ ) => AsyncIterable<CID>
144
+ }
package/src/index.ts CHANGED
@@ -15,14 +15,15 @@
15
15
  */
16
16
 
17
17
  import type { Libp2p } from '@libp2p/interface-libp2p'
18
- import type { Blockstore } from 'interface-blockstore'
19
18
  import type { AbortOptions } from '@libp2p/interfaces'
20
19
  import type { PeerId } from '@libp2p/interface-peer-id'
21
- import type { Multiaddr } from '@multiformats/multiaddr'
22
20
  import type { Datastore } from 'interface-datastore'
23
21
  import type { Pins } from './pins.js'
24
22
  import type { ProgressEvent, ProgressOptions } from 'progress-events'
25
23
  import type { CID } from 'multiformats/cid'
24
+ import type { Blocks } from './blocks.js'
25
+
26
+ export type AwaitIterable<T> = Iterable<T> | AsyncIterable<T>
26
27
 
27
28
  /**
28
29
  * The API presented by a Helia node.
@@ -36,7 +37,7 @@ export interface Helia {
36
37
  /**
37
38
  * Where the blocks are stored
38
39
  */
39
- blockstore: Blockstore
40
+ blockstore: Blocks
40
41
 
41
42
  /**
42
43
  * A key/value store
@@ -48,22 +49,6 @@ export interface Helia {
48
49
  */
49
50
  pins: Pins
50
51
 
51
- /**
52
- * Returns information about this node
53
- *
54
- * @example
55
- *
56
- * ```typescript
57
- * import { createHelia } from 'helia'
58
- *
59
- * const node = await createHelia()
60
- * const id = await node.info()
61
- * console.info(id)
62
- * // { peerId: PeerId(12D3Foo), ... }
63
- * ```
64
- */
65
- info: (options?: InfoOptions) => Promise<InfoResponse>
66
-
67
52
  /**
68
53
  * Starts the Helia node
69
54
  */
@@ -81,7 +66,8 @@ export interface Helia {
81
66
  }
82
67
 
83
68
  export type GcEvents =
84
- ProgressEvent<'helia:gc:deleted', CID>
69
+ ProgressEvent<'helia:gc:deleted', CID> |
70
+ ProgressEvent<'helia:gc:error', Error>
85
71
 
86
72
  export interface GCOptions extends AbortOptions, ProgressOptions<GcEvents> {
87
73
 
@@ -94,35 +80,3 @@ export interface InfoOptions extends AbortOptions {
94
80
  */
95
81
  peerId?: PeerId
96
82
  }
97
-
98
- export interface InfoResponse {
99
- /**
100
- * The ID of the peer this info is about
101
- */
102
- peerId: PeerId
103
-
104
- /**
105
- * The multiaddrs the peer is listening on
106
- */
107
- multiaddrs: Multiaddr[]
108
-
109
- /**
110
- * The peer's reported agent version
111
- */
112
- agentVersion: string
113
-
114
- /**
115
- * The peer's reported protocol version
116
- */
117
- protocolVersion: string
118
-
119
- /**
120
- * The protocols the peer supports
121
- */
122
- protocols: string[]
123
-
124
- /**
125
- * The status of the node
126
- */
127
- status: 'running' | 'stopped'
128
- }