-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathshared.d.ts
83 lines (70 loc) · 2.66 KB
/
shared.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
declare module 'libsession_util_nodejs' {
/**
*
* Utilities
*
*/
type AsyncWrapper<T extends (...args: any) => any> = (
...args: Parameters<T>
) => Promise<ReturnType<T>>;
export type RecordOfFunctions = Record<string, (...args: any) => any>;
type MakeWrapperActionCalls<Type extends RecordOfFunctions> = {
[Property in keyof Type]: AsyncWrapper<Type[Property]>;
};
export type ProfilePicture = {
url: string | null;
key: Uint8Array | null;
};
export type PushConfigResult = { data: Uint8Array; seqno: number; hashes: Array<string> };
export type MergeSingle = { hash: string; data: Uint8Array };
type MakeActionCall<A extends RecordOfFunctions, B extends keyof A> = [B, ...Parameters<A[B]>];
/**
*
* Base Config wrapper logic
*
*/
type BaseConfigWrapper = {
needsDump: () => boolean;
needsPush: () => boolean;
push: () => PushConfigResult;
dump: () => Uint8Array;
confirmPushed: (seqno: number, hash: string) => void;
merge: (toMerge: Array<MergeSingle>) => Array<string>; // merge returns the array of hashes that merged correctly
storageNamespace: () => number;
currentHashes: () => Array<string>;
};
export type BaseConfigActions =
| MakeActionCall<BaseConfigWrapper, 'needsDump'>
| MakeActionCall<BaseConfigWrapper, 'needsPush'>
| MakeActionCall<BaseConfigWrapper, 'push'>
| MakeActionCall<BaseConfigWrapper, 'dump'>
| MakeActionCall<BaseConfigWrapper, 'confirmPushed'>
| MakeActionCall<BaseConfigWrapper, 'merge'>
| MakeActionCall<BaseConfigWrapper, 'storageNamespace'>
| MakeActionCall<BaseConfigWrapper, 'currentHashes'>;
export abstract class BaseConfigWrapperNode {
public needsDump: BaseConfigWrapper['needsDump'];
public needsPush: BaseConfigWrapper['needsPush'];
public push: BaseConfigWrapper['push'];
public dump: BaseConfigWrapper['dump'];
public confirmPushed: BaseConfigWrapper['confirmPushed'];
public merge: BaseConfigWrapper['merge'];
public storageNamespace: BaseConfigWrapper['storageNamespace'];
public currentHashes: BaseConfigWrapper['currentHashes'];
}
export type BaseWrapperActionsCalls = MakeWrapperActionCalls<BaseConfigWrapper>;
export type ConstantsType = {
/** 100 bytes */
CONTACT_MAX_NAME_LENGTH: number;
/** 100 bytes - for legacy groups and communities */
BASE_GROUP_MAX_NAME_LENGTH: number;
/** 100 bytes */
GROUP_INFO_MAX_NAME_LENGTH: number;
/** 411 bytes
*
* BASE_URL_MAX_LENGTH + '/r/' + ROOM_MAX_LENGTH + qs_pubkey.size() + hex pubkey + null terminator
*/
COMMUNITY_FULL_URL_MAX_LENGTH: number;
};
export const CONSTANTS: ConstantsType;
}