@keetanetwork/anchor 0.0.53 → 0.0.58

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 (69) hide show
  1. package/lib/asset.d.ts +18 -4
  2. package/lib/asset.d.ts.map +1 -1
  3. package/lib/asset.js +18 -0
  4. package/lib/asset.js.map +1 -1
  5. package/lib/chaining-graph.cli.d.ts +2 -0
  6. package/lib/chaining-graph.cli.d.ts.map +1 -0
  7. package/lib/chaining-graph.cli.js +257 -0
  8. package/lib/chaining-graph.cli.js.map +1 -0
  9. package/lib/chaining.d.ts +247 -0
  10. package/lib/chaining.d.ts.map +1 -0
  11. package/lib/chaining.js +1187 -0
  12. package/lib/chaining.js.map +1 -0
  13. package/lib/metadata.types.d.ts +28 -0
  14. package/lib/metadata.types.d.ts.map +1 -0
  15. package/lib/metadata.types.generated.d.ts +3 -0
  16. package/lib/metadata.types.generated.d.ts.map +1 -0
  17. package/lib/metadata.types.generated.js +15 -0
  18. package/lib/metadata.types.generated.js.map +1 -0
  19. package/lib/metadata.types.js +50 -0
  20. package/lib/metadata.types.js.map +1 -0
  21. package/lib/resolver.d.ts +15 -19
  22. package/lib/resolver.d.ts.map +1 -1
  23. package/lib/resolver.js +1101 -469
  24. package/lib/resolver.js.map +1 -1
  25. package/npm-shrinkwrap.json +2 -2
  26. package/package.json +1 -1
  27. package/services/asset-movement/client.d.ts +12 -5
  28. package/services/asset-movement/client.d.ts.map +1 -1
  29. package/services/asset-movement/client.js +190 -9
  30. package/services/asset-movement/client.js.map +1 -1
  31. package/services/asset-movement/common.d.ts +119 -60
  32. package/services/asset-movement/common.d.ts.map +1 -1
  33. package/services/asset-movement/common.generated.d.ts +48 -0
  34. package/services/asset-movement/common.generated.d.ts.map +1 -0
  35. package/services/asset-movement/common.generated.js +37425 -0
  36. package/services/asset-movement/common.generated.js.map +1 -0
  37. package/services/asset-movement/common.js +22 -35368
  38. package/services/asset-movement/common.js.map +1 -1
  39. package/services/asset-movement/lib/location.d.ts +10 -1
  40. package/services/asset-movement/lib/location.d.ts.map +1 -1
  41. package/services/asset-movement/lib/location.generated.d.ts +2 -1
  42. package/services/asset-movement/lib/location.generated.d.ts.map +1 -1
  43. package/services/asset-movement/lib/location.generated.js +23 -0
  44. package/services/asset-movement/lib/location.generated.js.map +1 -1
  45. package/services/asset-movement/lib/location.js +3 -0
  46. package/services/asset-movement/lib/location.js.map +1 -1
  47. package/services/asset-movement/server.d.ts +17 -6
  48. package/services/asset-movement/server.d.ts.map +1 -1
  49. package/services/asset-movement/server.js +47 -2
  50. package/services/asset-movement/server.js.map +1 -1
  51. package/services/fx/client.d.ts +3 -2
  52. package/services/fx/client.d.ts.map +1 -1
  53. package/services/fx/client.js +8 -3
  54. package/services/fx/client.js.map +1 -1
  55. package/services/fx/server.d.ts +2 -1
  56. package/services/fx/server.d.ts.map +1 -1
  57. package/services/fx/server.js +3 -0
  58. package/services/fx/server.js.map +1 -1
  59. package/services/storage/clients/contacts.generated.js +142 -90
  60. package/services/storage/clients/contacts.generated.js.map +1 -1
  61. package/services/storage/common.d.ts +7 -1
  62. package/services/storage/common.d.ts.map +1 -1
  63. package/services/storage/common.js.map +1 -1
  64. package/services/storage/server.js +1 -1
  65. package/services/storage/server.js.map +1 -1
  66. package/services/storage/test-utils.d.ts +1 -0
  67. package/services/storage/test-utils.d.ts.map +1 -1
  68. package/services/storage/test-utils.js +3 -0
  69. package/services/storage/test-utils.js.map +1 -1
@@ -1,8 +1,10 @@
1
1
  import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
2
- import type { KeetaAssetMovementAnchorCreatePersistentForwardingRequest, KeetaAssetMovementAnchorCreatePersistentForwardingResponse, KeetaAssetMovementAnchorInitiateTransferRequest, KeetaAssetMovementAnchorInitiateTransferResponse, KeetaAssetMovementAnchorGetTransferStatusResponse, KeetaAssetMovementAnchorlistTransactionsRequest, KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, KeetaAssetMovementAnchorListPersistentForwardingRequest, KeetaAssetMovementAnchorListPersistentForwardingResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateResponse, KeetaAssetMovementAnchorShareKYCRequest, KeetaAssetMovementAnchorShareKYCResponse } from './common.ts';
2
+ import type { KeetaAssetMovementAnchorCreatePersistentForwardingRequest, KeetaAssetMovementAnchorCreatePersistentForwardingResponse, KeetaAssetMovementAnchorInitiateTransferRequest, KeetaAssetMovementAnchorInitiateTransferResponse, KeetaAssetMovementAnchorGetTransferStatusResponse, KeetaAssetMovementAnchorlistTransactionsRequest, KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, KeetaAssetMovementAnchorListPersistentForwardingRequest, KeetaAssetMovementAnchorListPersistentForwardingResponse, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateResponse, KeetaAssetMovementAnchorShareKYCRequest, KeetaAssetMovementAnchorShareKYCResponse, KeetaAssetMovementAnchorExecuteTransferRequest, KeetaAssetMovementAnchorExecuteTransferResponse } from './common.ts';
3
3
  import type { ServiceMetadata } from '../../lib/resolver.ts';
4
4
  import type Account from '@keetanetwork/keetanet-client/lib/account.js';
5
5
  import type { ExtractOk } from '../../lib/http-server/common.js';
6
+ import type { SharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
7
+ type AssetMovementServiceMetadata = NonNullable<ServiceMetadata['services']['assetMovement']>[string];
6
8
  export interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {
7
9
  /**
8
10
  * The data to use for the index page (optional)
@@ -11,14 +13,16 @@ export interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPSer
11
13
  /**
12
14
  * Configuration for asset movement operations
13
15
  */
14
- assetMovement: {
16
+ assetMovement: SharedAnchorMetadataLegalExtension & Pick<AssetMovementServiceMetadata, 'supportedAssets' | 'locationMetadata'> & {
17
+ authenticationRequired?: boolean;
15
18
  /**
16
- * Supported assets and their configurations
19
+ * Method to initiate the two-step creation of a persistent forwarding address template.
20
+ * Returns a session ID and provider-specific data (e.g. a Plaid link token) for the client to complete.
17
21
  */
18
- supportedAssets: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['supportedAssets'];
19
- authenticationRequired?: boolean;
22
+ initiatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse>>;
20
23
  /**
21
- * Method to create a persistent forwarding address template
24
+ * Method to create a persistent forwarding address template.
25
+ * Accepts either a direct resolved address or a session completion payload (e.g. Plaid public token).
22
26
  */
23
27
  createPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse>>;
24
28
  /**
@@ -49,6 +53,12 @@ export interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPSer
49
53
  * Method to share KYC (Know Your Customer) information
50
54
  */
51
55
  shareKYC?: (request: KeetaAssetMovementAnchorShareKYCRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorShareKYCResponse>>;
56
+ /**
57
+ * Method to execute a transfer instruction, used for pull based transactions
58
+ */
59
+ executeTransfer?: (request: KeetaAssetMovementAnchorExecuteTransferRequest & {
60
+ id: string;
61
+ }) => Promise<ExtractOk<KeetaAssetMovementAnchorExecuteTransferResponse>>;
52
62
  };
53
63
  }
54
64
  export declare class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorAssetMovementServerConfig> implements Required<KeetaAnchorAssetMovementServerConfig> {
@@ -58,4 +68,5 @@ export declare class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHT
58
68
  protected initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes>;
59
69
  serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]>;
60
70
  }
71
+ export {};
61
72
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
2
2
  import { KeetaNet } from '../../client/index.js';
3
3
  import { KeetaAnchorUserError } from '../../lib/error.js';
4
- import { assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse, assertKeetaAssetMovementAnchorInitiateTransferRequest, assertKeetaAssetMovementAnchorInitiateTransferResponse, assertKeetaAssetMovementAnchorGetTransferStatusResponse, assertKeetaAssetMovementAnchorlistTransactionsRequest, assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, assertKeetaAssetMovementAnchorListPersistentForwardingRequest, assertKeetaAssetMovementAnchorListPersistentForwardingResponse, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData, assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData, getKeetaAssetMovementAnchorInitiateTransferRequestSigningData, assertKeetaAssetMovementAnchorShareKYCResponse, assertKeetaAssetMovementAnchorShareKYCRequest, getKeetaAssetMovementAnchorShareKYCRequestSigningData, convertAssetLocationToString, commonJSONStringify, getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorlistTransactionsRequestSigningData, getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData } from './common.js';
4
+ import { assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse, assertKeetaAssetMovementAnchorInitiateTransferRequest, assertKeetaAssetMovementAnchorInitiateTransferResponse, assertKeetaAssetMovementAnchorGetTransferStatusResponse, assertKeetaAssetMovementAnchorlistTransactionsRequest, assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, assertKeetaAssetMovementAnchorListPersistentForwardingRequest, assertKeetaAssetMovementAnchorListPersistentForwardingResponse, assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData, assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData, getKeetaAssetMovementAnchorInitiateTransferRequestSigningData, assertKeetaAssetMovementAnchorShareKYCResponse, assertKeetaAssetMovementAnchorShareKYCRequest, getKeetaAssetMovementAnchorShareKYCRequestSigningData, convertAssetLocationToString, commonJSONStringify, getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorlistTransactionsRequestSigningData, getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorExecuteTransferRequestSigningData, assertKeetaAssetMovementAnchorExecuteTransferRequest, assertKeetaAssetMovementAnchorExecuteTransferResponse } from './common.js';
5
5
  import { VerifySignedData } from '../../lib/utils/signing.js';
6
6
  import { assertHTTPSignedField, parseSignatureFromURL } from '../../lib/http-server/common.js';
7
7
  ;
@@ -115,6 +115,7 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
115
115
  else {
116
116
  parsedRequest = [request, account];
117
117
  }
118
+ // @ts-ignore
118
119
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
119
120
  const result = await handler(...parsedRequest);
120
121
  if ('ok' in result && (result.ok !== undefined && result.ok !== true)) {
@@ -184,6 +185,39 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
184
185
  });
185
186
  }
186
187
  });
188
+ addRoute({
189
+ method: 'POST',
190
+ handlerName: 'executeTransfer',
191
+ pathName: 'executeTransfer/:id',
192
+ getSigningData: function (data, params) {
193
+ const id = params.get('id');
194
+ if (typeof id !== 'string' || id.length === 0) {
195
+ throw (new KeetaAnchorUserError('Missing or invalid id parameter'));
196
+ }
197
+ return (getKeetaAssetMovementAnchorExecuteTransferRequestSigningData({
198
+ id: id,
199
+ ...data
200
+ }));
201
+ },
202
+ parseRequestToArgs: ({ body, params }) => {
203
+ const id = params.get('id');
204
+ if (typeof id !== 'string' || id.length === 0) {
205
+ throw (new KeetaAnchorUserError('Missing or invalid id parameter'));
206
+ }
207
+ if (!body) {
208
+ throw (new KeetaAnchorUserError('Missing or invalid request body'));
209
+ }
210
+ return [{ id, ...body }];
211
+ },
212
+ assertRequest: assertKeetaAssetMovementAnchorExecuteTransferRequest,
213
+ assertResponse: assertKeetaAssetMovementAnchorExecuteTransferResponse,
214
+ serializeResponse(data) {
215
+ return ({
216
+ ...data,
217
+ transaction: serializeTransactionResponse(data.transaction)
218
+ });
219
+ }
220
+ });
187
221
  addRoute({
188
222
  method: 'GET',
189
223
  handlerName: 'getTransferStatus',
@@ -230,6 +264,13 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
230
264
  });
231
265
  }
232
266
  });
267
+ addRoute({
268
+ method: 'POST',
269
+ handlerName: 'initiatePersistentForwardingTemplate',
270
+ assertRequest: assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest,
271
+ assertResponse: assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse,
272
+ getSigningData: getKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData
273
+ });
233
274
  addRoute({
234
275
  method: 'POST',
235
276
  handlerName: 'createPersistentForwardingTemplate',
@@ -270,12 +311,14 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
270
311
  const routes = [
271
312
  'initiateTransfer',
272
313
  'listTransactions',
314
+ 'initiatePersistentForwardingTemplate',
273
315
  'createPersistentForwardingTemplate',
274
316
  'listPersistentForwardingTemplate',
275
317
  'createPersistentForwarding',
276
318
  'listPersistentForwarding',
277
319
  'shareKYC',
278
- ['getTransferStatus', 'getTransferStatus/{id}']
320
+ ['getTransferStatus', 'getTransferStatus/{id}'],
321
+ ['executeTransfer', 'executeTransfer/{id}']
279
322
  ];
280
323
  for (const routeInput of routes) {
281
324
  let op;
@@ -305,6 +348,8 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
305
348
  throw (new KeetaAnchorUserError('No operations are supported on this server'));
306
349
  }
307
350
  return ({
351
+ ...(this.assetMovement.legal ? { legal: this.assetMovement.legal } : {}),
352
+ ...(this.assetMovement.locationMetadata ? { locationMetadata: this.assetMovement.locationMetadata } : {}),
308
353
  operations: operations,
309
354
  supportedAssets: this.assetMovement.supportedAssets
310
355
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"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","sourcesContent":["import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';\nimport { KeetaNet } from '../../client/index.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tKeetaAssetMovementAnchorInitiateTransferRequest,\n\tKeetaAssetMovementAnchorInitiateTransferResponse,\n\tKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tKeetaAssetMovementAnchorlistTransactionsRequest,\n\tKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorShareKYCRequest,\n\tKeetaAssetMovementAnchorShareKYCResponse\n} from './common.ts';\nimport {\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorInitiateTransferRequest,\n\tassertKeetaAssetMovementAnchorInitiateTransferResponse,\n\tassertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tassertKeetaAssetMovementAnchorlistTransactionsRequest,\n\tassertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\tgetKeetaAssetMovementAnchorGetTransferStatusRequestSigningData,\n\tgetKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\tassertKeetaAssetMovementAnchorShareKYCResponse,\n\tassertKeetaAssetMovementAnchorShareKYCRequest,\n\tgetKeetaAssetMovementAnchorShareKYCRequestSigningData,\n\tconvertAssetLocationToString,\n\tcommonJSONStringify,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\tgetKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\tgetKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData\n} from './common.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\nimport type { Signable } from '../../lib/utils/signing.js';\nimport { VerifySignedData } from '../../lib/utils/signing.js';\nimport type Account from '@keetanetwork/keetanet-client/lib/account.js';\nimport type { ExtractOk, HTTPSignedFieldURLParameters } from '../../lib/http-server/common.js';\nimport { assertHTTPSignedField, parseSignatureFromURL } from '../../lib/http-server/common.js';\nimport type { JSONSerializable } from '@keetanetwork/keetanet-client/lib/utils/conversion.js';\n\nexport interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * Configuration for asset movement operations\n\t */\n\tassetMovement: {\n\t\t/**\n\t\t * Supported assets and their configurations\n\t\t */\n\t\tsupportedAssets: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['supportedAssets'];\n\n\t\tauthenticationRequired?: boolean;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address template\n\t\t */\n\t\tcreatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding address templates\n\t\t */\n\t\tlistPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorListForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address\n\t\t */\n\t\tcreatePersistentForwarding?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding addresses\n\t\t */\n\t\tlistPersistentForwarding?: (request: KeetaAssetMovementAnchorListPersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListPersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to initiate a transfer\n\t\t */\n\t\tinitiateTransfer?: (request: KeetaAssetMovementAnchorInitiateTransferRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>>;\n\n\t\t/**\n\t\t * Method to get the status of a transfer\n\t\t */\n\t\tgetTransferStatus?: (id: string, account: Account.Account | null) => Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;\n\n\t\t/**\n\t\t * Method to list transactions\n\t\t */\n\t\tlistTransactions?: (request: KeetaAssetMovementAnchorlistTransactionsRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse>>;\n\n\t\t/**\n\t\t * Method to share KYC (Know Your Customer) information\n\t\t */\n\t\tshareKYC?: (request: KeetaAssetMovementAnchorShareKYCRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorShareKYCResponse>>;\n\t}\n};\n\nfunction serializeTransactionResponse(transaction: ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction']): ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction'] {\n\treturn({\n\t\t...transaction,\n\t\tfrom: {\n\t\t\t...transaction.from,\n\t\t\tlocation: convertAssetLocationToString(transaction.from.location)\n\t\t},\n\t\tto: {\n\t\t\t...transaction.to,\n\t\t\tlocation: convertAssetLocationToString(transaction.to.location)\n\t\t}\n\t});\n}\n\nfunction serializePersistentAddressTemplateResponse(template: ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number]): ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number] {\n\treturn({\n\t\t...template,\n\t\tlocation: convertAssetLocationToString(template.location)\n\t});\n}\n\nexport class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorAssetMovementServerConfig> implements Required<KeetaAnchorAssetMovementServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorAssetMovementServerConfig['homepage']>;\n\treadonly assetMovement: NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement']>;\n\n\tconstructor(config: KeetaAnchorAssetMovementServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.assetMovement = config.assetMovement;\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tfunction addRoute<\n\t\t\tHandlerName extends keyof KeetaAnchorAssetMovementServerConfig['assetMovement'],\n\t\t\tSerializedRequest extends { [key: string]: unknown } | undefined,\n\t\t\tResponse\n\t\t>(input: {\n\t\t\tmethod: 'GET' | 'POST';\n\t\t\thandlerName: HandlerName;\n\t\t\tpathName?: string;\n\t\t\tassertRequest?: (data: unknown) => SerializedRequest;\n\t\t\tserializeResponse?: (data: ExtractOk<Response>) => unknown;\n\t\t\tassertResponse: (data: unknown) => Response;\n\t\t\tgetSigningData?: (data: SerializedRequest, params: Map<string, string>) => Signable;\n\t\t\tparseRequestToArgs?: (params: {\n\t\t\t\tparams: Map<string, string>;\n\t\t\t\tbody: JSONSerializable | SerializedRequest | undefined,\n\t\t\t\turl: URL,\n\t\t\t\taccount: Account.Account | null\n\t\t\t\t// Typescript needs any here, but eslint does not like it\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t}) => NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement'][HandlerName]> extends (...args: infer R extends [ any, Account.Account | null ]) => any ? R : never;\n\t\t\tgetSignatureFieldAccountFromRequest?: (params: { body: JSONSerializable | undefined, url: URL }) => Partial<HTTPSignedFieldURLParameters>;\n\t\t}) {\n\t\t\tconst handler = config.assetMovement[input.handlerName];\n\t\t\tif (handler === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof handler !== 'function') {\n\t\t\t\tthrow(new Error(`internal error: handler for ${String(input.handlerName)} is not a function`));\n\t\t\t}\n\n\t\t\tconst authenticationRequired = config.assetMovement.authenticationRequired === true;\n\n\t\t\troutes[`${input.method} /api/${input.pathName ?? input.handlerName}`] = async function(params, postData, _ignore_headers, url) {\n\t\t\t\tlet request: SerializedRequest;\n\t\t\t\tif (input.method === 'GET') {\n\t\t\t\t\t// For GET requests, we do not expect a body\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\trequest = undefined as SerializedRequest;\n\t\t\t\t} else {\n\t\t\t\t\tif (!input.assertRequest) {\n\t\t\t\t\t\tthrow(new Error('input.assertRequest is required when method = POST'));\n\t\t\t\t\t}\n\t\t\t\t\trequest = input.assertRequest(postData);\n\t\t\t\t}\n\n\t\t\t\tlet account: Account.Account | null = null;\n\t\t\t\tif (authenticationRequired || (request !== undefined && 'signed' in request)) {\n\t\t\t\t\tlet signed;\n\t\t\t\t\tif (input.getSignatureFieldAccountFromRequest !== undefined) {\n\t\t\t\t\t\tconst parsed = input.getSignatureFieldAccountFromRequest({ body: postData, url });\n\n\t\t\t\t\t\tif (!parsed.account || !parsed.signedField) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = parsed.account;\n\t\t\t\t\t\tsigned = parsed.signedField;\n\t\t\t\t\t} else if (request) {\n\t\t\t\t\t\tif (!('account' in request) || !('signed' in request)) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof request.account !== 'string') {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid account public key'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = KeetaNet.lib.Account.fromPublicKeyString(request.account).assertAccount();\n\t\t\t\t\t\tsigned = assertHTTPSignedField(request.signed);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow(new Error('when request is not defined, getSignatureFieldAccountFromRequest must be provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst signable = input.getSigningData ? input.getSigningData(request, params) : [];\n\n\t\t\t\t\tconst valid = await VerifySignedData(account, signable, signed);\n\n\t\t\t\t\tif (!valid) {\n\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid signature'));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tlet parsedRequest: [ any, Account.Account | null ];\n\t\t\t\tif (input.parseRequestToArgs) {\n\t\t\t\t\tparsedRequest = input.parseRequestToArgs({ body: request, params, url, account: account ?? null });\n\t\t\t\t} else {\n\t\t\t\t\tparsedRequest = [ request, account ];\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst result = await handler(...parsedRequest);\n\n\t\t\t\tif ('ok' in result && (result.ok !== undefined && result.ok !== true)) {\n\t\t\t\t\tthrow(new Error('internal error: response serialization must not have ok field'));\n\t\t\t\t}\n\n\t\t\t\tconst resp = input.assertResponse({ ...result, ok: true });\n\n\t\t\t\tlet serialized;\n\t\t\t\tif (input.serializeResponse) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\tserialized = input.serializeResponse(resp as ExtractOk<Response>);\n\t\t\t\t} else {\n\t\t\t\t\tserialized = resp;\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: commonJSONStringify(serialized)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tsourceLocation: data.sourceLocation ? convertAssetLocationToString(data.sourceLocation) : undefined,\n\t\t\t\t\tdestinationLocation: data.destinationLocation ? convertAssetLocationToString(data.destinationLocation) : undefined\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\taddresses: data.addresses.map(addr => ({\n\t\t\t\t\t\t...addr,\n\t\t\t\t\t\tsourceLocation: addr.sourceLocation ? convertAssetLocationToString(addr.sourceLocation) : undefined,\n\t\t\t\t\t\tdestinationLocation: addr.destinationLocation ? convertAssetLocationToString(addr.destinationLocation) : undefined\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'initiateTransfer',\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorInitiateTransferRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorInitiateTransferResponse,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tinstructionChoices: data.instructionChoices.map(function(choice) {\n\t\t\t\t\t\tconst ret = { ...choice };\n\t\t\t\t\t\tif ('location' in ret) {\n\t\t\t\t\t\t\tret.location = convertAssetLocationToString(ret.location);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn(ret);\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'GET',\n\t\t\thandlerName: 'getTransferStatus',\n\t\t\tpathName: 'getTransferStatus/:id',\n\t\t\tassertRequest: (input) => {\n\t\t\t\tif (input !== undefined) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('No body expected for getTransferStatus'));\n\t\t\t\t}\n\n\t\t\t\treturn(undefined);\n\t\t\t},\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\t\t\tgetSignatureFieldAccountFromRequest: ({ url }) => parseSignatureFromURL(url),\n\t\t\tparseRequestToArgs: ({ params, account }) => {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn([ id, account ] as const);\n\t\t\t},\n\t\t\tgetSigningData(_ignore_request, params) {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn(getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData({ id }));\n\t\t\t},\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransaction: serializeTransactionResponse(data.transaction)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listTransactions',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorlistTransactionsRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransactions: data.transactions.map(tx => serializeTransactionResponse(tx))\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\t...(serializePersistentAddressTemplateResponse(data))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttemplates: data.templates.map(template => serializePersistentAddressTemplateResponse(template))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'shareKYC',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorShareKYCRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorShareKYCResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorShareKYCRequestSigningData\n\t\t});\n\n\t\treturn(routes);\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]> {\n\t\tconst operations: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['operations'] = {};\n\n\t\tconst routes = [\n\t\t\t'initiateTransfer',\n\t\t\t'listTransactions',\n\t\t\t'createPersistentForwardingTemplate',\n\t\t\t'listPersistentForwardingTemplate',\n\t\t\t'createPersistentForwarding',\n\t\t\t'listPersistentForwarding',\n\t\t\t'shareKYC',\n\t\t\t[ 'getTransferStatus', 'getTransferStatus/{id}' ]\n\t\t] as const satisfies ((keyof typeof operations) | [ keyof typeof operations, string ])[];\n\n\t\tfor (const routeInput of routes) {\n\t\t\tlet op;\n\t\t\tlet url;\n\t\t\tif (Array.isArray(routeInput)) {\n\t\t\t\top = routeInput[0];\n\t\t\t\turl = routeInput[1];\n\t\t\t} else {\n\t\t\t\top = routeInput;\n\t\t\t\turl = routeInput;\n\t\t\t}\n\n\t\t\tif (this.assetMovement[op] !== undefined) {\n\t\t\t\tconst computedURL = (new URL(`/api/${url}`, this.url)).toString();\n\t\t\t\tif (this.assetMovement.authenticationRequired) {\n\t\t\t\t\toperations[op] = {\n\t\t\t\t\t\turl: computedURL,\n\t\t\t\t\t\toptions: { authentication: { method: 'keeta-account', type: 'required' }}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toperations[op] = computedURL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(operations).length === 0) {\n\t\t\tthrow(new KeetaAnchorUserError('No operations are supported on this server'));\n\t\t}\n\t\treturn({\n\t\t\toperations: operations,\n\t\t\tsupportedAssets: this.assetMovement.supportedAssets\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"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","sourcesContent":["import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';\nimport { KeetaNet } from '../../client/index.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tKeetaAssetMovementAnchorInitiateTransferRequest,\n\tKeetaAssetMovementAnchorInitiateTransferResponse,\n\tKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tKeetaAssetMovementAnchorlistTransactionsRequest,\n\tKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorShareKYCRequest,\n\tKeetaAssetMovementAnchorShareKYCResponse,\n\tKeetaAssetMovementAnchorExecuteTransferRequest,\n\tKeetaAssetMovementAnchorExecuteTransferResponse\n} from './common.ts';\nimport {\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorInitiateTransferRequest,\n\tassertKeetaAssetMovementAnchorInitiateTransferResponse,\n\tassertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tassertKeetaAssetMovementAnchorlistTransactionsRequest,\n\tassertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\tgetKeetaAssetMovementAnchorGetTransferStatusRequestSigningData,\n\tgetKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\tassertKeetaAssetMovementAnchorShareKYCResponse,\n\tassertKeetaAssetMovementAnchorShareKYCRequest,\n\tgetKeetaAssetMovementAnchorShareKYCRequestSigningData,\n\tconvertAssetLocationToString,\n\tcommonJSONStringify,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\tgetKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\tgetKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData,\n\tgetKeetaAssetMovementAnchorExecuteTransferRequestSigningData,\n\tassertKeetaAssetMovementAnchorExecuteTransferRequest,\n\tassertKeetaAssetMovementAnchorExecuteTransferResponse\n} from './common.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\nimport type { Signable } from '../../lib/utils/signing.js';\nimport { VerifySignedData } from '../../lib/utils/signing.js';\nimport type Account from '@keetanetwork/keetanet-client/lib/account.js';\nimport type { ExtractOk, HTTPSignedFieldURLParameters } from '../../lib/http-server/common.js';\nimport { assertHTTPSignedField, parseSignatureFromURL } from '../../lib/http-server/common.js';\nimport type { JSONSerializable } from '@keetanetwork/keetanet-client/lib/utils/conversion.js';\nimport type { SharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';\n\ntype AssetMovementServiceMetadata = NonNullable<ServiceMetadata['services']['assetMovement']>[string];\n\nexport interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * Configuration for asset movement operations\n\t */\n\tassetMovement: SharedAnchorMetadataLegalExtension & Pick<AssetMovementServiceMetadata, 'supportedAssets' | 'locationMetadata'> & {\n\t\tauthenticationRequired?: boolean;\n\n\t\t/**\n\t\t * Method to initiate the two-step creation of a persistent forwarding address template.\n\t\t * Returns a session ID and provider-specific data (e.g. a Plaid link token) for the client to complete.\n\t\t */\n\t\tinitiatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address template.\n\t\t * Accepts either a direct resolved address or a session completion payload (e.g. Plaid public token).\n\t\t */\n\t\tcreatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding address templates\n\t\t */\n\t\tlistPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorListForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address\n\t\t */\n\t\tcreatePersistentForwarding?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding addresses\n\t\t */\n\t\tlistPersistentForwarding?: (request: KeetaAssetMovementAnchorListPersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListPersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to initiate a transfer\n\t\t */\n\t\tinitiateTransfer?: (request: KeetaAssetMovementAnchorInitiateTransferRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>>;\n\n\t\t/**\n\t\t * Method to get the status of a transfer\n\t\t */\n\t\tgetTransferStatus?: (id: string, account: Account.Account | null) => Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;\n\n\t\t/**\n\t\t * Method to list transactions\n\t\t */\n\t\tlistTransactions?: (request: KeetaAssetMovementAnchorlistTransactionsRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse>>;\n\n\t\t/**\n\t\t * Method to share KYC (Know Your Customer) information\n\t\t */\n\t\tshareKYC?: (request: KeetaAssetMovementAnchorShareKYCRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorShareKYCResponse>>;\n\n\t\t/**\n\t\t * Method to execute a transfer instruction, used for pull based transactions\n\t\t */\n\t\texecuteTransfer?: (request: KeetaAssetMovementAnchorExecuteTransferRequest & { id: string; }) => Promise<ExtractOk<KeetaAssetMovementAnchorExecuteTransferResponse>>;\n\t}\n};\n\nfunction serializeTransactionResponse(transaction: ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction']): ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction'] {\n\treturn({\n\t\t...transaction,\n\t\tfrom: {\n\t\t\t...transaction.from,\n\t\t\tlocation: convertAssetLocationToString(transaction.from.location)\n\t\t},\n\t\tto: {\n\t\t\t...transaction.to,\n\t\t\tlocation: convertAssetLocationToString(transaction.to.location)\n\t\t}\n\t});\n}\n\nfunction serializePersistentAddressTemplateResponse(template: ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number]): ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number] {\n\treturn({\n\t\t...template,\n\t\tlocation: convertAssetLocationToString(template.location)\n\t});\n}\n\nexport class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorAssetMovementServerConfig> implements Required<KeetaAnchorAssetMovementServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorAssetMovementServerConfig['homepage']>;\n\treadonly assetMovement: NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement']>;\n\n\tconstructor(config: KeetaAnchorAssetMovementServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.assetMovement = config.assetMovement;\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tfunction addRoute<\n\t\t\tHandlerName extends keyof KeetaAnchorAssetMovementServerConfig['assetMovement'],\n\t\t\tSerializedRequest extends { [key: string]: unknown } | undefined,\n\t\t\tResponse\n\t\t>(input: {\n\t\t\tmethod: 'GET' | 'POST';\n\t\t\thandlerName: HandlerName;\n\t\t\tpathName?: string;\n\t\t\tassertRequest?: (data: unknown) => SerializedRequest;\n\t\t\tserializeResponse?: (data: ExtractOk<Response>) => unknown;\n\t\t\tassertResponse: (data: unknown) => Response;\n\t\t\tgetSigningData?: (data: SerializedRequest, params: Map<string, string>) => Signable;\n\t\t\tparseRequestToArgs?: (params: {\n\t\t\t\tparams: Map<string, string>;\n\t\t\t\tbody: SerializedRequest | undefined,\n\t\t\t\turl: URL,\n\t\t\t\taccount: Account.Account | null\n\t\t\t\t// Typescript needs any here, but eslint does not like it\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t}) => NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement'][HandlerName]> extends (...args: infer R extends any[]) => any ? R : never;\n\t\t\tgetSignatureFieldAccountFromRequest?: (params: { body: JSONSerializable | undefined, url: URL }) => Partial<HTTPSignedFieldURLParameters>;\n\t\t}) {\n\t\t\tconst handler = config.assetMovement[input.handlerName];\n\t\t\tif (handler === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof handler !== 'function') {\n\t\t\t\tthrow(new Error(`internal error: handler for ${String(input.handlerName)} is not a function`));\n\t\t\t}\n\n\t\t\tconst authenticationRequired = config.assetMovement.authenticationRequired === true;\n\n\t\t\troutes[`${input.method} /api/${input.pathName ?? input.handlerName}`] = async function(params, postData, _ignore_headers, url) {\n\t\t\t\tlet request: SerializedRequest;\n\t\t\t\tif (input.method === 'GET') {\n\t\t\t\t\t// For GET requests, we do not expect a body\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\trequest = undefined as SerializedRequest;\n\t\t\t\t} else {\n\t\t\t\t\tif (!input.assertRequest) {\n\t\t\t\t\t\tthrow(new Error('input.assertRequest is required when method = POST'));\n\t\t\t\t\t}\n\t\t\t\t\trequest = input.assertRequest(postData);\n\t\t\t\t}\n\n\t\t\t\tlet account: Account.Account | null = null;\n\t\t\t\tif (authenticationRequired || (request !== undefined && 'signed' in request)) {\n\t\t\t\t\tlet signed;\n\t\t\t\t\tif (input.getSignatureFieldAccountFromRequest !== undefined) {\n\t\t\t\t\t\tconst parsed = input.getSignatureFieldAccountFromRequest({ body: postData, url });\n\n\t\t\t\t\t\tif (!parsed.account || !parsed.signedField) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = parsed.account;\n\t\t\t\t\t\tsigned = parsed.signedField;\n\t\t\t\t\t} else if (request) {\n\t\t\t\t\t\tif (!('account' in request) || !('signed' in request)) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof request.account !== 'string') {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid account public key'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = KeetaNet.lib.Account.fromPublicKeyString(request.account).assertAccount();\n\t\t\t\t\t\tsigned = assertHTTPSignedField(request.signed);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow(new Error('when request is not defined, getSignatureFieldAccountFromRequest must be provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst signable = input.getSigningData ? input.getSigningData(request, params) : [];\n\n\t\t\t\t\tconst valid = await VerifySignedData(account, signable, signed);\n\n\t\t\t\t\tif (!valid) {\n\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid signature'));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tlet parsedRequest: any[];\n\t\t\t\tif (input.parseRequestToArgs) {\n\t\t\t\t\tparsedRequest = input.parseRequestToArgs({ body: request, params, url, account: account ?? null });\n\t\t\t\t} else {\n\t\t\t\t\tparsedRequest = [ request, account ];\n\t\t\t\t}\n\n\t\t\t\t// @ts-ignore\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst result = await handler(...parsedRequest);\n\n\t\t\t\tif ('ok' in result && (result.ok !== undefined && result.ok !== true)) {\n\t\t\t\t\tthrow(new Error('internal error: response serialization must not have ok field'));\n\t\t\t\t}\n\n\t\t\t\tconst resp = input.assertResponse({ ...result, ok: true });\n\n\t\t\t\tlet serialized;\n\t\t\t\tif (input.serializeResponse) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\tserialized = input.serializeResponse(resp as ExtractOk<Response>);\n\t\t\t\t} else {\n\t\t\t\t\tserialized = resp;\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: commonJSONStringify(serialized)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tsourceLocation: data.sourceLocation ? convertAssetLocationToString(data.sourceLocation) : undefined,\n\t\t\t\t\tdestinationLocation: data.destinationLocation ? convertAssetLocationToString(data.destinationLocation) : undefined\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\taddresses: data.addresses.map(addr => ({\n\t\t\t\t\t\t...addr,\n\t\t\t\t\t\tsourceLocation: addr.sourceLocation ? convertAssetLocationToString(addr.sourceLocation) : undefined,\n\t\t\t\t\t\tdestinationLocation: addr.destinationLocation ? convertAssetLocationToString(addr.destinationLocation) : undefined\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'initiateTransfer',\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorInitiateTransferRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorInitiateTransferResponse,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tinstructionChoices: data.instructionChoices.map(function(choice) {\n\t\t\t\t\t\tconst ret = { ...choice };\n\t\t\t\t\t\tif ('location' in ret) {\n\t\t\t\t\t\t\tret.location = convertAssetLocationToString(ret.location);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn(ret);\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'executeTransfer',\n\t\t\tpathName: 'executeTransfer/:id',\n\t\t\tgetSigningData: function(data, params) {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\t\t\t\treturn(getKeetaAssetMovementAnchorExecuteTransferRequestSigningData({\n\t\t\t\t\tid: id,\n\t\t\t\t\t...data\n\t\t\t\t}));\n\t\t\t},\n\t\t\tparseRequestToArgs: ({ body, params }) => {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\tif (!body) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid request body'));\n\t\t\t\t}\n\n\t\t\t\treturn([ { id, ...body } ] as const);\n\t\t\t},\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorExecuteTransferRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorExecuteTransferResponse,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransaction: serializeTransactionResponse(data.transaction)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'GET',\n\t\t\thandlerName: 'getTransferStatus',\n\t\t\tpathName: 'getTransferStatus/:id',\n\t\t\tassertRequest: (input) => {\n\t\t\t\tif (input !== undefined) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('No body expected for getTransferStatus'));\n\t\t\t\t}\n\n\t\t\t\treturn(undefined);\n\t\t\t},\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\t\t\tgetSignatureFieldAccountFromRequest: ({ url }) => parseSignatureFromURL(url),\n\t\t\tparseRequestToArgs: ({ params, account }) => {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn([ id, account ] as const);\n\t\t\t},\n\t\t\tgetSigningData(_ignore_request, params) {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn(getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData({ id }));\n\t\t\t},\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransaction: serializeTransactionResponse(data.transaction)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listTransactions',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorlistTransactionsRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransactions: data.transactions.map(tx => serializeTransactionResponse(tx))\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'initiatePersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\t...(serializePersistentAddressTemplateResponse(data))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttemplates: data.templates.map(template => serializePersistentAddressTemplateResponse(template))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'shareKYC',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorShareKYCRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorShareKYCResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorShareKYCRequestSigningData\n\t\t});\n\n\t\treturn(routes);\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]> {\n\t\tconst operations: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['operations'] = {};\n\n\t\tconst routes = [\n\t\t\t'initiateTransfer',\n\t\t\t'listTransactions',\n\t\t\t'initiatePersistentForwardingTemplate',\n\t\t\t'createPersistentForwardingTemplate',\n\t\t\t'listPersistentForwardingTemplate',\n\t\t\t'createPersistentForwarding',\n\t\t\t'listPersistentForwarding',\n\t\t\t'shareKYC',\n\t\t\t[ 'getTransferStatus', 'getTransferStatus/{id}' ],\n\t\t\t[ 'executeTransfer', 'executeTransfer/{id}' ]\n\t\t] as const satisfies ((keyof typeof operations) | [ keyof typeof operations, string ])[];\n\n\t\tfor (const routeInput of routes) {\n\t\t\tlet op;\n\t\t\tlet url;\n\t\t\tif (Array.isArray(routeInput)) {\n\t\t\t\top = routeInput[0];\n\t\t\t\turl = routeInput[1];\n\t\t\t} else {\n\t\t\t\top = routeInput;\n\t\t\t\turl = routeInput;\n\t\t\t}\n\n\t\t\tif (this.assetMovement[op] !== undefined) {\n\t\t\t\tconst computedURL = (new URL(`/api/${url}`, this.url)).toString();\n\t\t\t\tif (this.assetMovement.authenticationRequired) {\n\t\t\t\t\toperations[op] = {\n\t\t\t\t\t\turl: computedURL,\n\t\t\t\t\t\toptions: { authentication: { method: 'keeta-account', type: 'required' }}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toperations[op] = computedURL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(operations).length === 0) {\n\t\t\tthrow(new KeetaAnchorUserError('No operations are supported on this server'));\n\t\t}\n\t\treturn({\n\t\t\t...(this.assetMovement.legal ? { legal: this.assetMovement.legal } : {}),\n\t\t\t...(this.assetMovement.locationMetadata ? { locationMetadata: this.assetMovement.locationMetadata } : {}),\n\t\t\toperations: operations,\n\t\t\tsupportedAssets: this.assetMovement.supportedAssets\n\t\t});\n\t}\n}\n"]}
@@ -6,6 +6,7 @@ import type Resolver from '../../lib/resolver.ts';
6
6
  import type { ServiceMetadata, SharedLookupCriteria } from '../../lib/resolver.ts';
7
7
  import type { BrandedString } from '../../lib/utils/brand.ts';
8
8
  import type { ConversionInput, ConversionInputCanonical, KeetaFXAnchorEstimate, KeetaFXAnchorExchange, KeetaFXAnchorQuote, KeetaNetTokenPublicKeyString } from './common.ts';
9
+ import type { SharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
9
10
  /**
10
11
  * An opaque type that represents a provider ID.
11
12
  */
@@ -63,12 +64,12 @@ type KeetaFXAnchorOperations = {
63
64
  [key: string]: string;
64
65
  }) => URL;
65
66
  };
66
- type KeetaFXServiceInfo = {
67
+ interface KeetaFXServiceInfo extends SharedAnchorMetadataLegalExtension {
67
68
  operations: {
68
69
  [operation in keyof KeetaFXAnchorOperations]: Promise<KeetaFXAnchorOperations[operation]>;
69
70
  };
70
71
  from: NonNullable<ServiceMetadata['services']['fx']>[string]['from'];
71
- };
72
+ }
72
73
  interface KeetaFXAnchorBaseConfig {
73
74
  client: KeetaNetUserClient;
74
75
  logger?: Logger | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/fx/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/fx/client.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,13 @@ import crypto from '../../lib/utils/crypto.js';
5
5
  import { validateURL } from '../../lib/utils/url.js';
6
6
  import { assertKeetaNetTokenPublicKeyString, isKeetaFXAnchorEstimateResponse, isKeetaFXAnchorExchangeResponse, isKeetaFXAnchorQuoteResponse, Errors as FXErrors } from './common.js';
7
7
  import { KeetaAnchorError, KeetaAnchorUserError } from '../../lib/error.js';
8
+ import { resolveSharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
8
9
  function typedFxServiceEntries(obj) {
9
10
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
10
11
  return Object.entries(obj);
11
12
  }
12
13
  const KeetaFXAnchorClientAccessToken = Symbol('KeetaFXAnchorClientAccessToken');
13
- async function getEndpoints(resolver, request, _ignored_account, sharedCriteria) {
14
+ async function getEndpoints(resolver, request, _ignored_account, sharedCriteria, options) {
14
15
  const criteria = {};
15
16
  if (request.from !== undefined) {
16
17
  criteria.inputCurrencyCode = request.from.publicKeyString.get();
@@ -79,6 +80,7 @@ async function getEndpoints(resolver, request, _ignored_account, sharedCriteria)
79
80
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
80
81
  id,
81
82
  {
83
+ ...(await resolveSharedAnchorMetadataLegalExtension(serviceInfo.legal, { logger: options?.logger })),
82
84
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
83
85
  operations: operationsFunctions,
84
86
  from: allFrom
@@ -549,7 +551,7 @@ class KeetaFXAnchorClient extends KeetaFXAnchorBase {
549
551
  }
550
552
  const conversion = await this.canonicalizeConversionTokens(input);
551
553
  const account = options.account ?? this.#account;
552
- const providerEndpoints = await getEndpoints(this.resolver, conversion, account, sharedCriteria);
554
+ const providerEndpoints = await getEndpoints(this.resolver, conversion, account, sharedCriteria, { logger: this.logger });
553
555
  if (providerEndpoints === null) {
554
556
  return (null);
555
557
  }
@@ -583,7 +585,7 @@ class KeetaFXAnchorClient extends KeetaFXAnchorBase {
583
585
  async getBaseProvidersForConversion(request, options = {}, sharedCriteria) {
584
586
  const conversion = await this.canonicalizeConversionInput(request);
585
587
  const account = options.account ?? this.#account;
586
- const providerEndpoints = await getEndpoints(this.resolver, conversion, account, sharedCriteria);
588
+ const providerEndpoints = await getEndpoints(this.resolver, conversion, account, sharedCriteria, { logger: this.logger });
587
589
  if (providerEndpoints === null) {
588
590
  return (null);
589
591
  }
@@ -667,6 +669,9 @@ class KeetaFXAnchorClient extends KeetaFXAnchorBase {
667
669
  const retval = [];
668
670
  for (const quoteOrEstimate of quotesAndEstimates) {
669
671
  if (!quoteOrEstimate.quote) {
672
+ if (quoteOrEstimate.error && !FXErrors.QuoteIssuanceDisabled.isInstance(quoteOrEstimate.error)) {
673
+ this.logger?.debug(`Failed to get quote from provider ${String(quoteOrEstimate.provider.providerID)}:`, quoteOrEstimate.error);
674
+ }
670
675
  continue;
671
676
  }
672
677
  retval.push(quoteOrEstimate.quote);