@keetanetwork/anchor 0.0.1

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.
Files changed (76) hide show
  1. package/.done +0 -0
  2. package/LICENSE +35 -0
  3. package/client/index.d.ts +10 -0
  4. package/client/index.d.ts.map +1 -0
  5. package/client/index.js +11 -0
  6. package/client/index.js.map +1 -0
  7. package/config.d.ts +10 -0
  8. package/config.d.ts.map +1 -0
  9. package/config.js +36 -0
  10. package/config.js.map +1 -0
  11. package/lib/certificates.d.ts +106 -0
  12. package/lib/certificates.d.ts.map +1 -0
  13. package/lib/certificates.js +463 -0
  14. package/lib/certificates.js.map +1 -0
  15. package/lib/encrypted-container.d.ts +106 -0
  16. package/lib/encrypted-container.d.ts.map +1 -0
  17. package/lib/encrypted-container.js +594 -0
  18. package/lib/encrypted-container.js.map +1 -0
  19. package/lib/index.d.ts +5 -0
  20. package/lib/index.d.ts.map +1 -0
  21. package/lib/index.js +5 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/log/common.d.ts +35 -0
  24. package/lib/log/common.d.ts.map +1 -0
  25. package/lib/log/common.js +19 -0
  26. package/lib/log/common.js.map +1 -0
  27. package/lib/log/index.d.ts +59 -0
  28. package/lib/log/index.d.ts.map +1 -0
  29. package/lib/log/index.js +207 -0
  30. package/lib/log/index.js.map +1 -0
  31. package/lib/log/target_console.d.ts +13 -0
  32. package/lib/log/target_console.d.ts.map +1 -0
  33. package/lib/log/target_console.js +44 -0
  34. package/lib/log/target_console.js.map +1 -0
  35. package/lib/resolver.d.ts +308 -0
  36. package/lib/resolver.d.ts.map +1 -0
  37. package/lib/resolver.js +1429 -0
  38. package/lib/resolver.js.map +1 -0
  39. package/lib/utils/array.d.ts +10 -0
  40. package/lib/utils/array.d.ts.map +1 -0
  41. package/lib/utils/array.js +12 -0
  42. package/lib/utils/array.js.map +1 -0
  43. package/lib/utils/asn1.d.ts +13 -0
  44. package/lib/utils/asn1.d.ts.map +1 -0
  45. package/lib/utils/asn1.js +8 -0
  46. package/lib/utils/asn1.js.map +1 -0
  47. package/lib/utils/buffer.d.ts +4 -0
  48. package/lib/utils/buffer.d.ts.map +1 -0
  49. package/lib/utils/buffer.js +3 -0
  50. package/lib/utils/buffer.js.map +1 -0
  51. package/lib/utils/crypto.d.ts +4 -0
  52. package/lib/utils/crypto.d.ts.map +1 -0
  53. package/lib/utils/crypto.js +4 -0
  54. package/lib/utils/crypto.js.map +1 -0
  55. package/lib/utils/index.d.ts +5 -0
  56. package/lib/utils/index.d.ts.map +1 -0
  57. package/lib/utils/index.js +5 -0
  58. package/lib/utils/index.js.map +1 -0
  59. package/lib/utils/json.d.ts +8 -0
  60. package/lib/utils/json.d.ts.map +1 -0
  61. package/lib/utils/json.js +164 -0
  62. package/lib/utils/json.js.map +1 -0
  63. package/lib/utils/never.d.ts +8 -0
  64. package/lib/utils/never.d.ts.map +1 -0
  65. package/lib/utils/never.js +14 -0
  66. package/lib/utils/never.js.map +1 -0
  67. package/npm-shrinkwrap.json +16517 -0
  68. package/package.json +42 -0
  69. package/services/kyc/client.d.ts +139 -0
  70. package/services/kyc/client.d.ts.map +1 -0
  71. package/services/kyc/client.js +390 -0
  72. package/services/kyc/client.js.map +1 -0
  73. package/services/kyc/common.d.ts +65 -0
  74. package/services/kyc/common.d.ts.map +1 -0
  75. package/services/kyc/common.js +2 -0
  76. package/services/kyc/common.js.map +1 -0
@@ -0,0 +1,308 @@
1
+ import * as KeetaNetClient from '@keetanetwork/keetanet-client';
2
+ import CurrencyInfo from '@keetanetwork/currency-info';
3
+ import type { Logger } from './log/index.ts';
4
+ import type { JSONSerializable } from './utils/json.ts';
5
+ type ExternalURL = {
6
+ external: '2b828e33-2692-46e9-817e-9b93d63f28fd';
7
+ url: string;
8
+ };
9
+ type KeetaNetAccount = InstanceType<typeof KeetaNetClient.lib.Account>;
10
+ type CurrencySearchInput = CurrencyInfo.ISOCurrencyCode | CurrencyInfo.ISOCurrencyNumber | CurrencyInfo.Currency;
11
+ type CountrySearchInput = CurrencyInfo.ISOCountryCode | CurrencyInfo.ISOCountryNumber | CurrencyInfo.Country;
12
+ /**
13
+ * A cache object
14
+ */
15
+ type URLCacheObject = Map<string, {
16
+ pass: true;
17
+ value: JSONSerializable;
18
+ expires: Date;
19
+ } | {
20
+ pass: false;
21
+ error: unknown;
22
+ expires: Date;
23
+ }>;
24
+ /**
25
+ * Service Metadata General Structure
26
+ */
27
+ type ServiceMetadata = {
28
+ version: number;
29
+ services: {
30
+ banking?: {
31
+ [id: string]: {
32
+ operations: {
33
+ createAccount?: string;
34
+ };
35
+ currencyCodes: string[];
36
+ countryCodes: string[];
37
+ kycProviders?: string[];
38
+ };
39
+ };
40
+ kyc?: {
41
+ [id: string]: {
42
+ operations: {
43
+ /**
44
+ * Check if the KYC provider can
45
+ * service a more specific locality
46
+ * (optional)
47
+ */
48
+ checkLocality?: string;
49
+ /**
50
+ * Request an estimate for a KYC
51
+ * verification (optional)
52
+ */
53
+ getEstimate?: string;
54
+ /**
55
+ * Begin the KYC verification process
56
+ * with this KYC provider
57
+ */
58
+ createVerification?: string;
59
+ /**
60
+ * Get the certificate for the
61
+ * KYC verification
62
+ */
63
+ getCertificates?: string;
64
+ };
65
+ /**
66
+ * Country codes which this KYC provider can
67
+ * validate accounts in. If this is not
68
+ * specified, then the KYC provider can
69
+ * validate accounts in any country.
70
+ */
71
+ countryCodes?: string[];
72
+ /**
73
+ * The Certificate Authority (CA) Certificate
74
+ * that this KYC provider uses to sign KYC
75
+ * certificates. This is used to identify the
76
+ * KYC provider.
77
+ */
78
+ ca: string;
79
+ };
80
+ };
81
+ fx?: {
82
+ inputCurrencyCodes: {
83
+ outputCurrencyCodes: string[];
84
+ kycProviders: string[];
85
+ }[];
86
+ };
87
+ inbound?: {
88
+ workInProgress?: true;
89
+ };
90
+ outbound?: {
91
+ workInProgress?: true;
92
+ };
93
+ cards?: {
94
+ workInProgress?: true;
95
+ };
96
+ };
97
+ };
98
+ /**
99
+ * Types of services which can be resolved
100
+ */
101
+ type Services = keyof ServiceMetadata['services'];
102
+ /**
103
+ * Search criteria for each service type
104
+ */
105
+ type ServiceSearchCriteria<T extends Services> = {
106
+ 'banking': {
107
+ /**
108
+ * Search for a banking provider which supports creating
109
+ * accounts in ALL of the following currencies.
110
+ */
111
+ currencyCodes?: CurrencySearchInput[];
112
+ /**
113
+ * Search for a banking provider which supports creating
114
+ * accounts in ANY of the following countries.
115
+ */
116
+ countryCodes?: CountrySearchInput[];
117
+ /**
118
+ * Search for a banking provider which supports creating
119
+ * accounts verified by ANY of the following KYC providers
120
+ * (DN).
121
+ */
122
+ kycProviders?: string[];
123
+ };
124
+ 'fx': {
125
+ /**
126
+ * Search for a provider which can convert from the following
127
+ * input currency
128
+ */
129
+ inputCurrencyCode: CurrencySearchInput;
130
+ /**
131
+ * Search for a provider which can convert to the following
132
+ * output currency
133
+ */
134
+ outputCurrencyCode: CurrencySearchInput;
135
+ };
136
+ 'kyc': {
137
+ /**
138
+ * Search for a KYC provider which can verify accounts in ALL
139
+ * of the following countries.
140
+ */
141
+ countryCodes: CountrySearchInput[];
142
+ };
143
+ 'inbound': {
144
+ workInProgress: true;
145
+ };
146
+ 'outbound': {
147
+ workInProgress: true;
148
+ };
149
+ 'cards': {
150
+ workInProgress: true;
151
+ };
152
+ }[T];
153
+ type ResolverConfig = {
154
+ /**
155
+ * The "root" account to use as the basis for all lookups. It should
156
+ * contain the authoritative information for resolving in its
157
+ * Metadata.
158
+ */
159
+ root: KeetaNetAccount;
160
+ /**
161
+ * A KeetaNet Client to access the network using.
162
+ */
163
+ client: KeetaNetClient.Client | KeetaNetClient.UserClient;
164
+ /**
165
+ * A list of trusted Certificate Authorities to use when connecting to
166
+ * external HTTPS services.
167
+ */
168
+ trustedCAs: string[];
169
+ /**
170
+ * Logger to use for debugging
171
+ */
172
+ logger?: Logger;
173
+ /**
174
+ * ID for this instance of the resolver
175
+ */
176
+ id?: string;
177
+ /**
178
+ * Caching Parameters
179
+ */
180
+ cache?: Omit<NonNullable<MetadataConfig['cache']>, 'instance'>;
181
+ };
182
+ type JSONSerializablePrimitive = Exclude<JSONSerializable, object>;
183
+ type ValuizeInput = JSONSerializablePrimitive | ValuizableObject | ValuizableArray;
184
+ type ValuizableArray = (ValuizableMethod | undefined)[];
185
+ type ValuizableObject = {
186
+ [key: string]: ValuizableMethod | undefined;
187
+ };
188
+ type ValuizableKind = 'any' | 'object' | 'array' | 'primitive' | 'string' | 'number' | 'boolean';
189
+ interface ValuizableMethod {
190
+ (expect: 'object'): Promise<ValuizableObject>;
191
+ (expect: 'array'): Promise<ValuizableArray>;
192
+ (expect: 'primitive'): Promise<JSONSerializablePrimitive>;
193
+ (expect: 'string'): Promise<string>;
194
+ (expect: 'number'): Promise<number>;
195
+ (expect: 'boolean'): Promise<boolean>;
196
+ (expect: 'any'): Promise<ValuizeInput>;
197
+ (expect?: ValuizableKind): Promise<ValuizeInput>;
198
+ }
199
+ interface ToValuizableExpectString {
200
+ (expect: 'string'): Promise<string>;
201
+ (expect: 'primitive'): Promise<JSONSerializablePrimitive>;
202
+ }
203
+ interface ToValuizableExpectNumber {
204
+ (expect: 'number'): Promise<number>;
205
+ (expect: 'primitive'): Promise<JSONSerializablePrimitive>;
206
+ }
207
+ interface ToValuizableExpectBoolean {
208
+ (expect: 'boolean'): Promise<boolean>;
209
+ (expect: 'primitive'): Promise<JSONSerializablePrimitive>;
210
+ }
211
+ type ToValuizableObject<T extends object> = {
212
+ [K in keyof T]: T[K] extends string ? ToValuizableExpectString : T[K] extends number ? ToValuizableExpectNumber : T[K] extends boolean ? ToValuizableExpectBoolean : T[K] extends JSONSerializablePrimitive ? (expect: 'primitive') => Promise<JSONSerializablePrimitive> : T[K] extends unknown[] ? (expect: 'array') => Promise<ToValuizableObject<T[K]>> : T[K] extends object ? (expect: 'object') => Promise<ToValuizableObject<T[K]>> : T[K] extends (infer U | undefined) ? ToValuizable<U> | undefined : never;
213
+ };
214
+ type ToValuizable<T> = ToValuizableObject<{
215
+ tmp: T;
216
+ }>['tmp'];
217
+ type ToJSONValuizableObject<T extends object> = {
218
+ [K in keyof T]: (T[K] extends object ? ToJSONValuizableObject<T[K]> : T[K] extends (object | undefined) ? ToJSONValuizableObject<NonNullable<T[K]>> | undefined : T[K]) | ExternalURL;
219
+ };
220
+ type ToJSONValuizable<T> = ToJSONValuizableObject<{
221
+ tmp: T;
222
+ }>['tmp'];
223
+ type MetadataConfig = {
224
+ trustedCAs: ResolverConfig['trustedCAs'];
225
+ client: KeetaNetClient.Client;
226
+ logger?: ResolverConfig['logger'];
227
+ resolver: Resolver;
228
+ cache?: {
229
+ instance: URLCacheObject;
230
+ positiveTTL?: number;
231
+ negativeTTL?: number;
232
+ };
233
+ parent?: Metadata;
234
+ };
235
+ type ValuizableInstance = {
236
+ value: ValuizableMethod;
237
+ };
238
+ declare class Metadata implements ValuizableInstance {
239
+ #private;
240
+ private readonly seenURLs;
241
+ private static readonly instanceTypeID;
242
+ static isInstance(value: unknown): value is Metadata;
243
+ /**
244
+ * Format the supplied Metadata as appropriate to be included
245
+ * within the Metadata field of a KeetaNet acccount to serve
246
+ * as the Metadata for the Resolver.
247
+ */
248
+ static formatMetadata(metadata: ToJSONValuizable<ServiceMetadata>): string;
249
+ static formatMetadata(metadata: JSONSerializable): string;
250
+ /**
251
+ * Assert that the supplied value is a valid Metadata Root Object
252
+ */
253
+ static assertMetadata(value: unknown): asserts value is ToJSONValuizable<ServiceMetadata>;
254
+ constructor(url: string | URL, config: MetadataConfig);
255
+ private parseMetadata;
256
+ private readKeetaNetURL;
257
+ private readHTTPSURL;
258
+ private readURL;
259
+ private resolveValue;
260
+ private assertValuizableKind;
261
+ private valuize;
262
+ value(expect: 'object'): Promise<ValuizableObject>;
263
+ value(expect: 'array'): Promise<ValuizableArray>;
264
+ value(expect: 'primitive'): Promise<JSONSerializablePrimitive>;
265
+ value(expect: 'string'): Promise<string>;
266
+ value(expect: 'number'): Promise<number>;
267
+ value(expect: 'boolean'): Promise<boolean>;
268
+ value(expect: 'any'): Promise<ValuizeInput>;
269
+ value(expect?: ValuizableKind): Promise<ValuizeInput>;
270
+ }
271
+ type ResolverStats = {
272
+ keetanet: {
273
+ reads: number;
274
+ };
275
+ https: {
276
+ reads: number;
277
+ };
278
+ unsupported: {
279
+ reads: number;
280
+ };
281
+ reads: number;
282
+ cache: {
283
+ hit: number;
284
+ miss: number;
285
+ };
286
+ };
287
+ type ResolverLookupBankingResults = {
288
+ [id: string]: ToValuizableObject<NonNullable<ServiceMetadata['services']['banking']>[string]>;
289
+ };
290
+ type ResolverLookupKYCResults = {
291
+ [id: string]: ToValuizableObject<NonNullable<ServiceMetadata['services']['kyc']>[string]>;
292
+ };
293
+ declare class Resolver {
294
+ #private;
295
+ readonly id: string;
296
+ static readonly Metadata: typeof Metadata;
297
+ constructor(config: ResolverConfig);
298
+ get stats(): ResolverStats;
299
+ private lookupBankingServices;
300
+ private lookupKYCServices;
301
+ lookup<T extends 'banking'>(service: T, criteria: ServiceSearchCriteria<'banking'>): Promise<ResolverLookupBankingResults | undefined>;
302
+ lookup<T extends 'kyc'>(service: T, criteria: ServiceSearchCriteria<'kyc'>): Promise<ResolverLookupKYCResults | undefined>;
303
+ lookup<T extends Services>(service: T, criteria: ServiceSearchCriteria<T>): Promise<ResolverLookupBankingResults | ResolverLookupKYCResults | undefined>;
304
+ clearCache(): void;
305
+ }
306
+ export default Resolver;
307
+ export type { ServiceMetadata, ServiceSearchCriteria, Services };
308
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/lib/resolver.ts"],"names":[],"mappings":"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"}