@pomade/core 0.0.4

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,228 @@
1
+ import type { GroupPackage, SharePackage } from "@frostr/bifrost";
2
+ import type { TrustedEvent, SignedEvent } from "@welshman/util";
3
+ import { IStorageFactory, IStorage } from "./storage.js";
4
+ import { Method, AuthPayload } from "./schema.js";
5
+ import { RPC, WithEvent } from "./rpc.js";
6
+ import { ChallengeRequest, EcdhRequest, LoginSelect, LoginStart, RecoverySetup, RecoverySelect, RecoveryStart, RegisterRequest, SessionDelete, SessionList, SignRequest } from "./message.js";
7
+ export type SignerSession = {
8
+ client: string;
9
+ share: SharePackage;
10
+ group: GroupPackage;
11
+ recovery: boolean;
12
+ event: TrustedEvent;
13
+ last_activity: number;
14
+ email?: string;
15
+ email_hash?: string;
16
+ password_hash?: string;
17
+ };
18
+ export type SignerRecoverOption = {
19
+ otp: string;
20
+ client: string;
21
+ threshold: number;
22
+ };
23
+ export type SignerRecovery = {
24
+ event: TrustedEvent;
25
+ clients: string[];
26
+ };
27
+ export type SignerLogin = {
28
+ event: TrustedEvent;
29
+ clients: string[];
30
+ };
31
+ export type SignerChallenge = {
32
+ event: TrustedEvent;
33
+ email: string;
34
+ otp: string;
35
+ };
36
+ export type ChallengePayload = {
37
+ email: string;
38
+ challenge: string;
39
+ };
40
+ export type SignerOptions = {
41
+ secret: string;
42
+ relays: string[];
43
+ storage: IStorageFactory;
44
+ sendChallenge: (payload: ChallengePayload) => Promise<void>;
45
+ };
46
+ export declare class Signer {
47
+ private options;
48
+ rpc: RPC;
49
+ pubkey: string;
50
+ sessions: IStorage<SignerSession>;
51
+ recoveries: IStorage<SignerRecovery>;
52
+ logins: IStorage<SignerLogin>;
53
+ challenges: IStorage<SignerChallenge>;
54
+ intervals: number[];
55
+ constructor(options: SignerOptions);
56
+ stop(): void;
57
+ _getAuthenticatedSessionsByPassword(password_hash: string): AsyncGenerator<SignerSession>;
58
+ _getAuthenticatedSessionsByOTP(email: string, otp: string): AsyncGenerator<SignerSession>;
59
+ _getAuthenticatedSessions(auth: AuthPayload): Promise<SignerSession[]>;
60
+ _isNip98AuthValid(auth: SignedEvent, method: Method): boolean;
61
+ _checkKeyReuse(event: TrustedEvent): Promise<{
62
+ abort: () => void;
63
+ event: {
64
+ sig: string;
65
+ tags: string[][];
66
+ content: string;
67
+ kind: number;
68
+ created_at: number;
69
+ pubkey: string;
70
+ id: string;
71
+ };
72
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
73
+ ok: Promise<boolean>;
74
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
75
+ } | undefined>;
76
+ handleRegisterRequest({ payload, event }: WithEvent<RegisterRequest>): Promise<{
77
+ abort: () => void;
78
+ event: {
79
+ sig: string;
80
+ tags: string[][];
81
+ content: string;
82
+ kind: number;
83
+ created_at: number;
84
+ pubkey: string;
85
+ id: string;
86
+ };
87
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
88
+ ok: Promise<boolean>;
89
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
90
+ } | undefined>;
91
+ handleRecoverySetup({ payload, event }: WithEvent<RecoverySetup>): Promise<{
92
+ abort: () => void;
93
+ event: {
94
+ sig: string;
95
+ tags: string[][];
96
+ content: string;
97
+ kind: number;
98
+ created_at: number;
99
+ pubkey: string;
100
+ id: string;
101
+ };
102
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
103
+ ok: Promise<boolean>;
104
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
105
+ } | undefined>;
106
+ handleChallengeRequest({ payload, event }: WithEvent<ChallengeRequest>): Promise<void>;
107
+ handleRecoveryStart({ payload, event }: WithEvent<RecoveryStart>): Promise<{
108
+ abort: () => void;
109
+ event: {
110
+ sig: string;
111
+ tags: string[][];
112
+ content: string;
113
+ kind: number;
114
+ created_at: number;
115
+ pubkey: string;
116
+ id: string;
117
+ };
118
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
119
+ ok: Promise<boolean>;
120
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
121
+ } | undefined>;
122
+ handleRecoverySelect({ payload, event }: WithEvent<RecoverySelect>): Promise<{
123
+ abort: () => void;
124
+ event: {
125
+ sig: string;
126
+ tags: string[][];
127
+ content: string;
128
+ kind: number;
129
+ created_at: number;
130
+ pubkey: string;
131
+ id: string;
132
+ };
133
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
134
+ ok: Promise<boolean>;
135
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
136
+ } | undefined>;
137
+ handleLoginStart({ payload, event }: WithEvent<LoginStart>): Promise<{
138
+ abort: () => void;
139
+ event: {
140
+ sig: string;
141
+ tags: string[][];
142
+ content: string;
143
+ kind: number;
144
+ created_at: number;
145
+ pubkey: string;
146
+ id: string;
147
+ };
148
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
149
+ ok: Promise<boolean>;
150
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
151
+ } | undefined>;
152
+ handleLoginSelect({ payload, event }: WithEvent<LoginSelect>): Promise<{
153
+ abort: () => void;
154
+ event: {
155
+ sig: string;
156
+ tags: string[][];
157
+ content: string;
158
+ kind: number;
159
+ created_at: number;
160
+ pubkey: string;
161
+ id: string;
162
+ };
163
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
164
+ ok: Promise<boolean>;
165
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
166
+ } | undefined>;
167
+ handleSignRequest({ payload, event }: WithEvent<SignRequest>): Promise<{
168
+ abort: () => void;
169
+ event: {
170
+ sig: string;
171
+ tags: string[][];
172
+ content: string;
173
+ kind: number;
174
+ created_at: number;
175
+ pubkey: string;
176
+ id: string;
177
+ };
178
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
179
+ ok: Promise<boolean>;
180
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
181
+ } | undefined>;
182
+ handleEcdhRequest({ payload, event }: WithEvent<EcdhRequest>): Promise<{
183
+ abort: () => void;
184
+ event: {
185
+ sig: string;
186
+ tags: string[][];
187
+ content: string;
188
+ kind: number;
189
+ created_at: number;
190
+ pubkey: string;
191
+ id: string;
192
+ };
193
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
194
+ ok: Promise<boolean>;
195
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
196
+ } | undefined>;
197
+ handleSessionList({ payload, event }: WithEvent<SessionList>): Promise<{
198
+ abort: () => void;
199
+ event: {
200
+ sig: string;
201
+ tags: string[][];
202
+ content: string;
203
+ kind: number;
204
+ created_at: number;
205
+ pubkey: string;
206
+ id: string;
207
+ };
208
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
209
+ ok: Promise<boolean>;
210
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
211
+ } | undefined>;
212
+ handleSessionDelete({ payload, event }: WithEvent<SessionDelete>): Promise<{
213
+ abort: () => void;
214
+ event: {
215
+ sig: string;
216
+ tags: string[][];
217
+ content: string;
218
+ kind: number;
219
+ created_at: number;
220
+ pubkey: string;
221
+ id: string;
222
+ };
223
+ res: Promise<import("@welshman/net").PublishResultsByRelay>;
224
+ ok: Promise<boolean>;
225
+ receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
226
+ } | undefined>;
227
+ }
228
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}