@learncard/core 1.0.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/dist/core.d.ts ADDED
@@ -0,0 +1,232 @@
1
+ // Generated by dts-bundle-generator v5.9.0
2
+
3
+ /// <reference types="node" />
4
+
5
+ import { StreamID } from '@ceramicnetwork/streamid';
6
+ import { ModelAliases } from '@glazed/types';
7
+
8
+ declare enum VerificationStatus {
9
+ Success = "Success",
10
+ Failed = "Failed",
11
+ Error = "Error"
12
+ }
13
+ export declare type VerificationItem = {
14
+ check: string;
15
+ status: VerificationStatus;
16
+ message?: string;
17
+ details?: string;
18
+ };
19
+ export declare type AchievementCriteria = {
20
+ type?: string;
21
+ narrative?: string;
22
+ };
23
+ export declare type CredentialSubjectAchievement = {
24
+ type?: string;
25
+ name?: string;
26
+ description?: string;
27
+ criteria?: AchievementCriteria;
28
+ image?: string;
29
+ };
30
+ export declare type CredentialSubject = {
31
+ type?: string;
32
+ id?: string;
33
+ achievement?: CredentialSubjectAchievement;
34
+ };
35
+ export declare type Issuer = string | {
36
+ type?: string;
37
+ id?: string;
38
+ name?: string;
39
+ url?: string;
40
+ image?: string;
41
+ };
42
+ export declare type Proof = {
43
+ type: string;
44
+ proofPurpose: string;
45
+ verificationMethod: string;
46
+ jws: string;
47
+ created: string;
48
+ };
49
+ export declare type UnsignedVC = {
50
+ [key: string]: any;
51
+ "@context": string | string[];
52
+ credentialSubject: CredentialSubject;
53
+ id: string;
54
+ issuanceDate: string;
55
+ expirationDate?: string;
56
+ issuer: Issuer;
57
+ type: string[];
58
+ };
59
+ export declare type VC = UnsignedVC & {
60
+ proof: Proof;
61
+ };
62
+ export declare type UnsignedVP = {
63
+ [key: string]: any;
64
+ "@context": string | string[];
65
+ holder: string;
66
+ type: string[];
67
+ verifiableCredential: VC;
68
+ };
69
+ export declare type VP = UnsignedVP & {
70
+ proof: Proof;
71
+ };
72
+ export declare type JWK = {
73
+ id: string;
74
+ type: string | string[];
75
+ controller?: string;
76
+ publicKeyJwk?: any;
77
+ privateKeyJwk?: any;
78
+ "@context": string[];
79
+ name: string;
80
+ image: string;
81
+ description: string;
82
+ tags: string[];
83
+ value?: string;
84
+ generatedFrom?: [
85
+ string
86
+ ];
87
+ };
88
+ export declare type DidKeyPluginMethods = {
89
+ getSubjectDid: () => string;
90
+ getSubjectKeypair: () => Record<string, string>;
91
+ };
92
+ export declare type DidKeyPluginConstants = {
93
+ generateContentFromSeed: (seed: Uint8Array) => Promise<JWK[]>;
94
+ };
95
+ export declare type IDXPluginMethods = {
96
+ getCredentialsListFromIndex: (alias?: string) => Promise<CredentialsList>;
97
+ publishContentToCeramic: (cred: any) => Promise<string>;
98
+ readContentFromCeramic: (streamId: string) => Promise<any>;
99
+ getVerifiableCredentialFromIndex: (title: string) => Promise<any>;
100
+ getVerifiableCredentialsFromIndex: () => Promise<any>;
101
+ addVerifiableCredentialInIdx: (cred: IDXCredential) => Promise<StreamID>;
102
+ };
103
+ declare enum StorageType {
104
+ ceramic = "ceramic"
105
+ }
106
+ export declare type IDXCredential = {
107
+ id: string;
108
+ title: string;
109
+ storageType?: StorageType;
110
+ };
111
+ export declare type CredentialsList = {
112
+ credentials: IDXCredential[];
113
+ };
114
+ export declare type VerificationCheck = {
115
+ checks: string[];
116
+ warnings: string[];
117
+ errors: string[];
118
+ };
119
+ export declare type VCPluginMethods = {
120
+ issueCredential: (credential: UnsignedVC) => Promise<VC>;
121
+ verifyCredential: (credential: VC) => Promise<VerificationCheck>;
122
+ issuePresentation: (credential: VC) => Promise<VP>;
123
+ verifyPresentation: (presentation: VP) => Promise<VerificationCheck>;
124
+ getTestVc: (subject?: string) => UnsignedVC;
125
+ getSubjectDid: () => string;
126
+ getSubjectKeypair: () => Record<string, string>;
127
+ };
128
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
129
+ export declare type Plugin<Name extends string, PublicMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PublicConstants extends Record<string, any> = Record<never, never>> = {
130
+ name?: Name;
131
+ pluginMethods: {
132
+ [Key in keyof PublicMethods]: <T extends UnlockedWallet<any, PublicMethods, PublicConstants>>(wallet: T, ...args: Parameters<PublicMethods[Key]>) => ReturnType<PublicMethods[Key]>;
133
+ };
134
+ pluginConstants: PublicConstants;
135
+ };
136
+ export declare type PublicFieldsObj<PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PluginConstants extends Record<string, any> = Record<never, never>> = {
137
+ pluginMethods: PluginMethods;
138
+ pluginConstants: PluginConstants;
139
+ };
140
+ declare enum WalletStatus {
141
+ Locked = "LOCKED",
142
+ Unlocked = "UNLOCKED"
143
+ }
144
+ export declare type BaseWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PluginConstants extends Record<string, any> = Record<never, never>> = PublicFieldsObj<PluginMethods, PluginConstants> & {
145
+ contents: any[];
146
+ plugins: Plugin<PluginNames, Record<string, (...args: any[]) => any>, Record<string, any>>[];
147
+ };
148
+ export declare type LockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PluginConstants extends Record<string, any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods, PluginConstants> & {
149
+ status: WalletStatus.Locked;
150
+ };
151
+ export declare type UnlockedWallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PluginConstants extends Record<string, any> = Record<never, never>> = BaseWallet<PluginNames, PluginMethods, PluginConstants> & {
152
+ status: WalletStatus.Unlocked;
153
+ add: (content: any) => Promise<UnlockedWallet<PluginNames, PluginMethods, PluginConstants>>;
154
+ remove: (contentId: string) => Promise<UnlockedWallet<PluginNames, PluginMethods, PluginConstants>>;
155
+ addPlugin: <Name extends string, Methods extends Record<string, (...args: any[]) => any> = Record<never, never>, Constants extends Record<string, any> = Record<never, never>>(plugin: Plugin<Name, Methods, Constants>) => Promise<UnlockedWallet<"" extends PluginNames ? Name : PluginNames | Name, Record<never, never> extends PluginMethods ? Methods : PluginMethods & Methods, Record<never, never> extends PluginConstants ? Constants : PluginConstants & Constants>>;
156
+ };
157
+ export declare type Wallet<PluginNames extends string = "", PluginMethods extends Record<string, (...args: any[]) => any> = Record<never, never>, PluginConstants extends Record<string, any> = Record<never, never>> = LockedWallet<PluginNames, PluginMethods, PluginConstants> | UnlockedWallet<PluginNames, PluginMethods, PluginConstants>;
158
+ export declare type LearnCardRawWallet = UnlockedWallet<"DID Key" | "VC" | "IDX" | "Expiration", DidKeyPluginMethods & VCPluginMethods & IDXPluginMethods, DidKeyPluginConstants>;
159
+ export declare type LearnCardWallet = {
160
+ /** Raw IoE wallet instance. You shouldn't need to drop down to this level! */
161
+ _wallet: LearnCardRawWallet;
162
+ /** Wallet holder's did */
163
+ did: string;
164
+ /** Wallet holder's ed25519 key pair */
165
+ keypair: Record<string, string>;
166
+ /** Signs an unsigned Verifiable Credential, returning the signed VC */
167
+ issueCredential: (credential: UnsignedVC) => Promise<VC>;
168
+ /**
169
+ * Verifies a signed Verifiable Credential
170
+ *
171
+ * Empty error/warnings arrays means verification was successful
172
+ */
173
+ verifyCredential: (credential: VC) => Promise<VerificationItem[]>;
174
+ /** Creates a signed Verifiable Presentation from a signed Verifiable Credential */
175
+ issuePresentation: (credential: VC) => Promise<VP>;
176
+ /**
177
+ * Verifies a signed Verifiable Presentation
178
+ *
179
+ * Empry error/warnings arrays means verification was successful
180
+ */
181
+ verifyPresentation: (presentation: VP) => Promise<VerificationCheck>;
182
+ /** Returns the credential marked with `title` from IDX */
183
+ getCredential: (title: string) => Promise<any>;
184
+ /** Returns all credentials from IDX */
185
+ getCredentials: () => Promise<any[]>;
186
+ /**
187
+ * Publishes a credential to Ceramic, returning the credential's stream ID
188
+ *
189
+ * This stream ID may then be shared/persisted/resolved to gain access to the credential
190
+ *
191
+ * Resolving a stream ID can be done by passing the stream ID to `readFromCeramic`
192
+ */
193
+ publishCredential: (credential: any) => Promise<string>;
194
+ /**
195
+ * Adds a stream ID pointing to a credential (such as the one returned by `publishCredential`)
196
+ * to IDX with a bespoke title
197
+ *
198
+ * The credential may then be retrieved using `getCredential` and passing in that bespoke title,
199
+ * or by using `getCredentials` to get a list of all credentials that have been added to IDX
200
+ */
201
+ addCredential: (credential: IDXCredential) => Promise<void>;
202
+ /**
203
+ * Resolves a stream ID, returning its contents
204
+ *
205
+ * This can be given the return value of `publishCredential` to gain access to the credential
206
+ * that was published
207
+ */
208
+ readFromCeramic: (streamId: string) => Promise<any>;
209
+ /**
210
+ * Returns an example credential, optionally allowing a subject's did to be passed in
211
+ *
212
+ * You can use this to test out implementations that use this library!
213
+ */
214
+ getTestVc: (subject?: string) => UnsignedVC;
215
+ };
216
+ export declare type CeramicIDXArgs = {
217
+ modelData: ModelAliases;
218
+ credentialAlias: string;
219
+ ceramicEndpoint: string;
220
+ defaultContentFamily: string;
221
+ };
222
+ export declare type LearnCardConfig = {
223
+ ceramicIdx: CeramicIDXArgs;
224
+ didkit: InitInput | Promise<InitInput>;
225
+ };
226
+ export declare const createWallet: (defaultContents: any[], { ceramicIdx, didkit }?: Partial<LearnCardConfig>) => Promise<LearnCardWallet>;
227
+ /** Generates did documents from key and returns default wallet */
228
+ export declare const walletFromKey: (key: string, { ceramicIdx, didkit }?: Partial<LearnCardConfig>) => Promise<LearnCardWallet>;
229
+ export { createWallet, walletFromKey } from "@wallet/init";
230
+ export { Wallet, UnlockedWallet, LockedWallet, Plugin } from "types/wallet";
231
+
232
+ export {};