@keetanetwork/anchor 0.0.53 → 0.0.60

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 (95) 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/queue/drivers/queue_postgres.d.ts +20 -3
  22. package/lib/queue/drivers/queue_postgres.d.ts.map +1 -1
  23. package/lib/queue/drivers/queue_postgres.js +152 -40
  24. package/lib/queue/drivers/queue_postgres.js.map +1 -1
  25. package/lib/resolver.d.ts +15 -19
  26. package/lib/resolver.d.ts.map +1 -1
  27. package/lib/resolver.js +1106 -504
  28. package/lib/resolver.js.map +1 -1
  29. package/npm-shrinkwrap.json +2 -2
  30. package/package.json +1 -1
  31. package/services/asset-movement/client.d.ts +31 -12
  32. package/services/asset-movement/client.d.ts.map +1 -1
  33. package/services/asset-movement/client.js +247 -25
  34. package/services/asset-movement/client.js.map +1 -1
  35. package/services/asset-movement/common.d.ts +142 -62
  36. package/services/asset-movement/common.d.ts.map +1 -1
  37. package/services/asset-movement/common.generated.d.ts +51 -0
  38. package/services/asset-movement/common.generated.d.ts.map +1 -0
  39. package/services/asset-movement/common.generated.js +54492 -0
  40. package/services/asset-movement/common.generated.js.map +1 -0
  41. package/services/asset-movement/common.js +25 -35368
  42. package/services/asset-movement/common.js.map +1 -1
  43. package/services/asset-movement/lib/data/addresses/bank-account/ca.d.ts +4 -0
  44. package/services/asset-movement/lib/data/addresses/bank-account/ca.d.ts.map +1 -0
  45. package/services/asset-movement/lib/data/addresses/bank-account/ca.js +49 -0
  46. package/services/asset-movement/lib/data/addresses/bank-account/ca.js.map +1 -0
  47. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts +4 -0
  48. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts.map +1 -1
  49. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js +4 -0
  50. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js.map +1 -1
  51. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts.map +1 -1
  52. package/services/asset-movement/lib/data/addresses/bank-account/interac.js +9 -20
  53. package/services/asset-movement/lib/data/addresses/bank-account/interac.js.map +1 -1
  54. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts.map +1 -1
  55. package/services/asset-movement/lib/data/addresses/bank-account/pix.js +3 -2
  56. package/services/asset-movement/lib/data/addresses/bank-account/pix.js.map +1 -1
  57. package/services/asset-movement/lib/data/addresses/bank-account/uae.d.ts +4 -0
  58. package/services/asset-movement/lib/data/addresses/bank-account/uae.d.ts.map +1 -0
  59. package/services/asset-movement/lib/data/addresses/bank-account/uae.js +45 -0
  60. package/services/asset-movement/lib/data/addresses/bank-account/uae.js.map +1 -0
  61. package/services/asset-movement/lib/data/addresses/types.generated.d.ts +260 -52
  62. package/services/asset-movement/lib/data/addresses/types.generated.d.ts.map +1 -1
  63. package/services/asset-movement/lib/data/addresses/types.generated.js +252 -35
  64. package/services/asset-movement/lib/data/addresses/types.generated.js.map +1 -1
  65. package/services/asset-movement/lib/location.d.ts +10 -1
  66. package/services/asset-movement/lib/location.d.ts.map +1 -1
  67. package/services/asset-movement/lib/location.generated.d.ts +2 -1
  68. package/services/asset-movement/lib/location.generated.d.ts.map +1 -1
  69. package/services/asset-movement/lib/location.generated.js +25 -2
  70. package/services/asset-movement/lib/location.generated.js.map +1 -1
  71. package/services/asset-movement/lib/location.js +3 -0
  72. package/services/asset-movement/lib/location.js.map +1 -1
  73. package/services/asset-movement/server.d.ts +21 -6
  74. package/services/asset-movement/server.d.ts.map +1 -1
  75. package/services/asset-movement/server.js +69 -3
  76. package/services/asset-movement/server.js.map +1 -1
  77. package/services/fx/client.d.ts +3 -2
  78. package/services/fx/client.d.ts.map +1 -1
  79. package/services/fx/client.js +8 -3
  80. package/services/fx/client.js.map +1 -1
  81. package/services/fx/server.d.ts +2 -1
  82. package/services/fx/server.d.ts.map +1 -1
  83. package/services/fx/server.js +3 -0
  84. package/services/fx/server.js.map +1 -1
  85. package/services/storage/clients/contacts.generated.js +686 -310
  86. package/services/storage/clients/contacts.generated.js.map +1 -1
  87. package/services/storage/common.d.ts +7 -1
  88. package/services/storage/common.d.ts.map +1 -1
  89. package/services/storage/common.js.map +1 -1
  90. package/services/storage/server.js +1 -1
  91. package/services/storage/server.js.map +1 -1
  92. package/services/storage/test-utils.d.ts +1 -0
  93. package/services/storage/test-utils.d.ts.map +1 -1
  94. package/services/storage/test-utils.js +3 -0
  95. package/services/storage/test-utils.js.map +1 -1
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@keetanetwork/anchor",
3
- "version": "0.0.53",
3
+ "version": "0.0.60",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@keetanetwork/anchor",
9
- "version": "0.0.53",
9
+ "version": "0.0.60",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@keetanetwork/currency-info": "1.2.5",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keetanetwork/anchor",
3
- "version": "0.0.53",
3
+ "version": "0.0.60",
4
4
  "description": "KeetaNetwork Network Anchor",
5
5
  "main": "client/index.js",
6
6
  "scripts": {
@@ -1,12 +1,14 @@
1
1
  import type { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
2
2
  import { getDefaultResolver } from '../../config.js';
3
3
  import type { UserClient as KeetaNetUserClient } from '@keetanetwork/keetanet-client';
4
- import type { KeetaAssetMovementAnchorGetTransferStatusResponse, KeetaAssetMovementAnchorCreatePersistentForwardingResponse, SupportedAssetsMetadata, ProviderSearchInput, KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, AssetTransferInstructions, KeetaAssetMovementAnchorCreatePersistentForwardingClientRequest, KeetaAssetMovementAnchorInitiateTransferClientRequest, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateClientRequest, KeetaAssetMovementAnchorlistTransactionsClientRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateClientRequest, PersistentAddressTemplateData, KeetaAssetMovementAnchorGetTransferStatusClientRequest, KeetaAssetMovementAnchorShareKYCClientRequest, KeetaAssetMovementAnchorListPersistentForwardingClientRequest, KeetaPersistentForwardingAddressDetails, KeetaAssetMovementAnchorInitiateTransferResponse } from './common.js';
4
+ import type { KeetaAssetMovementAnchorGetTransferStatusResponse, KeetaAssetMovementAnchorCreatePersistentForwardingResponse, SupportedAssetsMetadata, ProviderSearchInput, KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, KeetaAssetMovementAnchorCreatePersistentForwardingClientRequest, KeetaAssetMovementAnchorInitiateTransferClientRequest, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateClientRequest, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateClientRequest, KeetaAssetMovementAnchorlistTransactionsClientRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateClientRequest, PersistentAddressTemplateData, KeetaAssetMovementAnchorGetTransferStatusClientRequest, KeetaAssetMovementAnchorShareKYCClientRequest, KeetaAssetMovementAnchorListPersistentForwardingClientRequest, KeetaPersistentForwardingAddressDetails, KeetaAssetMovementAnchorInitiateTransferResponse, KeetaAssetMovementAnchorExecuteTransferClientRequest, AnchorTokenLocationMetadata, AnchorCustomLocationMetadata, AssetLocationLike, KeetaAssetMovementAnchorSimulateTransferResponse, KeetaAssetMovementAnchorSimulateTransferClientRequest } from './common.js';
5
5
  import type { Logger } from '../../lib/log/index.ts';
6
6
  import Resolver from "../../lib/resolver.js";
7
- import type { ServiceMetadata, ServiceMetadataAuthenticationType } from '../../lib/resolver.ts';
7
+ import type { ServiceMetadata, ServiceMetadataAuthenticationType, SharedLookupCriteria } from '../../lib/resolver.ts';
8
8
  import type { BrandedString } from '../../lib/utils/brand.js';
9
9
  import type { ExtractOk } from '../../lib/http-server/common.js';
10
+ import { type SharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
11
+ import type { ExternalChainAsset } from '../../lib/asset.js';
10
12
  /**
11
13
  * The configuration options for the Asset Movement (Inbound/Outbound) Anchor client.
12
14
  */
@@ -61,12 +63,13 @@ type KeetaAssetMovementAnchorOperations = {
61
63
  /**
62
64
  * The service information for a KYC Anchor service.
63
65
  */
64
- type KeetaAssetMovementServiceInfo = {
66
+ interface KeetaAssetMovementServiceInfo extends SharedAnchorMetadataLegalExtension {
65
67
  operations: {
66
68
  [operation in keyof KeetaAssetMovementAnchorOperations]: Promise<KeetaAssetMovementAnchorOperations[operation]>;
67
69
  };
68
70
  supportedAssets: SupportedAssetsMetadata[];
69
- };
71
+ locationMetadata?: AnchorCustomLocationMetadata;
72
+ }
70
73
  interface KeetaAssetMovementAnchorBaseConfig {
71
74
  client: KeetaNetUserClient;
72
75
  logger?: Logger | undefined;
@@ -76,17 +79,29 @@ declare class KeetaAssetMovementAnchorBase {
76
79
  protected readonly client: KeetaNetUserClient;
77
80
  constructor(config: KeetaAssetMovementAnchorBaseConfig);
78
81
  }
82
+ type SimulationOrTransferResponse = ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse> | ExtractOk<KeetaAssetMovementAnchorSimulateTransferResponse>;
83
+ interface BaseKeetaAssetMovementTransferConstructorArguments<Transfer extends SimulationOrTransferResponse> {
84
+ provider: KeetaAssetMovementAnchorProvider;
85
+ request: KeetaAssetMovementAnchorInitiateTransferClientRequest;
86
+ transfer: Transfer;
87
+ }
88
+ declare class BaseKeetaAssetMovementTransfer<Transfer extends SimulationOrTransferResponse> {
89
+ readonly provider: KeetaAssetMovementAnchorProvider;
90
+ readonly request: KeetaAssetMovementAnchorInitiateTransferClientRequest;
91
+ readonly transfer: Transfer;
92
+ constructor({ request, transfer, provider }: BaseKeetaAssetMovementTransferConstructorArguments<Transfer>);
93
+ get instructions(): Transfer['instructionChoices'];
94
+ }
79
95
  /**
80
96
  * Represents an in-progress Asset Movement request.
81
97
  */
82
- declare class KeetaAssetMovementTransfer {
83
- private readonly provider;
84
- private request;
85
- private transfer;
86
- constructor(provider: KeetaAssetMovementAnchorProvider, request: KeetaAssetMovementAnchorInitiateTransferClientRequest, transfer: ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>);
87
- getTransferStatus(): Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
98
+ declare class KeetaAssetMovementTransfer extends BaseKeetaAssetMovementTransfer<ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>> {
88
99
  get transferId(): string;
89
- get instructions(): AssetTransferInstructions[];
100
+ getTransferStatus(): Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
101
+ executeTransfer(input: Omit<KeetaAssetMovementAnchorExecuteTransferClientRequest, 'id'>): Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
102
+ }
103
+ declare class KeetaAssetMovementSimulatedTransfer extends BaseKeetaAssetMovementTransfer<ExtractOk<KeetaAssetMovementAnchorSimulateTransferResponse>> {
104
+ createTransfer(): Promise<KeetaAssetMovementTransfer>;
90
105
  }
91
106
  interface AwaitPromiseURLOptions {
92
107
  defaultPollIntervalMs?: number;
@@ -100,7 +115,10 @@ declare class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorB
100
115
  private readonly parent;
101
116
  constructor(serviceInfo: KeetaAssetMovementServiceInfo, providerID: ProviderID, parent: KeetaAssetMovementAnchorClient);
102
117
  initiateTransfer(request: KeetaAssetMovementAnchorInitiateTransferClientRequest): Promise<KeetaAssetMovementTransfer>;
118
+ simulateTransfer(request: KeetaAssetMovementAnchorSimulateTransferClientRequest): Promise<KeetaAssetMovementSimulatedTransfer>;
119
+ executeTransfer(request: KeetaAssetMovementAnchorExecuteTransferClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
103
120
  getTransferStatus(request: KeetaAssetMovementAnchorGetTransferStatusClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
121
+ initiatePersistentForwardingTemplate(request: KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse>>;
104
122
  createPersistentForwardingTemplate(request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;
105
123
  createPersistentForwardingAddress(request: KeetaAssetMovementAnchorCreatePersistentForwardingClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;
106
124
  listForwardingAddressTemplates(request: KeetaAssetMovementAnchorListForwardingAddressTemplateClientRequest): Promise<{
@@ -113,13 +131,14 @@ declare class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorB
113
131
  }>;
114
132
  listTransactions(request: KeetaAssetMovementAnchorlistTransactionsClientRequest): Promise<ExtractOk<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse>>;
115
133
  shareKYCAttributes(request: KeetaAssetMovementAnchorShareKYCClientRequest, awaitOptions?: AwaitPromiseURLOptions): Promise<void>;
134
+ getAssetMetadataForLocation(location: AssetLocationLike, asset: ExternalChainAsset): AnchorTokenLocationMetadata | null;
116
135
  }
117
136
  declare class KeetaAssetMovementAnchorClient extends KeetaAssetMovementAnchorBase {
118
137
  #private;
119
138
  readonly resolver: Resolver;
120
139
  readonly id: string;
121
140
  constructor(client: KeetaNetUserClient, config?: KeetaAssetMovementClientConfig);
122
- getProvidersForTransfer(request: ProviderSearchInput): Promise<KeetaAssetMovementAnchorProvider[] | null>;
141
+ getProvidersForTransfer(request: ProviderSearchInput, shared?: SharedLookupCriteria): Promise<KeetaAssetMovementAnchorProvider[] | null>;
123
142
  getProviderByID(providerID: string): Promise<KeetaAssetMovementAnchorProvider | null>;
124
143
  }
125
144
  export default KeetaAssetMovementAnchorClient;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as __typia_transform__assertGuard from "typia/lib/internal/_assertGuard.js";
2
2
  import * as __typia_transform__accessExpressionAsString from "typia/lib/internal/_accessExpressionAsString.js";
3
3
  import { getDefaultResolver } from '../../config.js';
4
- import { assertKeetaSupportedAssetsMetadata, convertAssetLocationToString, convertAssetOrPairSearchInputToCanonical, convertAssetSearchInputToCanonical, getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData, getKeetaAssetMovementAnchorInitiateTransferRequestSigningData, getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorlistTransactionsRequestSigningData, getKeetaAssetMovementAnchorShareKYCRequestSigningData, isKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, isKeetaAssetMovementAnchorCreatePersistentForwardingResponse, isKeetaAssetMovementAnchorGetExchangeStatusResponse, isKeetaAssetMovementAnchorInitiateTransferResponse, isKeetaAssetMovementAnchorListForwardingAddressTemplateResponse, isKeetaAssetMovementAnchorListPersistentForwardingResponse, isKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, isKeetaAssetMovementAnchorShareKYCResponse } from './common.js';
4
+ import { assertKeetaSupportedAssetsMetadataItem, convertAssetLocationToString, convertAssetOrPairSearchInputToCanonical, convertAssetSearchInputToCanonical, getKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData, isKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorExecuteTransferRequestSigningData, getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData, getKeetaAssetMovementAnchorInitiateTransferRequestSigningData, getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorlistTransactionsRequestSigningData, getKeetaAssetMovementAnchorShareKYCRequestSigningData, isKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, isKeetaAssetMovementAnchorCreatePersistentForwardingResponse, isKeetaAssetMovementAnchorExecuteTransferResponse, isKeetaAssetMovementAnchorGetExchangeStatusResponse, isKeetaAssetMovementAnchorInitiateTransferResponse, isKeetaAssetMovementAnchorListForwardingAddressTemplateResponse, isKeetaAssetMovementAnchorListPersistentForwardingResponse, isKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, isKeetaAssetMovementAnchorShareKYCResponse, toAssetLocationFromString, isExternalChainAsset, isAnchorTokenLocationMetadata, isKeetaAssetMovementAnchorSimulateTransferResponse, getKeetaAssetMovementAnchorSimulateTransferRequestSigningData } from './common.js';
5
5
  import Resolver from "../../lib/resolver.js";
6
6
  import crypto from '../../lib/utils/crypto.js';
7
7
  import { createAssertEquals } from 'typia';
@@ -9,6 +9,7 @@ import { addSignatureToURL } from '../../lib/http-server/common.js';
9
9
  import { SignData } from '../../lib/utils/signing.js';
10
10
  import { KeetaAnchorError } from '../../lib/error.js';
11
11
  import { KeetaNet } from '../../client/index.js';
12
+ import { resolveSharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
12
13
  /**
13
14
  * An opaque type that represents an Asset Movement Anchor request ID
14
15
  */
@@ -137,6 +138,7 @@ const assertServiceMetadataEndpoint = (() => { const _io0 = (input, _exceptionab
137
138
  }
138
139
  return input;
139
140
  }; })();
141
+ ;
140
142
  function validateURL(url) {
141
143
  if (url === undefined || url === null) {
142
144
  throw (new Error('Invalid URL: null or undefined'));
@@ -160,7 +162,112 @@ async function getEndpoints(resolver, request, shared, logger) {
160
162
  }
161
163
  const serviceInfoPromises = Object.entries(response).map(async function ([id, serviceInfo]) {
162
164
  const supportedAssetsMetadata = await Resolver.Metadata.fullyResolveValuizable(serviceInfo.supportedAssets);
163
- const supportedAssets = assertKeetaSupportedAssetsMetadata(supportedAssetsMetadata);
165
+ if (!Array.isArray(supportedAssetsMetadata)) {
166
+ throw (new Error('Invalid supportedAssets metadata: expected an array'));
167
+ }
168
+ const supportedAssets = [];
169
+ for (const item of supportedAssetsMetadata) {
170
+ try {
171
+ supportedAssets.push(assertKeetaSupportedAssetsMetadataItem(item));
172
+ }
173
+ catch (error) {
174
+ logger?.debug('getEndpoints', `Failed to resolve supportedAssets metadata item for provider ${id}`, error, item);
175
+ }
176
+ }
177
+ const locationMetadata = await (async () => {
178
+ let locationMetadataVal;
179
+ if (serviceInfo.locationMetadata) {
180
+ locationMetadataVal = await serviceInfo.locationMetadata('object');
181
+ }
182
+ if (!locationMetadataVal) {
183
+ return (undefined);
184
+ }
185
+ const chainsResult = await Promise.allSettled(Object.entries(locationMetadataVal).map(async ([location, assetsValue]) => {
186
+ const parsedLocation = toAssetLocationFromString(location);
187
+ if (parsedLocation.type !== 'chain') {
188
+ throw (new Error(`Invalid location type in AssetLocation string: ${parsedLocation.type}`));
189
+ }
190
+ if (parsedLocation.chain.type === 'keeta') {
191
+ throw (new Error('Keeta chain type is not supported in AssetLocation metadata'));
192
+ }
193
+ const chainType = parsedLocation.chain.type;
194
+ // We can assert here as we have validated the chain type in the parsing function
195
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
196
+ const locationString = convertAssetLocationToString(parsedLocation);
197
+ let resolvedAssetsObject = undefined;
198
+ if (assetsValue) {
199
+ resolvedAssetsObject = await assetsValue('object');
200
+ }
201
+ if (!resolvedAssetsObject) {
202
+ return (null);
203
+ }
204
+ let assets;
205
+ if (resolvedAssetsObject.assets) {
206
+ const assetsValue = await resolvedAssetsObject.assets('object');
207
+ const resolvedAssets = await Promise.allSettled(Object.entries(assetsValue).map(async ([assetId, assetMetadata]) => {
208
+ if (!isExternalChainAsset(assetId, chainType)) {
209
+ throw (new Error(`Invalid asset ID for chain type ${chainType}: ${assetId}`));
210
+ }
211
+ let assetMetadataVal;
212
+ if (assetMetadata) {
213
+ assetMetadataVal = await assetMetadata('object');
214
+ }
215
+ if (!assetMetadataVal) {
216
+ return (null);
217
+ }
218
+ const anchorTokenLocationMetadata = {
219
+ displayName: await assetMetadataVal.displayName?.('string'),
220
+ ticker: await assetMetadataVal.ticker?.('string'),
221
+ logoURI: await assetMetadataVal.logoURI?.('string'),
222
+ decimalPlaces: await assetMetadataVal.decimalPlaces?.('primitive')
223
+ };
224
+ if (!isAnchorTokenLocationMetadata(anchorTokenLocationMetadata)) {
225
+ throw (new Error(`Invalid asset metadata for asset ID ${assetId} in chain type ${chainType}`));
226
+ }
227
+ return [assetId, anchorTokenLocationMetadata];
228
+ }));
229
+ for (const result of resolvedAssets) {
230
+ if (result.status === 'rejected') {
231
+ logger?.debug('Failed to resolve asset metadata', result.reason);
232
+ continue;
233
+ }
234
+ if (!result.value) {
235
+ continue;
236
+ }
237
+ if (!assets) {
238
+ assets = {};
239
+ }
240
+ assets[result.value[0]] = result.value[1];
241
+ }
242
+ }
243
+ return [
244
+ locationString,
245
+ {
246
+ ...(assets ? { assets } : {})
247
+ }
248
+ ];
249
+ }));
250
+ let chains;
251
+ for (const result of chainsResult) {
252
+ if (result.status === 'rejected') {
253
+ logger?.debug('Failed to resolve location metadata', result.reason);
254
+ continue;
255
+ }
256
+ if (!result.value) {
257
+ continue;
258
+ }
259
+ if (!chains) {
260
+ chains = {};
261
+ }
262
+ // XXX:TODO Add comment
263
+ // @ts-ignore
264
+ chains[result.value[0]] = result.value[1];
265
+ }
266
+ if (!chains) {
267
+ return (undefined);
268
+ }
269
+ return (chains);
270
+ })();
164
271
  const operations = await serviceInfo.operations('object');
165
272
  const operationsFunctions = {};
166
273
  for (const [key, operation] of Object.entries(operations)) {
@@ -210,8 +317,10 @@ async function getEndpoints(resolver, request, shared, logger) {
210
317
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
211
318
  id,
212
319
  {
320
+ ...(await resolveSharedAnchorMetadataLegalExtension(serviceInfo.legal, { logger })),
213
321
  operations: operationsFunctions,
214
- supportedAssets: supportedAssets
322
+ supportedAssets: supportedAssets,
323
+ ...(locationMetadata ? { locationMetadata } : {})
215
324
  }
216
325
  ]);
217
326
  });
@@ -226,27 +335,38 @@ class KeetaAssetMovementAnchorBase {
226
335
  this.logger = config.logger;
227
336
  }
228
337
  }
229
- /**
230
- * Represents an in-progress Asset Movement request.
231
- */
232
- class KeetaAssetMovementTransfer {
338
+ class BaseKeetaAssetMovementTransfer {
233
339
  provider;
234
340
  request;
235
341
  transfer;
236
- constructor(provider, request, transfer) {
342
+ constructor({ request, transfer, provider }) {
237
343
  this.provider = provider;
238
344
  this.request = request;
239
345
  this.transfer = transfer;
240
346
  }
347
+ get instructions() {
348
+ return (this.transfer.instructionChoices);
349
+ }
350
+ }
351
+ /**
352
+ * Represents an in-progress Asset Movement request.
353
+ */
354
+ class KeetaAssetMovementTransfer extends BaseKeetaAssetMovementTransfer {
355
+ get transferId() {
356
+ return (this.transfer.id);
357
+ }
241
358
  async getTransferStatus() {
242
359
  const account = this.request.account ? { account: this.request.account } : undefined;
243
360
  return (await this.provider.getTransferStatus({ id: this.transfer.id, ...account }));
244
361
  }
245
- get transferId() {
246
- return (this.transfer.id);
362
+ async executeTransfer(input) {
363
+ const account = this.request.account ? { account: this.request.account } : undefined;
364
+ return (await this.provider.executeTransfer({ id: this.transfer.id, ...input, ...account }));
247
365
  }
248
- get instructions() {
249
- return (this.transfer.instructionChoices);
366
+ }
367
+ class KeetaAssetMovementSimulatedTransfer extends BaseKeetaAssetMovementTransfer {
368
+ async createTransfer() {
369
+ return (await this.provider.initiateTransfer(this.request));
250
370
  }
251
371
  }
252
372
  class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
@@ -357,11 +477,11 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
357
477
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
358
478
  return requestInformationJSON;
359
479
  }
360
- async initiateTransfer(request) {
480
+ async #initiateOrSimulateTransfer(simulate, request) {
361
481
  this.logger?.debug(`Starting Asset Movement Transfer for provider ID: ${String(this.providerID)}`);
362
482
  const requestInformationJSON = await this.#makeRequest({
363
483
  method: 'POST',
364
- endpoint: 'initiateTransfer',
484
+ endpoint: simulate ? 'simulateTransfer' : 'initiateTransfer',
365
485
  account: request.account,
366
486
  serializeRequest(body) {
367
487
  const { account, ...rest } = body;
@@ -369,7 +489,8 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
369
489
  ...rest,
370
490
  value: String(body.value),
371
491
  from: {
372
- location: convertAssetLocationToString(body.from.location)
492
+ location: convertAssetLocationToString(body.from.location),
493
+ ...(request.from.source ? { source: request.from.source } : {})
373
494
  },
374
495
  to: {
375
496
  location: convertAssetLocationToString(body.to.location),
@@ -380,11 +501,58 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
380
501
  });
381
502
  },
382
503
  body: request,
383
- getSignedData: getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,
384
- isResponse: isKeetaAssetMovementAnchorInitiateTransferResponse
504
+ getSignedData: simulate ? getKeetaAssetMovementAnchorSimulateTransferRequestSigningData : getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,
505
+ isResponse(data) {
506
+ if (simulate) {
507
+ return (isKeetaAssetMovementAnchorSimulateTransferResponse(data));
508
+ }
509
+ else {
510
+ return (isKeetaAssetMovementAnchorInitiateTransferResponse(data));
511
+ }
512
+ }
385
513
  });
386
- this.logger?.debug(`asset movement request successful, request ID ${requestInformationJSON.id}`);
387
- return (new KeetaAssetMovementTransfer(this, request, requestInformationJSON));
514
+ if (simulate) {
515
+ this.logger?.debug(`asset movement simulation request successful`);
516
+ return (new KeetaAssetMovementSimulatedTransfer({
517
+ provider: this,
518
+ request,
519
+ transfer: requestInformationJSON
520
+ }));
521
+ }
522
+ else {
523
+ if (!('id' in requestInformationJSON)) {
524
+ throw (new Error('expected provider to return id but did not'));
525
+ }
526
+ this.logger?.debug(`asset movement transfer request successful, request ID ${requestInformationJSON.id}`);
527
+ return (new KeetaAssetMovementTransfer({
528
+ provider: this,
529
+ request,
530
+ transfer: requestInformationJSON
531
+ }));
532
+ }
533
+ }
534
+ async initiateTransfer(request) {
535
+ return (await this.#initiateOrSimulateTransfer(false, request));
536
+ }
537
+ async simulateTransfer(request) {
538
+ return (await this.#initiateOrSimulateTransfer(true, request));
539
+ }
540
+ async executeTransfer(request) {
541
+ this.logger?.debug(`Starting Asset Movement Transfer for provider ID: ${String(this.providerID)}`);
542
+ const { id, ...rest } = request;
543
+ const requestInformationJSON = await this.#makeRequest({
544
+ method: 'POST',
545
+ endpoint: 'executeTransfer',
546
+ params: { id: request.id },
547
+ account: request.account,
548
+ body: rest,
549
+ getSignedData: (body) => {
550
+ return (getKeetaAssetMovementAnchorExecuteTransferRequestSigningData({ id, ...body }));
551
+ },
552
+ isResponse: isKeetaAssetMovementAnchorExecuteTransferResponse
553
+ });
554
+ this.logger?.debug(`asset movement execute transfer successful, transaction ID ${requestInformationJSON.transaction.id}`);
555
+ return (requestInformationJSON);
388
556
  }
389
557
  async getTransferStatus(request) {
390
558
  const requestInformationJSON = await this.#makeRequest({
@@ -398,11 +566,11 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
398
566
  this.logger?.debug(`asset movement request successful, request ID ${request.id}`);
399
567
  return (requestInformationJSON);
400
568
  }
401
- async createPersistentForwardingTemplate(request) {
402
- this.logger?.debug(`Creating persistent forwarding for provider ID: ${String(this.providerID)}, request: ${JSON.stringify(request)}`);
403
- const requestInformationJSON = await this.#makeRequest({
569
+ async initiatePersistentForwardingTemplate(request) {
570
+ this.logger?.debug(`Initiating persistent forwarding template for provider ID: ${String(this.providerID)}, request: ${JSON.stringify(request)}`);
571
+ const result = await this.#makeRequest({
404
572
  method: 'POST',
405
- endpoint: 'createPersistentForwardingTemplate',
573
+ endpoint: 'initiatePersistentForwardingTemplate',
406
574
  account: request.account,
407
575
  serializeRequest(body) {
408
576
  const { account, ...rest } = body;
@@ -414,6 +582,39 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
414
582
  });
415
583
  },
416
584
  body: request,
585
+ getSignedData: getKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequestSigningData,
586
+ isResponse: isKeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse
587
+ });
588
+ this.logger?.debug(`initiate persistent forwarding template successful, session ID: ${result.id}`);
589
+ return (result);
590
+ }
591
+ async createPersistentForwardingTemplate(request) {
592
+ this.logger?.debug(`Creating persistent forwarding for provider ID: ${String(this.providerID)}, request: ${JSON.stringify(request)}`);
593
+ const requestInformationJSON = await this.#makeRequest({
594
+ method: 'POST',
595
+ endpoint: 'createPersistentForwardingTemplate',
596
+ account: request.account,
597
+ serializeRequest(body) {
598
+ const { account, ...rest } = body;
599
+ const sharedFields = {
600
+ ...rest,
601
+ ...(account ? { account: account.assertAccount().publicKeyString.get() } : {})
602
+ };
603
+ if ('data' in body) {
604
+ return ({
605
+ ...sharedFields,
606
+ data: body.data
607
+ });
608
+ }
609
+ else {
610
+ return ({
611
+ ...sharedFields,
612
+ location: convertAssetLocationToString(body.location),
613
+ asset: convertAssetOrPairSearchInputToCanonical(body.asset)
614
+ });
615
+ }
616
+ },
617
+ body: request,
417
618
  getSignedData: getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,
418
619
  isResponse: isKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse
419
620
  });
@@ -629,6 +830,27 @@ class KeetaAssetMovementAnchorProvider extends KeetaAssetMovementAnchorBase {
629
830
  }
630
831
  this.logger?.debug(`done sharing KYC attributes`);
631
832
  }
833
+ getAssetMetadataForLocation(location, asset) {
834
+ const locationMetadata = this.serviceInfo.locationMetadata;
835
+ if (!locationMetadata) {
836
+ return (null);
837
+ }
838
+ const locationString = convertAssetLocationToString(location);
839
+ if (!(locationString in locationMetadata)) {
840
+ return (null);
841
+ }
842
+ // We can assert here as we have validated the key is included above
843
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
844
+ const locationSpecificMetadata = locationMetadata[locationString];
845
+ if (!locationSpecificMetadata?.assets || !(asset in locationSpecificMetadata.assets)) {
846
+ return (null);
847
+ }
848
+ const assetMetadata = locationSpecificMetadata.assets[asset];
849
+ if (!assetMetadata) {
850
+ return (null);
851
+ }
852
+ return (assetMetadata);
853
+ }
632
854
  }
633
855
  class KeetaAssetMovementAnchorClient extends KeetaAssetMovementAnchorBase {
634
856
  resolver;
@@ -673,8 +895,8 @@ class KeetaAssetMovementAnchorClient extends KeetaAssetMovementAnchorBase {
673
895
  });
674
896
  return (providers);
675
897
  }
676
- async getProvidersForTransfer(request) {
677
- return (await this.#lookup(request));
898
+ async getProvidersForTransfer(request, shared) {
899
+ return (await this.#lookup(request, shared));
678
900
  }
679
901
  async getProviderByID(providerID) {
680
902
  const providers = await this.#lookup({}, { providerIDs: [providerID] });