UNPKG

12.5 kBTypeScriptView Raw
1import { UInt256 } from '@neo-one/client-common';
2import { AddChange, Block, ChangeSet, DeleteChange, Output, OutputKey, ReadAllStorage, ReadGetAllStorage, ReadMetadataStorage, ReadStorage } from '@neo-one/node-core';
3import { Observable } from 'rxjs';
4declare type TrackedChange<Key, AddValue, Value> = {
5 readonly type: 'add';
6 readonly addValue: AddValue;
7 readonly value: Value;
8 readonly subType: 'add' | 'update';
9} | {
10 readonly type: 'delete';
11 readonly key: Key;
12};
13declare type GetFunc<Key, Value> = (key: Key) => Promise<Value>;
14declare type TryGetFunc<Key, Value> = (key: Key) => Promise<Value | undefined>;
15export interface TrackedChangeWithKey<Key, AddValue, Value> {
16 readonly type: string;
17 readonly key: string;
18 readonly value: TrackedChange<Key, AddValue, Value>;
19}
20export declare type TrackedChangeSet<Key, AddValue, Value> = ReadonlyArray<TrackedChangeWithKey<Key, AddValue, Value>>;
21interface BaseReadStorageCacheOptions<Key, AddValue, Value> {
22 readonly readStorage: () => ReadStorage<Key, Value>;
23 readonly name: string;
24 readonly createAddChange: (value: AddValue) => AddChange;
25 readonly createDeleteChange?: (key: Key) => DeleteChange;
26 readonly onAdd?: (value: AddValue) => Promise<void>;
27}
28export declare class BaseReadStorageCache<Key, AddValue, Value> {
29 readonly get: GetFunc<Key, Value>;
30 readonly tryGet: TryGetFunc<Key, Value>;
31 readonly tryGetValue: TryGetFunc<Key, Value>;
32 readonly onAdd: ((value: AddValue) => Promise<void>) | undefined;
33 readonly name: string;
34 readonly mutableValues: {
35 [key: string]: TrackedChange<Key, AddValue, Value>;
36 };
37 protected readonly readStorage: () => ReadStorage<Key, Value>;
38 protected readonly createAddChange: (value: AddValue) => AddChange;
39 protected readonly createDeleteChange: ((key: Key) => DeleteChange) | undefined;
40 constructor(options: BaseReadStorageCacheOptions<Key, AddValue, Value>);
41 getChangeSet(): ChangeSet;
42 getTrackedChangeSet(): TrackedChangeSet<Key, AddValue, Value>;
43 tryGetTracked(_key: Key): TrackedChange<Key, AddValue, Value> | undefined;
44}
45interface ReadStorageCacheOptions<Key, AddValue, Value> extends BaseReadStorageCacheOptions<Key, AddValue, Value> {
46 readonly getKeyString: (key: Key) => string;
47}
48declare class ReadStorageCache<Key, AddValue, Value> extends BaseReadStorageCache<Key, AddValue, Value> {
49 readonly getKeyString: (key: Key) => string;
50 constructor(options: ReadStorageCacheOptions<Key, AddValue, Value>);
51 tryGetTracked(key: Key): TrackedChange<Key, AddValue, Value> | undefined;
52 addTrackedChange(key: string, value: TrackedChange<Key, AddValue, Value>): void;
53}
54interface ReadAllStorageCacheOptions<Key, Value> {
55 readonly readAllStorage: () => ReadAllStorage<Key, Value>;
56 readonly name: string;
57 readonly createAddChange: (value: Value) => AddChange;
58 readonly createDeleteChange?: (key: Key) => DeleteChange;
59 readonly onAdd?: (value: Value) => Promise<void>;
60 readonly getKeyString: (key: Key) => string;
61 readonly getKeyFromValue: (value: Value) => Key;
62}
63declare class ReadAllStorageCache<Key, Value> extends ReadStorageCache<Key, Value, Value> {
64 readonly all$: Observable<Value>;
65 protected readonly readAllStorage: () => ReadAllStorage<Key, Value>;
66 protected readonly getKeyFromValue: (value: Value) => Key;
67 constructor(options: ReadAllStorageCacheOptions<Key, Value>);
68}
69interface ReadGetAllStorageCacheOptions<Key, PartialKey, Value> {
70 readonly readGetAllStorage: () => ReadGetAllStorage<Key, PartialKey, Value>;
71 readonly name: string;
72 readonly createAddChange: (value: Value) => AddChange;
73 readonly createDeleteChange?: (key: Key) => DeleteChange;
74 readonly onAdd?: (value: Value) => Promise<void>;
75 readonly getKeyString: (key: Key) => string;
76 readonly getKeyFromValue: (value: Value) => Key;
77 readonly matchesPartialKey: (value: Value, key: PartialKey) => boolean;
78}
79declare class ReadGetAllStorageCache<Key, PartialKey, Value> extends ReadStorageCache<Key, Value, Value> {
80 readonly getAll$: (key: PartialKey) => Observable<Value>;
81 protected readonly readGetAllStorage: () => ReadGetAllStorage<Key, PartialKey, Value>;
82 protected readonly getKeyFromValue: (value: Value) => Key;
83 protected readonly matchesPartialKey: (value: Value, key: PartialKey) => boolean;
84 constructor(options: ReadGetAllStorageCacheOptions<Key, PartialKey, Value>);
85}
86declare type AddFunc<Value> = (value: Value) => Promise<void>;
87declare type UpdateFunc<Value, Update> = (value: Value, update: Update) => Promise<Value>;
88declare type DeleteFunc<Key> = (key: Key) => Promise<void>;
89interface ReadAddUpdateDeleteStorageCacheOptions<Key, Value, Update> extends ReadStorageCacheOptions<Key, Value, Value> {
90 readonly update: (value: Value, update: Update) => Value;
91 readonly getKeyFromValue: (value: Value) => Key;
92}
93export declare class ReadAddUpdateDeleteStorageCache<Key, Value, Update> extends ReadStorageCache<Key, Value, Value> {
94 readonly add: AddFunc<Value>;
95 readonly update: UpdateFunc<Value, Update>;
96 readonly delete: DeleteFunc<Key>;
97 constructor(options: ReadAddUpdateDeleteStorageCacheOptions<Key, Value, Update>);
98}
99interface ReadAddUpdateStorageCacheOptions<Key, Value, Update> extends ReadStorageCacheOptions<Key, Value, Value> {
100 readonly update: (value: Value, update: Update) => Value;
101 readonly getKeyFromValue: (value: Value) => Key;
102 readonly allowDupes?: boolean;
103}
104export declare class ReadAddUpdateStorageCache<Key, Value, Update> extends ReadStorageCache<Key, Value, Value> {
105 readonly add: AddFunc<Value>;
106 readonly update: UpdateFunc<Value, Update>;
107 constructor(options: ReadAddUpdateStorageCacheOptions<Key, Value, Update>);
108}
109interface ReadAddDeleteStorageCacheOptions<Key, Value> extends ReadStorageCacheOptions<Key, Value, Value> {
110 readonly getKeyFromValue: (value: Value) => Key;
111}
112export declare class ReadAddDeleteStorageCache<Key, Value> extends ReadStorageCache<Key, Value, Value> {
113 readonly add: AddFunc<Value>;
114 readonly delete: DeleteFunc<Key>;
115 constructor(options: ReadAddDeleteStorageCacheOptions<Key, Value>);
116}
117interface ReadAddStorageCacheOptions<Key, Value> extends ReadStorageCacheOptions<Key, Value, Value> {
118 readonly getKeyFromValue: (value: Value) => Key;
119 readonly allowDupes?: boolean;
120}
121export declare class ReadAddStorageCache<Key, Value> extends ReadStorageCache<Key, Value, Value> {
122 readonly add: AddFunc<Value>;
123 constructor(options: ReadAddStorageCacheOptions<Key, Value>);
124}
125interface ReadGetAllAddDeleteStorageCacheOptions<Key, PartialKey, Value> extends ReadGetAllStorageCacheOptions<Key, PartialKey, Value> {
126 readonly getKeyFromValue: (value: Value) => Key;
127}
128export declare class ReadGetAllAddDeleteStorageCache<Key, PartialKey, Value> extends ReadGetAllStorageCache<Key, PartialKey, Value> {
129 readonly add: AddFunc<Value>;
130 readonly delete: DeleteFunc<Key>;
131 constructor(options: ReadGetAllAddDeleteStorageCacheOptions<Key, PartialKey, Value>);
132}
133interface ReadGetAllAddUpdateDeleteStorageCacheOptions<Key, PartialKey, Value, Update> extends ReadGetAllStorageCacheOptions<Key, PartialKey, Value> {
134 readonly update: (value: Value, update: Update) => Value;
135 readonly getKeyFromValue: (value: Value) => Key;
136}
137export declare class ReadGetAllAddUpdateDeleteStorageCache<Key, PartialKey, Value, Update> extends ReadGetAllStorageCache<Key, PartialKey, Value> {
138 readonly add: AddFunc<Value>;
139 readonly update: UpdateFunc<Value, Update>;
140 readonly delete: DeleteFunc<Key>;
141 constructor(options: ReadGetAllAddUpdateDeleteStorageCacheOptions<Key, PartialKey, Value, Update>);
142}
143interface ReadGetAllAddStorageCacheOptions<Key, PartialKey, Value> extends ReadGetAllStorageCacheOptions<Key, PartialKey, Value> {
144 readonly getKeyFromValue: (value: Value) => Key;
145}
146export declare class ReadGetAllAddStorageCache<Key, PartialKey, Value> extends ReadGetAllStorageCache<Key, PartialKey, Value> {
147 readonly add: AddFunc<Value>;
148 constructor(options: ReadGetAllAddStorageCacheOptions<Key, PartialKey, Value>);
149}
150interface ReadAllAddUpdateDeleteStorageCacheOptions<Key, Value, Update> extends ReadAllStorageCacheOptions<Key, Value> {
151 readonly update: (value: Value, update: Update) => Value;
152 readonly getKeyFromValue: (value: Value) => Key;
153}
154export declare class ReadAllAddUpdateDeleteStorageCache<Key, Value, Update> extends ReadAllStorageCache<Key, Value> {
155 readonly add: AddFunc<Value>;
156 readonly update: UpdateFunc<Value, Update>;
157 readonly delete: DeleteFunc<Key>;
158 constructor(options: ReadAllAddUpdateDeleteStorageCacheOptions<Key, Value, Update>);
159}
160interface ReadAllAddStorageCacheOptions<Key, Value> extends ReadAllStorageCacheOptions<Key, Value> {
161 readonly getKeyFromValue: (value: Value) => Key;
162}
163export declare class ReadAllAddStorageCache<Key, Value> extends ReadAllStorageCache<Key, Value> {
164 readonly add: AddFunc<Value>;
165 constructor(options: ReadAllAddStorageCacheOptions<Key, Value>);
166}
167interface BlockLikeKey {
168 readonly hashOrIndex: Block['hash'] | Block['index'];
169}
170interface BlockLike {
171 readonly hash: Block['hash'];
172 readonly index: Block['index'];
173}
174interface BlockLikeStorageCacheOptions<Value extends BlockLike> extends BaseReadStorageCacheOptions<BlockLikeKey, Value, Value> {
175}
176export declare class BlockLikeStorageCache<Value extends BlockLike> extends BaseReadStorageCache<BlockLikeKey, Value, Value> {
177 protected readonly mutableIndexValues: {
178 [index: string]: TrackedChange<BlockLikeKey, Value, Value>;
179 };
180 constructor(options: BlockLikeStorageCacheOptions<Value>);
181 add(value: Value): Promise<void>;
182 tryGetTracked(key: BlockLikeKey): TrackedChange<BlockLikeKey, Value, Value> | undefined;
183 addTrackedChange(key: string, value: TrackedChange<BlockLikeKey, Value, Value>): void;
184}
185interface OutputValue {
186 readonly hash: UInt256;
187 readonly index: number;
188 readonly output: Output;
189}
190export declare class OutputStorageCache extends ReadStorageCache<OutputKey, OutputValue, Output> {
191 readonly add: AddFunc<OutputValue>;
192 constructor(readStorage: () => ReadStorage<OutputKey, Output>);
193}
194declare type TrackedMetadataChange<AddValue, Value> = {
195 readonly type: 'add';
196 readonly addValue: AddValue;
197 readonly value: Value;
198 readonly subType: 'add' | 'update';
199} | {
200 readonly type: 'delete';
201};
202declare type GetMetadataFunc<Value> = (key?: undefined) => Promise<Value>;
203declare type TryGetMetadataFunc<Value> = (key?: undefined) => Promise<Value | undefined>;
204interface BaseReadMetadataStorageCacheOptions<AddValue, Value> {
205 readonly readStorage: () => ReadMetadataStorage<Value>;
206 readonly name: string;
207 readonly createAddChange: (value: AddValue) => AddChange;
208 readonly createDeleteChange?: () => DeleteChange;
209 readonly onAdd?: (value: AddValue) => Promise<void>;
210}
211export declare class BaseReadMetadataStorageCache<AddValue, Value> {
212 readonly get: GetMetadataFunc<Value>;
213 readonly tryGet: TryGetMetadataFunc<Value>;
214 mutableValue: TrackedMetadataChange<AddValue, Value> | undefined;
215 readonly onAdd: ((value: AddValue) => Promise<void>) | undefined;
216 protected readonly readStorage: () => ReadMetadataStorage<Value>;
217 protected readonly name: string;
218 protected readonly createAddChange: (value: AddValue) => AddChange;
219 protected readonly createDeleteChange: (() => DeleteChange) | undefined;
220 constructor(options: BaseReadMetadataStorageCacheOptions<AddValue, Value>);
221 getChangeSet(): ChangeSet;
222 getTrackedChangeSet(): TrackedChangeSet<string, AddValue, Value>;
223 tryGetTracked(): TrackedMetadataChange<AddValue, Value> | undefined;
224 addTrackedChange(_key: string, value: TrackedMetadataChange<AddValue, Value>): void;
225}
226declare class ReadMetadataStorageCache<AddValue, Value> extends BaseReadMetadataStorageCache<AddValue, Value> {
227}
228interface ReadAddUpdateMetadataStorageCacheOptions<Value, Update> extends BaseReadMetadataStorageCacheOptions<Value, Value> {
229 readonly update: (value: Value, update: Update) => Value;
230}
231export declare class ReadAddUpdateMetadataStorageCache<Value, Update> extends ReadMetadataStorageCache<Value, Value> {
232 readonly add: AddFunc<Value>;
233 readonly update: UpdateFunc<Value, Update>;
234 constructor(options: ReadAddUpdateMetadataStorageCacheOptions<Value, Update>);
235}
236export {};