@keetanetwork/anchor 0.0.42 → 0.0.44

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 (178) hide show
  1. package/client/index.d.ts +6 -0
  2. package/client/index.d.ts.map +1 -1
  3. package/client/index.js +7 -0
  4. package/client/index.js.map +1 -1
  5. package/lib/certificates.js +2 -2
  6. package/lib/certificates.js.map +1 -1
  7. package/lib/resolver.d.ts +45 -3
  8. package/lib/resolver.d.ts.map +1 -1
  9. package/lib/resolver.js +908 -398
  10. package/lib/resolver.js.map +1 -1
  11. package/lib/utils/json.d.ts +4 -5
  12. package/lib/utils/json.d.ts.map +1 -1
  13. package/lib/utils/json.js +4 -163
  14. package/lib/utils/json.js.map +1 -1
  15. package/npm-shrinkwrap.json +5 -5
  16. package/package.json +2 -2
  17. package/services/asset-movement/client.d.ts +2 -5
  18. package/services/asset-movement/client.d.ts.map +1 -1
  19. package/services/asset-movement/client.js +1 -2
  20. package/services/asset-movement/client.js.map +1 -1
  21. package/services/asset-movement/common.d.ts +56 -82
  22. package/services/asset-movement/common.d.ts.map +1 -1
  23. package/services/asset-movement/common.js +18314 -8000
  24. package/services/asset-movement/common.js.map +1 -1
  25. package/services/asset-movement/lib/data/addresses/bank-account/card.d.ts +4 -0
  26. package/services/asset-movement/lib/data/addresses/bank-account/card.d.ts.map +1 -0
  27. package/services/asset-movement/lib/data/addresses/bank-account/card.js +34 -0
  28. package/services/asset-movement/lib/data/addresses/bank-account/card.js.map +1 -0
  29. package/services/asset-movement/lib/data/addresses/bank-account/clabe.d.ts +4 -0
  30. package/services/asset-movement/lib/data/addresses/bank-account/clabe.d.ts.map +1 -0
  31. package/services/asset-movement/lib/data/addresses/bank-account/clabe.js +22 -0
  32. package/services/asset-movement/lib/data/addresses/bank-account/clabe.js.map +1 -0
  33. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.d.ts +4 -0
  34. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.d.ts.map +1 -0
  35. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js +43 -0
  36. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js.map +1 -0
  37. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts +15 -0
  38. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts.map +1 -0
  39. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js +16 -0
  40. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js.map +1 -0
  41. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts +4 -0
  42. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts.map +1 -0
  43. package/services/asset-movement/lib/data/addresses/bank-account/interac.js +39 -0
  44. package/services/asset-movement/lib/data/addresses/bank-account/interac.js.map +1 -0
  45. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts +4 -0
  46. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts.map +1 -0
  47. package/services/asset-movement/lib/data/addresses/bank-account/pix.js +31 -0
  48. package/services/asset-movement/lib/data/addresses/bank-account/pix.js.map +1 -0
  49. package/services/asset-movement/lib/data/addresses/bank-account/us.d.ts +4 -0
  50. package/services/asset-movement/lib/data/addresses/bank-account/us.d.ts.map +1 -0
  51. package/services/asset-movement/lib/data/addresses/bank-account/us.js +37 -0
  52. package/services/asset-movement/lib/data/addresses/bank-account/us.js.map +1 -0
  53. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.d.ts +4 -0
  54. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.d.ts.map +1 -0
  55. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.js +7 -0
  56. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.js.map +1 -0
  57. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.d.ts +4 -0
  58. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.d.ts.map +1 -0
  59. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.js +7 -0
  60. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.js.map +1 -0
  61. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.d.ts +4 -0
  62. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.d.ts.map +1 -0
  63. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.js +7 -0
  64. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.js.map +1 -0
  65. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.d.ts +4 -0
  66. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.d.ts.map +1 -0
  67. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.js +7 -0
  68. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.js.map +1 -0
  69. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.d.ts +27 -0
  70. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.d.ts.map +1 -0
  71. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.js +28 -0
  72. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.js.map +1 -0
  73. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.d.ts +4 -0
  74. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.d.ts.map +1 -0
  75. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.js +7 -0
  76. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.js.map +1 -0
  77. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.d.ts +4 -0
  78. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.d.ts.map +1 -0
  79. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.js +7 -0
  80. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.js.map +1 -0
  81. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.d.ts +4 -0
  82. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.d.ts.map +1 -0
  83. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.js +7 -0
  84. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.js.map +1 -0
  85. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.d.ts +4 -0
  86. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.d.ts.map +1 -0
  87. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.js +7 -0
  88. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.js.map +1 -0
  89. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.d.ts +4 -0
  90. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.d.ts.map +1 -0
  91. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.js +19 -0
  92. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.js.map +1 -0
  93. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.d.ts +4 -0
  94. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.d.ts.map +1 -0
  95. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.js +7 -0
  96. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.js.map +1 -0
  97. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.d.ts +4 -0
  98. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.d.ts.map +1 -0
  99. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.js +7 -0
  100. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.js.map +1 -0
  101. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.d.ts +4 -0
  102. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.d.ts.map +1 -0
  103. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.js +17 -0
  104. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.js.map +1 -0
  105. package/services/asset-movement/lib/data/addresses/types.generated.d.ts +1590 -0
  106. package/services/asset-movement/lib/data/addresses/types.generated.d.ts.map +1 -0
  107. package/services/asset-movement/lib/data/addresses/types.generated.js +1895 -0
  108. package/services/asset-movement/lib/data/addresses/types.generated.js.map +1 -0
  109. package/services/asset-movement/lib/data/json-schema.d.ts +64 -0
  110. package/services/asset-movement/lib/data/json-schema.d.ts.map +1 -0
  111. package/services/asset-movement/lib/data/json-schema.js +2 -0
  112. package/services/asset-movement/lib/data/json-schema.js.map +1 -0
  113. package/services/asset-movement/lib/data/scripts/generator.d.ts +2 -0
  114. package/services/asset-movement/lib/data/scripts/generator.d.ts.map +1 -0
  115. package/services/asset-movement/lib/data/scripts/generator.js +140 -0
  116. package/services/asset-movement/lib/data/scripts/generator.js.map +1 -0
  117. package/services/asset-movement/lib/data/types.d.ts +23 -0
  118. package/services/asset-movement/lib/data/types.d.ts.map +1 -0
  119. package/services/asset-movement/lib/data/types.js +120 -0
  120. package/services/asset-movement/lib/data/types.js.map +1 -0
  121. package/services/asset-movement/lib/location.d.ts +11 -4
  122. package/services/asset-movement/lib/location.d.ts.map +1 -1
  123. package/services/asset-movement/lib/location.generated.d.ts +2 -1
  124. package/services/asset-movement/lib/location.generated.d.ts.map +1 -1
  125. package/services/asset-movement/lib/location.generated.js +15 -3
  126. package/services/asset-movement/lib/location.generated.js.map +1 -1
  127. package/services/asset-movement/lib/location.js +13 -1
  128. package/services/asset-movement/lib/location.js.map +1 -1
  129. package/services/fx/client.d.ts +17 -2
  130. package/services/fx/client.d.ts.map +1 -1
  131. package/services/fx/client.js +153 -76
  132. package/services/fx/client.js.map +1 -1
  133. package/services/fx/common.d.ts +11 -1
  134. package/services/fx/common.d.ts.map +1 -1
  135. package/services/fx/common.js +32 -10
  136. package/services/fx/common.js.map +1 -1
  137. package/services/fx/server.d.ts +37 -11
  138. package/services/fx/server.d.ts.map +1 -1
  139. package/services/fx/server.js +169 -92
  140. package/services/fx/server.js.map +1 -1
  141. package/services/notification/client.d.ts +78 -0
  142. package/services/notification/client.d.ts.map +1 -0
  143. package/services/notification/client.js +499 -0
  144. package/services/notification/client.js.map +1 -0
  145. package/services/notification/common.d.ts +179 -0
  146. package/services/notification/common.d.ts.map +1 -0
  147. package/services/notification/common.generated.d.ts +17 -0
  148. package/services/notification/common.generated.d.ts.map +1 -0
  149. package/services/notification/common.generated.js +733 -0
  150. package/services/notification/common.generated.js.map +1 -0
  151. package/services/notification/common.js +139 -0
  152. package/services/notification/common.js.map +1 -0
  153. package/services/notification/server.d.ts +39 -0
  154. package/services/notification/server.d.ts.map +1 -0
  155. package/services/notification/server.js +222 -0
  156. package/services/notification/server.js.map +1 -0
  157. package/services/storage/client.d.ts +11 -1
  158. package/services/storage/client.d.ts.map +1 -1
  159. package/services/storage/client.js +28 -6
  160. package/services/storage/client.js.map +1 -1
  161. package/services/storage/clients/contacts.d.ts.map +1 -1
  162. package/services/storage/clients/contacts.generated.js +1235 -338
  163. package/services/storage/clients/contacts.generated.js.map +1 -1
  164. package/services/storage/clients/contacts.js +2 -1
  165. package/services/storage/clients/contacts.js.map +1 -1
  166. package/services/storage/clients/icon.d.ts +29 -0
  167. package/services/storage/clients/icon.d.ts.map +1 -0
  168. package/services/storage/clients/icon.js +34 -0
  169. package/services/storage/clients/icon.js.map +1 -0
  170. package/services/storage/common.d.ts +14 -0
  171. package/services/storage/common.d.ts.map +1 -1
  172. package/services/storage/common.js.map +1 -1
  173. package/services/storage/test-utils.d.ts +15 -1
  174. package/services/storage/test-utils.d.ts.map +1 -1
  175. package/services/storage/test-utils.js +60 -0
  176. package/services/storage/test-utils.js.map +1 -1
  177. package/services/username/common.generated.js +38 -4
  178. package/services/username/common.generated.js.map +1 -1
@@ -84,12 +84,6 @@ export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAn
84
84
  * Supported conversions
85
85
  */
86
86
  from?: NonNullable<ServiceMetadata['services']['fx']>[string]['from'];
87
- /**
88
- * Handle the conversion request of one token to another
89
- *
90
- * This is used to handle quotes and estimates
91
- */
92
- getConversionRateAndFee: (request: ConversionInputCanonicalJSON, context: GetConversionRateAndFeeContext) => Promise<KeetaFXInternalPriceQuote>;
93
87
  /**
94
88
  * Optional callback to validate a quote before completing an exchange
95
89
  *
@@ -100,7 +94,22 @@ export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAn
100
94
  * @returns true to accept the quote and proceed with the exchange, false to reject it
101
95
  */
102
96
  validateQuote?: (quote: ValidateQuoteArguments) => Promise<boolean> | boolean;
103
- };
97
+ } & ({
98
+ performExchanges?: true;
99
+ /**
100
+ * Handle the conversion request of one token to another
101
+ *
102
+ * This is used to handle quotes and estimates
103
+ */
104
+ getConversionRateAndFee: (request: ConversionInputCanonicalJSON, context: GetConversionRateAndFeeContext) => Promise<KeetaFXInternalPriceQuote>;
105
+ } | {
106
+ performExchanges: false;
107
+ /**
108
+ * Get the estimate price of an exchange, this should be provided when getConversionRateAndFee is not provided
109
+ * The server will not handle exchanges if getConversionRateAndFee is not provided, but it will still provide quotes and estimates based on this function
110
+ */
111
+ estimateRateAndFee: (request: ConversionInputCanonicalJSON) => Promise<KeetaFXInternalPriceEstimate>;
112
+ });
104
113
  /**
105
114
  * Storage driver to use for stateful operation and managing queues
106
115
  *
@@ -138,6 +147,7 @@ export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAn
138
147
  } | KeetaNet.UserClient;
139
148
  }
140
149
  export type KeetaFXInternalPriceQuote = Omit<KeetaFXAnchorQuote, 'signed' | 'request'> & Pick<KeetaFXAnchorEstimate, 'convertedAmountBound'>;
150
+ export type KeetaFXInternalPriceEstimate = Omit<KeetaFXInternalPriceQuote, 'account'>;
141
151
  export type ValidateQuoteArguments = KeetaFXInternalPriceQuote & Partial<Omit<KeetaFXAnchorQuote, keyof KeetaFXInternalPriceQuote>>;
142
152
  export declare function toValidateQuoteInput(input: KeetaFXAnchorQuoteJSON | KeetaFXInternalPriceQuote | KeetaFXAnchorQuote): ValidateQuoteArguments;
143
153
  type KeetaFXAnchorQueueStage1Request = {
@@ -225,8 +235,27 @@ declare class KeetaFXAnchorQueuePipeline extends KeetaAnchorQueuePipelineAdvance
225
235
  maintain(): Promise<void>;
226
236
  destroy(): Promise<void>;
227
237
  }
228
- export declare class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorFXServerConfig> implements Omit<Required<KeetaAnchorFXServerConfig>, 'storage' | 'queueRunnerExtensions'> {
238
+ type SharedHTTPServerConfigType = Pick<KeetaAnchorFXServerConfig, 'fx' | 'homepage' | keyof KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig>;
239
+ declare abstract class BaseKeetaNetFXAnchorHTTPServer<ConfigType extends SharedHTTPServerConfigType> extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<ConfigType> implements Omit<Required<KeetaAnchorFXServerConfig>, 'storage' | 'queueRunnerExtensions' | 'accounts' | 'account' | 'signer' | 'client' | 'quoteSigner' | 'quoteConfiguration'> {
229
240
  readonly homepage: NonNullable<KeetaAnchorFXServerConfig['homepage']>;
241
+ readonly fx: KeetaAnchorFXServerConfig['fx'];
242
+ readonly canPerformExchanges: boolean;
243
+ protected abstract quoteConfiguration: Exclude<KeetaAnchorFXServerConfig['quoteConfiguration'], undefined> | null;
244
+ protected accounts: InstanceType<typeof KeetaNet.lib.Account.Set> | null;
245
+ constructor(config: ConfigType);
246
+ protected getUnsignedQuoteData(conversion: ConversionInputCanonicalJSON, purpose: 'estimate'): Promise<KeetaFXInternalPriceEstimate | KeetaFXInternalPriceQuote>;
247
+ protected getUnsignedQuoteData(conversion: ConversionInputCanonicalJSON, purpose: 'quote'): Promise<KeetaFXInternalPriceQuote>;
248
+ protected initRoutes(config: ConfigType): Promise<KeetaAnchorHTTPServer.Routes>;
249
+ /**
250
+ * Return the servers endpoints and possible currency conversions metadata
251
+ */
252
+ serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['fx']>[string]>;
253
+ }
254
+ export declare class KeetaNetFXAnchorEstimateHTTPServer extends BaseKeetaNetFXAnchorHTTPServer<SharedHTTPServerConfigType> {
255
+ protected quoteConfiguration: null;
256
+ constructor(config: SharedHTTPServerConfigType);
257
+ }
258
+ export declare class KeetaNetFXAnchorHTTPServer extends BaseKeetaNetFXAnchorHTTPServer<KeetaAnchorFXServerConfig> implements Omit<Required<KeetaAnchorFXServerConfig>, 'storage' | 'queueRunnerExtensions'> {
230
259
  readonly client: KeetaAnchorFXServerConfig['client'];
231
260
  readonly accounts: NonNullable<KeetaAnchorFXServerConfig['accounts']>;
232
261
  readonly account: KeetaAnchorFXServerConfig['account'];
@@ -239,9 +268,6 @@ export declare class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.Ke
239
268
  protected autoRunRunning: boolean;
240
269
  constructor(config: KeetaAnchorFXServerConfig);
241
270
  protected initRoutes(config: KeetaAnchorFXServerConfig): Promise<KeetaAnchorHTTPServer.Routes>;
242
- /**
243
- * Return the servers endpoints and possible currency conversions metadata
244
- */
245
271
  serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['fx']>[string]>;
246
272
  stop(): Promise<void>;
247
273
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,9 @@ async function requestToAccounts(config, request) {
53
53
  let account;
54
54
  // eslint-disable-next-line @typescript-eslint/no-deprecated
55
55
  if (config.account !== undefined) {
56
+ if (!('getConversionRateAndFee' in config.fx)) {
57
+ throw (new Error('getConversionRateAndFee must be provided in fx configuration when using account property'));
58
+ }
56
59
  const rateFee = await config.fx.getConversionRateAndFee(request, { purpose: 'estimate' });
57
60
  account = rateFee.account;
58
61
  }
@@ -307,6 +310,14 @@ class KeetaFXAnchorQueuePipelineStage1 extends KeetaAnchorQueueRunner {
307
310
  * Additionally, other FX anchors are not forced to refund any, so there is no guarantee to client that refunds will occur
308
311
  */
309
312
  if (expected === null) {
313
+ if (!('getConversionRateAndFee' in this.serverConfig.fx)) {
314
+ this.serverConfig.logger?.error('KeetaFXAnchorQueuePipelineStage1::processor', 'getConversionRateAndFee must be provided in fx configuration to process exchanges without expected details');
315
+ return ({
316
+ status: 'failed_permanently',
317
+ output: null,
318
+ error: 'Server misconfiguration: getConversionRateAndFee must be provided in fx configuration to process exchanges without expected details'
319
+ });
320
+ }
310
321
  const quote = await this.serverConfig.fx.getConversionRateAndFee(request, { purpose: 'exchange', request: entry.request });
311
322
  const { refunds } = assertExchangeBlockParametersAndComputeRefund({
312
323
  block: block,
@@ -598,82 +609,48 @@ class KeetaFXAnchorQueuePipeline extends KeetaAnchorQueuePipelineAdvanced {
598
609
  }
599
610
  }
600
611
  }
601
- export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer {
612
+ class BaseKeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer {
602
613
  homepage;
603
- client;
604
- accounts;
605
- account = undefined;
606
- signer;
607
- quoteSigner;
608
614
  fx;
609
- pipeline;
610
- quoteConfiguration;
611
- autoRun;
612
- autoRunRunning = false;
615
+ canPerformExchanges;
616
+ accounts = null;
613
617
  constructor(config) {
614
618
  super(config);
615
619
  this.homepage = config.homepage ?? '';
616
- this.client = config.client;
617
620
  this.fx = config.fx;
618
- this.quoteSigner = config.quoteSigner;
619
- this.quoteConfiguration = config.quoteConfiguration ?? { requiresQuote: true };
620
- /*
621
- * Setup the accounts
622
- */
623
- // eslint-disable-next-line @typescript-eslint/no-deprecated
624
- if (config.account !== undefined && config.accounts === undefined) {
625
- /*
626
- * Deprecated: If a single account is provided, use that
627
- * along with the signer to create the accounts set
628
- */
629
- // eslint-disable-next-line @typescript-eslint/no-deprecated
630
- this.accounts = new KeetaNet.lib.Account.Set([config.account]);
631
- // eslint-disable-next-line @typescript-eslint/no-deprecated
632
- this.signer = config.signer ?? config.account;
633
- // eslint-disable-next-line @typescript-eslint/no-deprecated
621
+ // This is incorrect as undefined and true are the same (because default is true), but using a negation will not result in the correct type for canPerformExchanges, so we have to disable the lint warning and accept the incorrectness
622
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare
623
+ this.canPerformExchanges = config.fx.performExchanges === undefined || config.fx.performExchanges === true;
624
+ }
625
+ async getUnsignedQuoteData(conversion, purpose) {
626
+ if (purpose !== 'estimate' && !this.canPerformExchanges) {
627
+ throw (new Error(`FX configuration does not support performing exchanges, so purpose "${purpose}" is invalid`));
634
628
  }
635
- else if (config.accounts !== undefined && config.account === undefined) {
636
- /*
637
- * Only allow either "account" or "accounts"+"signer" to be provided
638
- */
639
- if (config.signer === undefined) {
640
- throw (new Error('If "accounts" is provided, "signer" must also be provided'));
629
+ if ('getConversionRateAndFee' in this.fx) {
630
+ if (!this.accounts) {
631
+ throw (new Error('Accounts must be configured to use "getConversionRateAndFee" in fx configuration'));
641
632
  }
642
- this.accounts = config.accounts;
643
- this.signer = config.signer;
644
- }
645
- else {
646
- throw (new Error('Either "account" (and optional "signer") or "accounts" and "signer" must be provided, but not both "account" and "accounts"'));
633
+ const rateAndFee = await this.fx.getConversionRateAndFee(conversion, { purpose });
634
+ if (PARANOID) {
635
+ const quoteAccount = rateAndFee.account;
636
+ if (!this.accounts.has(quoteAccount)) {
637
+ throw (new Error('"getConversionRateAndFee" returned an account not configured for this server'));
638
+ }
639
+ }
640
+ return (rateAndFee);
647
641
  }
648
- if (this.accounts.size === 0) {
649
- throw (new Error('No FX accounts provided'));
642
+ else if ('estimateRateAndFee' in this.fx) {
643
+ if (purpose !== 'estimate') {
644
+ throw (new Error('FX configuration only supports "estimateRateAndFee", so purpose must be "estimate"'));
645
+ }
646
+ return (await this.fx.estimateRateAndFee(conversion));
650
647
  }
651
- /*
652
- * If no storage driver is provided, we default to an in-memory
653
- * that we auto-run
654
- */
655
- this.autoRun = config.storage?.autoRun ?? false;
656
- if (config.storage === undefined) {
657
- this.autoRun = true;
648
+ else {
649
+ assertNever(this.fx);
658
650
  }
659
- /*
660
- * Create the pipeline to process transactions
661
- */
662
- this.pipeline = new KeetaFXAnchorQueuePipeline({
663
- id: 'keeta-fx-anchor-queue-pipeline',
664
- baseQueue: config.storage?.queue ?? new KeetaAnchorQueueStorageDriverMemory({
665
- id: 'keeta-fx-anchor-queue-pipeline-memory-driver',
666
- logger: this.logger
667
- }),
668
- accounts: this.accounts,
669
- logger: this.logger,
670
- serverConfig: this,
671
- extensions: config.queueRunnerExtensions
672
- });
673
651
  }
674
652
  async initRoutes(config) {
675
653
  const routes = {};
676
- const logger = this.logger;
677
654
  /*
678
655
  * To use the instance within the route handlers, we need to
679
656
  * make a local reference to it.
@@ -701,20 +678,10 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
701
678
  });
702
679
  };
703
680
  }
704
- async function getUnsignedQuoteData(conversion, purpose) {
705
- const rateAndFee = await config.fx.getConversionRateAndFee(conversion, { purpose });
706
- if (PARANOID) {
707
- const quoteAccount = rateAndFee.account;
708
- if (!instance.accounts.has(quoteAccount)) {
709
- throw (new Error('"getConversionRateAndFee" returned an account not configured for this server'));
710
- }
711
- }
712
- return (rateAndFee);
713
- }
714
681
  /**
715
682
  * Setup the request handler for an estimate request
716
683
  */
717
- routes['POST /api/getEstimate'] = async function (_ignore_params, postData) {
684
+ routes['POST /api/getEstimate'] = async (_ignore_params, postData) => {
718
685
  if (!postData || typeof postData !== 'object') {
719
686
  throw (new Error('No POST data provided'));
720
687
  }
@@ -722,9 +689,12 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
722
689
  throw (new Error('POST data missing request'));
723
690
  }
724
691
  const conversion = assertConversionInputCanonicalJSON(postData.request);
725
- const rateAndFee = await getUnsignedQuoteData(conversion, 'estimate');
692
+ const rateAndFee = await this.getUnsignedQuoteData(conversion, 'estimate');
726
693
  let requiresQuoteBody;
727
- if (instance.quoteConfiguration.requiresQuote) {
694
+ if (!instance.quoteConfiguration || !instance.canPerformExchanges) {
695
+ requiresQuoteBody = { canPerformExchange: false };
696
+ }
697
+ else if (instance.quoteConfiguration.requiresQuote) {
728
698
  requiresQuoteBody = { requiresQuote: true };
729
699
  }
730
700
  else {
@@ -739,6 +709,9 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
739
709
  throw (new KeetaAnchorError('Affinity is from, but bound is greater than estimated received amount'));
740
710
  }
741
711
  }
712
+ if (!('account' in rateAndFee) || !rateAndFee.account) {
713
+ throw (new Error('FX configuration indicates quotes are not required, but no account was provided in the rate and fee response'));
714
+ }
742
715
  requiresQuoteBody = { requiresQuote: false, account: rateAndFee.account };
743
716
  }
744
717
  const estimateResponse = {
@@ -759,7 +732,114 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
759
732
  output: JSON.stringify(estimateResponse)
760
733
  });
761
734
  };
762
- routes['POST /api/getQuote'] = async function (_ignore_params, postData) {
735
+ return (routes);
736
+ }
737
+ /**
738
+ * Return the servers endpoints and possible currency conversions metadata
739
+ */
740
+ async serviceMetadata() {
741
+ const operations = {
742
+ getEstimate: (new URL('/api/getEstimate', this.url)).toString()
743
+ };
744
+ return ({
745
+ from: this.fx.from ?? [],
746
+ operations: operations
747
+ });
748
+ }
749
+ }
750
+ export class KeetaNetFXAnchorEstimateHTTPServer extends BaseKeetaNetFXAnchorHTTPServer {
751
+ quoteConfiguration = null;
752
+ constructor(config) {
753
+ super(config);
754
+ if (this.canPerformExchanges) {
755
+ throw (new Error('FX configuration indicates exchanges can be performed, but KeetaNetFXAnchorEstimateHTTPServer does not support exchange capability'));
756
+ }
757
+ }
758
+ }
759
+ export class KeetaNetFXAnchorHTTPServer extends BaseKeetaNetFXAnchorHTTPServer {
760
+ client;
761
+ accounts;
762
+ account = undefined;
763
+ signer;
764
+ quoteSigner;
765
+ fx;
766
+ pipeline;
767
+ quoteConfiguration;
768
+ autoRun;
769
+ autoRunRunning = false;
770
+ constructor(config) {
771
+ super(config);
772
+ this.client = config.client;
773
+ this.fx = config.fx;
774
+ this.quoteSigner = config.quoteSigner;
775
+ this.quoteConfiguration = config.quoteConfiguration ?? { requiresQuote: true };
776
+ if (!this.canPerformExchanges) {
777
+ throw (new Error('FX configuration indicates exchanges cannot be performed, but KeetaNetFXAnchorHTTPServer requires exchange capability'));
778
+ }
779
+ /*
780
+ * Setup the accounts
781
+ */
782
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
783
+ if (config.account !== undefined && config.accounts === undefined) {
784
+ /*
785
+ * Deprecated: If a single account is provided, use that
786
+ * along with the signer to create the accounts set
787
+ */
788
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
789
+ this.accounts = new KeetaNet.lib.Account.Set([config.account]);
790
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
791
+ this.signer = config.signer ?? config.account;
792
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
793
+ }
794
+ else if (config.accounts !== undefined && config.account === undefined) {
795
+ /*
796
+ * Only allow either "account" or "accounts"+"signer" to be provided
797
+ */
798
+ if (config.signer === undefined) {
799
+ throw (new Error('If "accounts" is provided, "signer" must also be provided'));
800
+ }
801
+ this.accounts = config.accounts;
802
+ this.signer = config.signer;
803
+ }
804
+ else {
805
+ throw (new Error('Either "account" (and optional "signer") or "accounts" and "signer" must be provided, but not both "account" and "accounts"'));
806
+ }
807
+ if (this.accounts.size === 0) {
808
+ throw (new Error('No FX accounts provided'));
809
+ }
810
+ /*
811
+ * If no storage driver is provided, we default to an in-memory
812
+ * that we auto-run
813
+ */
814
+ this.autoRun = config.storage?.autoRun ?? false;
815
+ if (config.storage === undefined) {
816
+ this.autoRun = true;
817
+ }
818
+ /*
819
+ * Create the pipeline to process transactions
820
+ */
821
+ this.pipeline = new KeetaFXAnchorQueuePipeline({
822
+ id: 'keeta-fx-anchor-queue-pipeline',
823
+ baseQueue: config.storage?.queue ?? new KeetaAnchorQueueStorageDriverMemory({
824
+ id: 'keeta-fx-anchor-queue-pipeline-memory-driver',
825
+ logger: this.logger
826
+ }),
827
+ accounts: this.accounts,
828
+ logger: this.logger,
829
+ serverConfig: this,
830
+ extensions: config.queueRunnerExtensions
831
+ });
832
+ }
833
+ async initRoutes(config) {
834
+ const routes = await super.initRoutes(config);
835
+ const logger = this.logger;
836
+ /*
837
+ * To use the instance within the route handlers, we need to
838
+ * make a local reference to it.
839
+ */
840
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
841
+ const instance = this;
842
+ routes['POST /api/getQuote'] = async (_ignore_params, postData) => {
763
843
  if (!instance.quoteConfiguration.requiresQuote && !instance.quoteConfiguration.issueQuotes) {
764
844
  throw (new Errors.QuoteIssuanceDisabled());
765
845
  }
@@ -770,7 +850,7 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
770
850
  throw (new Error('POST data missing request'));
771
851
  }
772
852
  const conversion = assertConversionInputCanonicalJSON(postData.request);
773
- const rateAndFee = await getUnsignedQuoteData(conversion, 'quote');
853
+ const rateAndFee = await this.getUnsignedQuoteData(conversion, 'quote');
774
854
  const unsignedQuote = KeetaNet.lib.Utils.Conversion.toJSONSerializable({
775
855
  request: conversion,
776
856
  ...rateAndFee
@@ -787,7 +867,7 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
787
867
  output: JSON.stringify(quoteResponse)
788
868
  });
789
869
  };
790
- routes['POST /api/createExchange'] = async function (_ignore_params, postData) {
870
+ routes['POST /api/createExchange'] = async (_ignore_params, postData) => {
791
871
  if (!postData || typeof postData !== 'object') {
792
872
  throw (new Error('No POST data provided'));
793
873
  }
@@ -834,7 +914,7 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
834
914
  throw (new Errors.QuoteRequired());
835
915
  }
836
916
  conversionInput = request.request;
837
- quoteInput = await getUnsignedQuoteData(conversionInput, 'estimate');
917
+ quoteInput = await this.getUnsignedQuoteData(conversionInput, 'estimate');
838
918
  if (instance.quoteConfiguration.validateQuoteBeforeExchange !== undefined) {
839
919
  shouldValidateQuote = instance.quoteConfiguration.validateQuoteBeforeExchange;
840
920
  }
@@ -861,6 +941,9 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
861
941
  else {
862
942
  throw (new Error('Either quote or request must be provided (but not both) in exchange request'));
863
943
  }
944
+ if (!('account' in quoteInput) || !quoteInput.account) {
945
+ throw (new Error('Quote is missing account, createExchange should not be supported for quotes without an account'));
946
+ }
864
947
  const parsedQuote = toValidateQuoteInput(quoteInput);
865
948
  /* Validate the quote using the optional callback */
866
949
  if (config.fx.validateQuote !== undefined && shouldValidateQuote) {
@@ -1018,20 +1101,14 @@ export class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAn
1018
1101
  };
1019
1102
  return (routes);
1020
1103
  }
1021
- /**
1022
- * Return the servers endpoints and possible currency conversions metadata
1023
- */
1024
1104
  async serviceMetadata() {
1025
- const operations = {
1026
- getEstimate: (new URL('/api/getEstimate', this.url)).toString(),
1027
- getQuote: (new URL('/api/getQuote', this.url)).toString(),
1028
- createExchange: (new URL('/api/createExchange', this.url)).toString(),
1029
- getExchangeStatus: (new URL('/api/getExchangeStatus', this.url)).toString() + '/{id}'
1030
- };
1031
- return ({
1032
- from: this.fx.from ?? [],
1033
- operations: operations
1034
- });
1105
+ const baseMetadata = await super.serviceMetadata();
1106
+ if (this.quoteConfiguration.requiresQuote || this.quoteConfiguration.issueQuotes) {
1107
+ baseMetadata.operations.getQuote = (new URL('/api/getQuote', this.url)).toString();
1108
+ }
1109
+ baseMetadata.operations.getExchangeStatus = (new URL('/api/getExchangeStatus', this.url)).toString() + '/{id}';
1110
+ baseMetadata.operations.createExchange = (new URL('/api/createExchange', this.url)).toString();
1111
+ return (baseMetadata);
1035
1112
  }
1036
1113
  async stop() {
1037
1114
  await this.pipeline.destroy();