@heliofi/common 0.2.321 → 0.2.323

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 (43) hide show
  1. package/dist/src/domain/constants/refundRecipientErrorType.d.ts +1 -0
  2. package/dist/src/domain/constants/refundRecipientErrorType.js +11 -1
  3. package/dist/src/domain/constants/refundRecipientErrorType.js.map +1 -1
  4. package/dist/src/domain/model/blockchainEngine/constants/evmEngines.d.ts +3 -0
  5. package/dist/src/domain/model/blockchainEngine/constants/evmEngines.js +12 -0
  6. package/dist/src/domain/model/blockchainEngine/constants/evmEngines.js.map +1 -0
  7. package/dist/src/domain/model/blockchainEngine/constants/index.d.ts +1 -0
  8. package/dist/src/domain/model/blockchainEngine/constants/index.js +1 -0
  9. package/dist/src/domain/model/blockchainEngine/constants/index.js.map +1 -1
  10. package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.d.ts +4 -0
  11. package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.js +8 -0
  12. package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.js.map +1 -0
  13. package/dist/src/domain/model/company/entities/index.d.ts +1 -0
  14. package/dist/src/domain/model/company/entities/index.js +1 -0
  15. package/dist/src/domain/model/company/entities/index.js.map +1 -1
  16. package/dist/src/domain/model/currency/entities/CurrencyFeature.d.ts +2 -1
  17. package/dist/src/domain/model/currency/entities/CurrencyFeature.js +1 -0
  18. package/dist/src/domain/model/currency/entities/CurrencyFeature.js.map +1 -1
  19. package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.d.ts +2 -1
  20. package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.js +1 -0
  21. package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.js.map +1 -1
  22. package/dist/src/domain/model/withdraw/entities/WithdrawalDetail.entity.d.ts +1 -0
  23. package/dist/src/domain/model/withdraw/entities/WithdrawalDetail.entity.js.map +1 -1
  24. package/dist/src/domain/services/PublicKeyService.d.ts +1 -1
  25. package/dist/src/domain/services/PublicKeyService.js +11 -7
  26. package/dist/src/domain/services/PublicKeyService.js.map +1 -1
  27. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.d.ts +9 -0
  28. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.js +35 -0
  29. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.js.map +1 -0
  30. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.d.ts +1 -0
  31. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.js +99 -0
  32. package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.js.map +1 -0
  33. package/dist/src/domain/services/RefundRecipientService/index.d.ts +2 -0
  34. package/dist/src/domain/services/RefundRecipientService/index.js +19 -0
  35. package/dist/src/domain/services/RefundRecipientService/index.js.map +1 -0
  36. package/dist/src/domain/services/RefundRecipientService/types.d.ts +9 -0
  37. package/dist/src/domain/services/RefundRecipientService/types.js +3 -0
  38. package/dist/src/domain/services/RefundRecipientService/types.js.map +1 -0
  39. package/dist/src/domain/services/index.d.ts +1 -0
  40. package/dist/src/domain/services/index.js +1 -0
  41. package/dist/src/domain/services/index.js.map +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +2 -2
@@ -8,3 +8,4 @@ export declare enum RefundRecipientErrorType {
8
8
  REFUND_LOOKALIKE = "REFUND_LOOKALIKE",
9
9
  REFUND_CONTRACT_DESTINATION = "REFUND_CONTRACT_DESTINATION"
10
10
  }
11
+ export declare const REFUND_RECIPIENT_ERROR_MESSAGES: Record<RefundRecipientErrorType, string>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RefundRecipientErrorType = void 0;
3
+ exports.REFUND_RECIPIENT_ERROR_MESSAGES = exports.RefundRecipientErrorType = void 0;
4
4
  var RefundRecipientErrorType;
5
5
  (function (RefundRecipientErrorType) {
6
6
  RefundRecipientErrorType["REFUND_SOL_OFF_CURVE"] = "REFUND_SOL_OFF_CURVE";
@@ -12,4 +12,14 @@ var RefundRecipientErrorType;
12
12
  RefundRecipientErrorType["REFUND_LOOKALIKE"] = "REFUND_LOOKALIKE";
13
13
  RefundRecipientErrorType["REFUND_CONTRACT_DESTINATION"] = "REFUND_CONTRACT_DESTINATION";
14
14
  })(RefundRecipientErrorType || (exports.RefundRecipientErrorType = RefundRecipientErrorType = {}));
15
+ exports.REFUND_RECIPIENT_ERROR_MESSAGES = {
16
+ [RefundRecipientErrorType.REFUND_SOL_OFF_CURVE]: 'Recipient is not a valid on-curve Solana address',
17
+ [RefundRecipientErrorType.REFUND_EVM_BAD_CHECKSUM]: 'Recipient is not a valid EIP-55 checksummed address',
18
+ [RefundRecipientErrorType.REFUND_BTC_INVALID]: 'Recipient is not a valid Bitcoin address for this network',
19
+ [RefundRecipientErrorType.REFUND_WRONG_NETWORK]: 'Recipient is not a valid address for this network',
20
+ [RefundRecipientErrorType.REFUND_ZERO_ADDRESS]: 'Recipient cannot be the zero address',
21
+ [RefundRecipientErrorType.REFUND_SAME_WALLET]: 'Recipient must not be the source deposit wallet',
22
+ [RefundRecipientErrorType.REFUND_LOOKALIKE]: 'Recipient looks like a near-duplicate of the deposit wallet or original sender',
23
+ [RefundRecipientErrorType.REFUND_CONTRACT_DESTINATION]: 'Recipient is a smart contract; confirm before sending',
24
+ };
15
25
  //# sourceMappingURL=refundRecipientErrorType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refundRecipientErrorType.js","sourceRoot":"","sources":["../../../../src/domain/constants/refundRecipientErrorType.ts"],"names":[],"mappings":";;;AAOA,IAAY,wBAiBX;AAjBD,WAAY,wBAAwB;IAElC,yEAA6C,CAAA;IAE7C,+EAAmD,CAAA;IAEnD,qEAAyC,CAAA;IAEzC,yEAA6C,CAAA;IAE7C,uEAA2C,CAAA;IAE3C,qEAAyC,CAAA;IAEzC,iEAAqC,CAAA;IAErC,uFAA2D,CAAA;AAC7D,CAAC,EAjBW,wBAAwB,wCAAxB,wBAAwB,QAiBnC"}
1
+ {"version":3,"file":"refundRecipientErrorType.js","sourceRoot":"","sources":["../../../../src/domain/constants/refundRecipientErrorType.ts"],"names":[],"mappings":";;;AAOA,IAAY,wBAiBX;AAjBD,WAAY,wBAAwB;IAElC,yEAA6C,CAAA;IAE7C,+EAAmD,CAAA;IAEnD,qEAAyC,CAAA;IAEzC,yEAA6C,CAAA;IAE7C,uEAA2C,CAAA;IAE3C,qEAAyC,CAAA;IAEzC,iEAAqC,CAAA;IAErC,uFAA2D,CAAA;AAC7D,CAAC,EAjBW,wBAAwB,wCAAxB,wBAAwB,QAiBnC;AAEY,QAAA,+BAA+B,GAGxC;IACF,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,EAC7C,kDAAkD;IACpD,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAChD,qDAAqD;IACvD,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,EAC3C,2DAA2D;IAC7D,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,EAC7C,mDAAmD;IACrD,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,EAC5C,sCAAsC;IACxC,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,EAC3C,iDAAiD;IACnD,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,EACzC,gFAAgF;IAClF,CAAC,wBAAwB,CAAC,2BAA2B,CAAC,EACpD,uDAAuD;CAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { BlockchainEngineType } from './BlockchainEngineType';
2
+ export declare const EVM_BLOCKCHAIN_ENGINES: ReadonlySet<BlockchainEngineType>;
3
+ export declare const isEvmEngine: (engine: BlockchainEngineType) => boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEvmEngine = exports.EVM_BLOCKCHAIN_ENGINES = void 0;
4
+ const BlockchainEngineType_1 = require("./BlockchainEngineType");
5
+ exports.EVM_BLOCKCHAIN_ENGINES = new Set([
6
+ BlockchainEngineType_1.BlockchainEngineType.EVM,
7
+ BlockchainEngineType_1.BlockchainEngineType.HYPERCORE,
8
+ BlockchainEngineType_1.BlockchainEngineType.SEISMIC,
9
+ ]);
10
+ const isEvmEngine = (engine) => exports.EVM_BLOCKCHAIN_ENGINES.has(engine);
11
+ exports.isEvmEngine = isEvmEngine;
12
+ //# sourceMappingURL=evmEngines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmEngines.js","sourceRoot":"","sources":["../../../../../../src/domain/model/blockchainEngine/constants/evmEngines.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAEjD,QAAA,sBAAsB,GACjC,IAAI,GAAG,CAAC;IACN,2CAAoB,CAAC,GAAG;IACxB,2CAAoB,CAAC,SAAS;IAC9B,2CAAoB,CAAC,OAAO;CAC7B,CAAC,CAAC;AAEE,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAW,EAAE,CACnE,8BAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AADxB,QAAA,WAAW,eACa"}
@@ -1 +1,2 @@
1
1
  export * from './BlockchainEngineType';
2
+ export * from './evmEngines';
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./BlockchainEngineType"), exports);
18
+ __exportStar(require("./evmEngines"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/domain/model/blockchainEngine/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/domain/model/blockchainEngine/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,+CAA6B"}
@@ -0,0 +1,4 @@
1
+ import { Company } from './Company.entity';
2
+ export declare class CompanyWithFirstParty extends Company {
3
+ isFirstParty: boolean;
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompanyWithFirstParty = void 0;
4
+ const Company_entity_1 = require("./Company.entity");
5
+ class CompanyWithFirstParty extends Company_entity_1.Company {
6
+ }
7
+ exports.CompanyWithFirstParty = CompanyWithFirstParty;
8
+ //# sourceMappingURL=CompanyWithFirstParty.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompanyWithFirstParty.entity.js","sourceRoot":"","sources":["../../../../../../src/domain/model/company/entities/CompanyWithFirstParty.entity.ts"],"names":[],"mappings":";;;AAAA,qDAA2C;AAE3C,MAAa,qBAAsB,SAAQ,wBAAO;CAEjD;AAFD,sDAEC"}
@@ -3,6 +3,7 @@ export * from './Company.entity';
3
3
  export * from './CompanyWalletVerificationConfig.entity';
4
4
  export * from './CompanyPaymentWallets.entity';
5
5
  export * from './CompanyWithFees.entity';
6
+ export * from './CompanyWithFirstParty.entity';
6
7
  export * from './CompanyWithLogo.entity';
7
8
  export * from './CompanyWithShopifyMerchantDetails.entity';
8
9
  export * from './CreateCompany';
@@ -19,6 +19,7 @@ __exportStar(require("./Company.entity"), exports);
19
19
  __exportStar(require("./CompanyWalletVerificationConfig.entity"), exports);
20
20
  __exportStar(require("./CompanyPaymentWallets.entity"), exports);
21
21
  __exportStar(require("./CompanyWithFees.entity"), exports);
22
+ __exportStar(require("./CompanyWithFirstParty.entity"), exports);
22
23
  __exportStar(require("./CompanyWithLogo.entity"), exports);
23
24
  __exportStar(require("./CompanyWithShopifyMerchantDetails.entity"), exports);
24
25
  __exportStar(require("./CreateCompany"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/domain/model/company/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,mDAAiC;AACjC,2EAAyD;AACzD,iEAA+C;AAC/C,2DAAyC;AACzC,2DAAyC;AACzC,6EAA2D;AAC3D,kDAAgC;AAChC,0DAAwC;AACxC,8DAA4C;AAC5C,+DAA6C;AAC7C,4DAA0C;AAC1C,gEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/domain/model/company/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,mDAAiC;AACjC,2EAAyD;AACzD,iEAA+C;AAC/C,2DAAyC;AACzC,iEAA+C;AAC/C,2DAAyC;AACzC,6EAA2D;AAC3D,kDAAgC;AAChC,0DAAwC;AACxC,8DAA4C;AAC5C,+DAA6C;AAC7C,4DAA0C;AAC1C,gEAA8C"}
@@ -10,5 +10,6 @@ export declare enum CurrencyFeature {
10
10
  USD_RATE = "USD_RATE",
11
11
  STABLECOIN = "STABLECOIN",
12
12
  USD_STABLE = "USD_STABLE",
13
- NATIVE_TOKEN = "NATIVE_TOKEN"
13
+ NATIVE_TOKEN = "NATIVE_TOKEN",
14
+ SPONSORED_SOL_TO_EVM_SWAP = "SPONSORED_SOL_TO_EVM_SWAP"
14
15
  }
@@ -15,5 +15,6 @@ var CurrencyFeature;
15
15
  CurrencyFeature["STABLECOIN"] = "STABLECOIN";
16
16
  CurrencyFeature["USD_STABLE"] = "USD_STABLE";
17
17
  CurrencyFeature["NATIVE_TOKEN"] = "NATIVE_TOKEN";
18
+ CurrencyFeature["SPONSORED_SOL_TO_EVM_SWAP"] = "SPONSORED_SOL_TO_EVM_SWAP";
18
19
  })(CurrencyFeature || (exports.CurrencyFeature = CurrencyFeature = {}));
19
20
  //# sourceMappingURL=CurrencyFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CurrencyFeature.js","sourceRoot":"","sources":["../../../../../../src/domain/model/currency/entities/CurrencyFeature.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAaX;AAbD,WAAY,eAAe;IACzB,sDAAmC,CAAA;IACnC,0DAAuC,CAAA;IACvC,gCAAa,CAAA;IACb,4EAAyD,CAAA;IACzD,0EAAuD,CAAA;IACvD,0FAAuE,CAAA;IACvE,0DAAuC,CAAA;IACvC,oEAAiD,CAAA;IACjD,wCAAqB,CAAA;IACrB,4CAAyB,CAAA;IACzB,4CAAyB,CAAA;IACzB,gDAA6B,CAAA;AAC/B,CAAC,EAbW,eAAe,+BAAf,eAAe,QAa1B"}
1
+ {"version":3,"file":"CurrencyFeature.js","sourceRoot":"","sources":["../../../../../../src/domain/model/currency/entities/CurrencyFeature.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,sDAAmC,CAAA;IACnC,0DAAuC,CAAA;IACvC,gCAAa,CAAA;IACb,4EAAyD,CAAA;IACzD,0EAAuD,CAAA;IACvD,0FAAuE,CAAA;IACvE,0DAAuC,CAAA;IACvC,oEAAiD,CAAA;IACjD,wCAAqB,CAAA;IACrB,4CAAyB,CAAA;IACzB,4CAAyB,CAAA;IACzB,gDAA6B,CAAA;IAC7B,0EAAuD,CAAA;AACzD,CAAC,EAdW,eAAe,+BAAf,eAAe,QAc1B"}
@@ -5,5 +5,6 @@ export declare enum BetaFeature {
5
5
  CHECKOUT_V2 = "checkout_v2",
6
6
  TRON_ENERGY_RENTAL_DISABLED = "TRON_ENERGY_RENTAL_DISABLED",
7
7
  THEMES_V2 = "themesV2",
8
- MOONPAY_IP_MATCHING_DISABLED = "MOONPAY_IP_MATCHING_DISABLED"
8
+ MOONPAY_IP_MATCHING_DISABLED = "MOONPAY_IP_MATCHING_DISABLED",
9
+ CHECKOUT_BACK_BUTTON = "checkout_back_button"
9
10
  }
@@ -10,5 +10,6 @@ var BetaFeature;
10
10
  BetaFeature["TRON_ENERGY_RENTAL_DISABLED"] = "TRON_ENERGY_RENTAL_DISABLED";
11
11
  BetaFeature["THEMES_V2"] = "themesV2";
12
12
  BetaFeature["MOONPAY_IP_MATCHING_DISABLED"] = "MOONPAY_IP_MATCHING_DISABLED";
13
+ BetaFeature["CHECKOUT_BACK_BUTTON"] = "checkout_back_button";
13
14
  })(BetaFeature || (exports.BetaFeature = BetaFeature = {}));
14
15
  //# sourceMappingURL=BetaFeature.entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BetaFeature.entity.js","sourceRoot":"","sources":["../../../../../../src/domain/model/feature-flags/entities/BetaFeature.entity.ts"],"names":[],"mappings":";;;AAAA,IAAY,WASX;AATD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kEAAmD,CAAA;IACnD,gDAAiC,CAAA;IACjC,0CAA2B,CAAA;IAC3B,0EAA2D,CAAA;IAC3D,qCAAsB,CAAA;IAEtB,4EAA6D,CAAA;AAC/D,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
1
+ {"version":3,"file":"BetaFeature.entity.js","sourceRoot":"","sources":["../../../../../../src/domain/model/feature-flags/entities/BetaFeature.entity.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kEAAmD,CAAA;IACnD,gDAAiC,CAAA;IACjC,0CAA2B,CAAA;IAC3B,0EAA2D,CAAA;IAC3D,qCAAsB,CAAA;IAEtB,4EAA6D,CAAA;IAC7D,4DAA6C,CAAA;AAC/C,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB"}
@@ -5,6 +5,7 @@ export declare class WithdrawalDetailEntity extends Entity {
5
5
  withdrawalDetailId: string;
6
6
  state: WithdrawalState;
7
7
  txHash: string | null;
8
+ destinationTxHash: string | null;
8
9
  broadcastAck: BroadcastAck | null;
9
10
  errorReason: string | null;
10
11
  customerId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"WithdrawalDetail.entity.js","sourceRoot":"","sources":["../../../../../../src/domain/model/withdraw/entities/WithdrawalDetail.entity.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAItC,MAAa,sBAAuB,SAAQ,eAAM;CAYjD;AAZD,wDAYC"}
1
+ {"version":3,"file":"WithdrawalDetail.entity.js","sourceRoot":"","sources":["../../../../../../src/domain/model/withdraw/entities/WithdrawalDetail.entity.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAItC,MAAa,sBAAuB,SAAQ,eAAM;CAgBjD;AAhBD,wDAgBC"}
@@ -17,7 +17,6 @@ export declare class PublicKeyService {
17
17
  private static crc16Ccitt;
18
18
  static validateDOGEAddress(address: string, _generalNetwork: GeneralNetwork): boolean;
19
19
  static validateBTCAddress(address: string, generalNetwork: GeneralNetwork): boolean;
20
- private static readonly EVM_FAMILY_ENGINES;
21
20
  private static readonly EVM_ZERO_ADDRESS_REGEX;
22
21
  static isSolAddressOnCurve(address: string): boolean;
23
22
  static toChecksumAddress(address: string): string;
@@ -25,6 +24,7 @@ export declare class PublicKeyService {
25
24
  static isZeroEvmAddress(address: string): boolean;
26
25
  private static normalizeTonAddressKey;
27
26
  static isSameWallet(engine: BlockchainEngineType, a: string, b: string): boolean;
27
+ static isLookalikeAddress(engine: BlockchainEngineType, candidate: string, references: string[], maxDistance?: number): boolean;
28
28
  static validateRefundRecipientForEngine(engine: BlockchainEngineType, address: string, generalNetwork: GeneralNetwork): RefundRecipientErrorType | null;
29
29
  static isValidRefundRecipientForEngine(engine: BlockchainEngineType, address: string, generalNetwork: GeneralNetwork): boolean;
30
30
  }
@@ -30,6 +30,7 @@ const js_sha3_1 = require("js-sha3");
30
30
  const tronweb_1 = require("tronweb");
31
31
  const constants_1 = require("../constants");
32
32
  const blockchainEngine_1 = require("../model/blockchainEngine");
33
+ const StringService_1 = require("./StringService");
33
34
  class PublicKeyService {
34
35
  static validateAddressForEngine(engine, address, generalNetwork) {
35
36
  switch (engine) {
@@ -211,7 +212,7 @@ class PublicKeyService {
211
212
  if (!a || !b) {
212
213
  return false;
213
214
  }
214
- if (this.EVM_FAMILY_ENGINES.has(engine)) {
215
+ if ((0, blockchainEngine_1.isEvmEngine)(engine)) {
215
216
  return a.toLowerCase() === b.toLowerCase();
216
217
  }
217
218
  if (engine === blockchainEngine_1.BlockchainEngineType.TON) {
@@ -223,6 +224,11 @@ class PublicKeyService {
223
224
  }
224
225
  return a === b;
225
226
  }
227
+ static isLookalikeAddress(engine, candidate, references, maxDistance = 2) {
228
+ const normalise = (address) => (0, blockchainEngine_1.isEvmEngine)(engine) ? address.toLowerCase() : address;
229
+ const normalisedCandidate = normalise(candidate);
230
+ return references.some((reference) => StringService_1.StringService.isNearDuplicate(normalisedCandidate, normalise(reference), maxDistance));
231
+ }
226
232
  static validateRefundRecipientForEngine(engine, address, generalNetwork) {
227
233
  switch (engine) {
228
234
  case blockchainEngine_1.BlockchainEngineType.SOL:
@@ -230,9 +236,12 @@ class PublicKeyService {
230
236
  ? null
231
237
  : constants_1.RefundRecipientErrorType.REFUND_SOL_OFF_CURVE;
232
238
  case blockchainEngine_1.BlockchainEngineType.EVM:
239
+ return this.validateEvmAddressChecksummed(address)
240
+ ? null
241
+ : constants_1.RefundRecipientErrorType.REFUND_EVM_BAD_CHECKSUM;
233
242
  case blockchainEngine_1.BlockchainEngineType.HYPERCORE:
234
243
  case blockchainEngine_1.BlockchainEngineType.SEISMIC:
235
- return this.validateEvmAddressChecksummed(address)
244
+ return this.validateEvmAddress(address)
236
245
  ? null
237
246
  : constants_1.RefundRecipientErrorType.REFUND_EVM_BAD_CHECKSUM;
238
247
  case blockchainEngine_1.BlockchainEngineType.BTC:
@@ -279,10 +288,5 @@ PublicKeyService.TON_RAW_ADDRESS_REGEX = /^(-1|0):[0-9a-fA-F]{64}$/;
279
288
  PublicKeyService.TON_FRIENDLY_ADDRESS_REGEX = /^[A-Za-z0-9+/_-]{48}$/;
280
289
  PublicKeyService.TON_MAINNET_TAGS = new Set([0x11, 0x51]);
281
290
  PublicKeyService.TON_WORKCHAIN_BYTES = new Set([0x00, 0xff]);
282
- PublicKeyService.EVM_FAMILY_ENGINES = new Set([
283
- blockchainEngine_1.BlockchainEngineType.EVM,
284
- blockchainEngine_1.BlockchainEngineType.HYPERCORE,
285
- blockchainEngine_1.BlockchainEngineType.SEISMIC,
286
- ]);
287
291
  PublicKeyService.EVM_ZERO_ADDRESS_REGEX = /^0x0{40}$/i;
288
292
  //# sourceMappingURL=PublicKeyService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PublicKeyService.js","sourceRoot":"","sources":["../../../../src/domain/services/PublicKeyService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PublicKeyService.js","sourceRoot":"","sources":["../../../../src/domain/services/PublicKeyService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,yDAA2C;AAC3C,qCAAoC;AACpC,qCAAkC;AAClC,4CAAwE;AACxE,gEAA8E;AAC9E,mDAAgD;AAEhD,MAAa,gBAAgB;IAY3B,MAAM,CAAC,wBAAwB,CAC7B,MAA4B,EAC5B,OAAe,EACf,cAA8B;QAE9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,uCAAoB,CAAC,GAAG,CAAC;YAC9B,KAAK,uCAAoB,CAAC,SAAS,CAAC;YACpC,KAAK,uCAAoB,CAAC,OAAO;gBAC/B,OAAO,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC;YACzD,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1C,KAAK,uCAAoB,CAAC,IAAI;gBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3C,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC1D,KAAK,uCAAoB,CAAC,IAAI;gBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC3D,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,UAAU,GAAU,MAAM,CAAC;gBACjC,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,4BAA4B,CACjC,OAAe,EACf,cAA+B;QAE/B,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,cAAc,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,OAAe;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,IAAI,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,iCAAiC,CAAC,OAAe;QACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,OAAe;QACvC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnE,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAID,MAAM,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAA,mBAAS,EAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAEhC,IACE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;gBAC3D,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAC5D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,OAAe;QACxC,IAAI,CAAC;YACH,OAAO,iBAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAUD,MAAM,CAAC,kBAAkB,CAAC,OAAe;QACvC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAC7C,QAAQ,CACT,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACvC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC;IAChE,CAAC;IAGO,MAAM,CAAC,UAAU,CAAC,IAAgB;QACxC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;YACjE,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,MAAM,CAAC,mBAAmB,CACxB,OAAe,EACf,eAA+B;QAE/B,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAQD,MAAM,CAAC,kBAAkB,CACvB,OAAe,EACf,cAA8B;QAE9B,MAAM,OAAO,GACX,cAAc,KAAK,0BAAc,CAAC,OAAO;YACvC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO;YAC5B,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAgBD,MAAM,CAAC,mBAAmB,CAAC,OAAe;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,mBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAMD,MAAM,CAAC,iBAAiB,CAAC,OAAe;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAA,mBAAS,EAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD,MAAM,CAAC,6BAA6B,CAAC,OAAe;QAClD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IASO,MAAM,CAAC,sBAAsB,CAAC,OAAe;QACnD,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAC7C,QAAQ,CACT,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;IAChC,CAAC;IASD,MAAM,CAAC,YAAY,CACjB,MAA4B,EAC5B,CAAS,EACT,CAAS;QAET,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAA,8BAAW,EAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,KAAK,uCAAoB,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,KAAK,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,kBAAkB,CACvB,MAA4B,EAC5B,SAAiB,EACjB,UAAoB,EACpB,WAAW,GAAG,CAAC;QAEf,MAAM,SAAS,GAAG,CAAC,OAAe,EAAU,EAAE,CAC5C,IAAA,8BAAW,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,MAAM,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACnC,6BAAa,CAAC,eAAe,CAC3B,mBAAmB,EACnB,SAAS,CAAC,SAAS,CAAC,EACpB,WAAW,CACZ,CACF,CAAC;IACJ,CAAC;IAWD,MAAM,CAAC,gCAAgC,CACrC,MAA4B,EAC5B,OAAe,EACf,cAA8B;QAE9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBACtC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,oBAAoB,CAAC;YACpD,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;oBAChD,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,uBAAuB,CAAC;YACvD,KAAK,uCAAoB,CAAC,SAAS,CAAC;YACpC,KAAK,uCAAoB,CAAC,OAAO;gBAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,uBAAuB,CAAC;YACvD,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC;oBACrD,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,kBAAkB,CAAC;YAClD,KAAK,uCAAoB,CAAC,IAAI;gBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBACtC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,oBAAoB,CAAC;YACpD,KAAK,uCAAoB,CAAC,IAAI;gBAI5B,IAAI,cAAc,KAAK,0BAAc,CAAC,OAAO,EAAE,CAAC;oBAC9C,OAAO,oCAAwB,CAAC,oBAAoB,CAAC;gBACvD,CAAC;gBACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC;oBACtD,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,oBAAoB,CAAC;YACpD,KAAK,uCAAoB,CAAC,GAAG;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,oCAAwB,CAAC,oBAAoB,CAAC;YACpD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,UAAU,GAAU,MAAM,CAAC;gBACjC,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,CAAC,+BAA+B,CACpC,MAA4B,EAC5B,OAAe,EACf,cAA8B;QAE9B,OAAO,CACL,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC;YACtE,IAAI,CACL,CAAC;IACJ,CAAC;;AArYH,4CAsYC;AArYyB,kCAAiB,GAAG,qBAAqB,CAAC;AAE1C,6BAAY,GAAsB;IACxD,aAAa,EAAE,gCAAgC;IAC/C,MAAM,EAAE,EAAuB;IAC/B,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE;IAClD,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,GAAG,EAAE,IAAI;CACV,CAAC;AAsGsB,sCAAqB,GAAG,0BAA0B,CAAC;AAEnD,2CAA0B,GAAG,uBAAuB,CAAC;AAErD,iCAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEzC,oCAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AA+E5C,uCAAsB,GAAG,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { RefundRecipientErrorType } from '../../constants';
2
+ import { RefundRecipientCheckParams } from './types';
3
+ export declare class RefundRecipientService {
4
+ check(params: RefundRecipientCheckParams): RefundRecipientErrorType | null;
5
+ private checkAddressIntegrity;
6
+ private checkZeroAddress;
7
+ private checkSameWallet;
8
+ private checkLookalike;
9
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RefundRecipientService = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const blockchainEngine_1 = require("../../model/blockchainEngine");
6
+ const PublicKeyService_1 = require("../PublicKeyService");
7
+ class RefundRecipientService {
8
+ check(params) {
9
+ return (this.checkAddressIntegrity(params) ??
10
+ this.checkZeroAddress(params) ??
11
+ this.checkSameWallet(params) ??
12
+ this.checkLookalike(params));
13
+ }
14
+ checkAddressIntegrity({ engine, recipientAddress, generalNetwork, }) {
15
+ return PublicKeyService_1.PublicKeyService.validateRefundRecipientForEngine(engine, recipientAddress, generalNetwork);
16
+ }
17
+ checkZeroAddress({ engine, recipientAddress, }) {
18
+ const isZero = (0, blockchainEngine_1.isEvmEngine)(engine) &&
19
+ PublicKeyService_1.PublicKeyService.isZeroEvmAddress(recipientAddress);
20
+ return isZero ? constants_1.RefundRecipientErrorType.REFUND_ZERO_ADDRESS : null;
21
+ }
22
+ checkSameWallet({ engine, recipientAddress, depositWalletAddress, }) {
23
+ const isSameWallet = PublicKeyService_1.PublicKeyService.isSameWallet(engine, recipientAddress, depositWalletAddress);
24
+ return isSameWallet ? constants_1.RefundRecipientErrorType.REFUND_SAME_WALLET : null;
25
+ }
26
+ checkLookalike({ engine, recipientAddress, depositWalletAddress, originalSenderAddress, }) {
27
+ const references = originalSenderAddress
28
+ ? [depositWalletAddress, originalSenderAddress]
29
+ : [depositWalletAddress];
30
+ const isLookalike = PublicKeyService_1.PublicKeyService.isLookalikeAddress(engine, recipientAddress, references);
31
+ return isLookalike ? constants_1.RefundRecipientErrorType.REFUND_LOOKALIKE : null;
32
+ }
33
+ }
34
+ exports.RefundRecipientService = RefundRecipientService;
35
+ //# sourceMappingURL=RefundRecipientService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefundRecipientService.js","sourceRoot":"","sources":["../../../../../src/domain/services/RefundRecipientService/RefundRecipientService.ts"],"names":[],"mappings":";;;AAAA,+CAA2D;AAC3D,mEAA2D;AAC3D,0DAAuD;AAGvD,MAAa,sBAAsB;IACjC,KAAK,CAAC,MAAkC;QACtC,OAAO,CACL,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAC5B,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,EAC5B,MAAM,EACN,gBAAgB,EAChB,cAAc,GACa;QAC3B,OAAO,mCAAgB,CAAC,gCAAgC,CACtD,MAAM,EACN,gBAAgB,EAChB,cAAc,CACf,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,EACvB,MAAM,EACN,gBAAgB,GACW;QAC3B,MAAM,MAAM,GACV,IAAA,8BAAW,EAAC,MAAM,CAAC;YACnB,mCAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,CAAC,CAAC,oCAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,CAAC;IAEO,eAAe,CAAC,EACtB,MAAM,EACN,gBAAgB,EAChB,oBAAoB,GACO;QAC3B,MAAM,YAAY,GAAG,mCAAgB,CAAC,YAAY,CAChD,MAAM,EACN,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QACF,OAAO,YAAY,CAAC,CAAC,CAAC,oCAAwB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAEO,cAAc,CAAC,EACrB,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACM;QAC3B,MAAM,UAAU,GAAG,qBAAqB;YACtC,CAAC,CAAC,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;YAC/C,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,mCAAgB,CAAC,kBAAkB,CACrD,MAAM,EACN,gBAAgB,EAChB,UAAU,CACX,CAAC;QACF,OAAO,WAAW,CAAC,CAAC,CAAC,oCAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;CACF;AA7DD,wDA6DC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const RefundRecipientService_1 = require("./RefundRecipientService");
4
+ const constants_1 = require("../../constants");
5
+ const blockchainEngine_1 = require("../../model/blockchainEngine");
6
+ describe('RefundRecipientService.check', () => {
7
+ const net = constants_1.GeneralNetwork.MAINNET;
8
+ const service = new RefundRecipientService_1.RefundRecipientService();
9
+ const SOL_OFF_CURVE = 'DQXdHwnsVqSobVCqYpsSnzLNVLqLUf7vbaV4nQSKLMGk';
10
+ const SOL_ON_CURVE = 'DQXdHwnsVqSobVCqYpsSnzLNVLgLUf7vbaV4nQSKLMGk';
11
+ const SOL_WALLET = '9PTAZwj9qeet6bCAai6aoTg1phfgJonBwKvy8btQJMxR';
12
+ const EVM_CHECKSUMMED = '0xDb1dEB1127B228161e2B0c6D9AB9760Bd21E5dDA';
13
+ const EVM_LOWER = '0xdb1deb1127b228161e2b0c6d9ab9760bd21e5dda';
14
+ const EVM_LOOKALIKE_WALLET = '0xdb1deb1127b228161e2b0c6d9ab9760bd21e5ddb';
15
+ const EVM_OTHER_WALLET = '0x27179709962aa380dcEf95BeB5Bc1baB1D285bA2';
16
+ const EVM_ZERO = '0x0000000000000000000000000000000000000000';
17
+ it('rejects an off-curve Solana recipient', () => {
18
+ expect(service.check({
19
+ engine: blockchainEngine_1.BlockchainEngineType.SOL,
20
+ recipientAddress: SOL_OFF_CURVE,
21
+ depositWalletAddress: SOL_WALLET,
22
+ generalNetwork: net,
23
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_SOL_OFF_CURVE);
24
+ });
25
+ it('accepts a valid on-curve Solana recipient', () => {
26
+ expect(service.check({
27
+ engine: blockchainEngine_1.BlockchainEngineType.SOL,
28
+ recipientAddress: SOL_ON_CURVE,
29
+ depositWalletAddress: SOL_WALLET,
30
+ generalNetwork: net,
31
+ })).toBeNull();
32
+ });
33
+ it('rejects a non-checksummed EVM recipient (strict EIP-55)', () => {
34
+ expect(service.check({
35
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
36
+ recipientAddress: EVM_LOWER,
37
+ depositWalletAddress: EVM_OTHER_WALLET,
38
+ generalNetwork: net,
39
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_EVM_BAD_CHECKSUM);
40
+ });
41
+ it('accepts a lowercased HyperCore recipient (lenient)', () => {
42
+ expect(service.check({
43
+ engine: blockchainEngine_1.BlockchainEngineType.HYPERCORE,
44
+ recipientAddress: EVM_LOWER,
45
+ depositWalletAddress: EVM_OTHER_WALLET,
46
+ generalNetwork: net,
47
+ })).toBeNull();
48
+ });
49
+ it('rejects the EVM zero address', () => {
50
+ expect(service.check({
51
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
52
+ recipientAddress: EVM_ZERO,
53
+ depositWalletAddress: EVM_OTHER_WALLET,
54
+ generalNetwork: net,
55
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_ZERO_ADDRESS);
56
+ });
57
+ it('rejects refunding to the source deposit wallet (case-insensitive for EVM)', () => {
58
+ expect(service.check({
59
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
60
+ recipientAddress: EVM_CHECKSUMMED,
61
+ depositWalletAddress: EVM_LOWER,
62
+ generalNetwork: net,
63
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_SAME_WALLET);
64
+ });
65
+ it('rejects a look-alike of the deposit wallet', () => {
66
+ expect(service.check({
67
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
68
+ recipientAddress: EVM_CHECKSUMMED,
69
+ depositWalletAddress: EVM_LOOKALIKE_WALLET,
70
+ generalNetwork: net,
71
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_LOOKALIKE);
72
+ });
73
+ it('rejects a look-alike of the original sender', () => {
74
+ expect(service.check({
75
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
76
+ recipientAddress: EVM_CHECKSUMMED,
77
+ depositWalletAddress: EVM_OTHER_WALLET,
78
+ originalSenderAddress: EVM_LOOKALIKE_WALLET,
79
+ generalNetwork: net,
80
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_LOOKALIKE);
81
+ });
82
+ it('accepts a valid, distinct recipient', () => {
83
+ expect(service.check({
84
+ engine: blockchainEngine_1.BlockchainEngineType.EVM,
85
+ recipientAddress: EVM_CHECKSUMMED,
86
+ depositWalletAddress: EVM_OTHER_WALLET,
87
+ generalNetwork: net,
88
+ })).toBeNull();
89
+ });
90
+ it('checks integrity before same-wallet (off-curve wins over same address)', () => {
91
+ expect(service.check({
92
+ engine: blockchainEngine_1.BlockchainEngineType.SOL,
93
+ recipientAddress: SOL_OFF_CURVE,
94
+ depositWalletAddress: SOL_OFF_CURVE,
95
+ generalNetwork: net,
96
+ })).toBe(constants_1.RefundRecipientErrorType.REFUND_SOL_OFF_CURVE);
97
+ });
98
+ });
99
+ //# sourceMappingURL=RefundRecipientService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefundRecipientService.spec.js","sourceRoot":"","sources":["../../../../../src/domain/services/RefundRecipientService/RefundRecipientService.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './RefundRecipientService';
2
+ export * from './types';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./RefundRecipientService"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/domain/services/RefundRecipientService/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0CAAwB"}
@@ -0,0 +1,9 @@
1
+ import { GeneralNetwork } from '../../constants';
2
+ import { BlockchainEngineType } from '../../model/blockchainEngine';
3
+ export interface RefundRecipientCheckParams {
4
+ engine: BlockchainEngineType;
5
+ recipientAddress: string;
6
+ depositWalletAddress: string;
7
+ originalSenderAddress?: string;
8
+ generalNetwork: GeneralNetwork;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/domain/services/RefundRecipientService/types.ts"],"names":[],"mappings":""}
@@ -16,3 +16,4 @@ export * from './SolanaSerializationService';
16
16
  export * from './BlockchainExplorerService';
17
17
  export * from './SeismicExplorerService';
18
18
  export * from './StringService';
19
+ export * from './RefundRecipientService';
@@ -32,4 +32,5 @@ __exportStar(require("./SolanaSerializationService"), exports);
32
32
  __exportStar(require("./BlockchainExplorerService"), exports);
33
33
  __exportStar(require("./SeismicExplorerService"), exports);
34
34
  __exportStar(require("./StringService"), exports);
35
+ __exportStar(require("./RefundRecipientService"), exports);
35
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,0DAAwC;AACxC,mDAAiC;AACjC,mDAAiC;AACjC,+CAA6B;AAC7B,iEAA+C;AAC/C,2DAAyC;AACzC,uDAAqC;AACrC,2DAAyC;AACzC,6DAA2C;AAC3C,iDAA+B;AAC/B,kDAAgC;AAChC,mDAAiC;AACjC,qDAAmC;AACnC,+DAA6C;AAC7C,8DAA4C;AAC5C,2DAAyC;AACzC,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,0DAAwC;AACxC,mDAAiC;AACjC,mDAAiC;AACjC,+CAA6B;AAC7B,iEAA+C;AAC/C,2DAAyC;AACzC,uDAAqC;AACrC,2DAAyC;AACzC,6DAA2C;AAC3C,iDAA+B;AAC/B,kDAAgC;AAChC,mDAAiC;AACjC,qDAAmC;AACnC,+DAA6C;AAC7C,8DAA4C;AAC5C,2DAAyC;AACzC,kDAAgC;AAChC,2DAAyC"}