@heliofi/common 0.2.321 → 0.2.322
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.
- package/dist/src/domain/constants/refundRecipientErrorType.d.ts +1 -0
- package/dist/src/domain/constants/refundRecipientErrorType.js +11 -1
- package/dist/src/domain/constants/refundRecipientErrorType.js.map +1 -1
- package/dist/src/domain/model/blockchainEngine/constants/evmEngines.d.ts +3 -0
- package/dist/src/domain/model/blockchainEngine/constants/evmEngines.js +12 -0
- package/dist/src/domain/model/blockchainEngine/constants/evmEngines.js.map +1 -0
- package/dist/src/domain/model/blockchainEngine/constants/index.d.ts +1 -0
- package/dist/src/domain/model/blockchainEngine/constants/index.js +1 -0
- package/dist/src/domain/model/blockchainEngine/constants/index.js.map +1 -1
- package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.d.ts +4 -0
- package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.js +8 -0
- package/dist/src/domain/model/company/entities/CompanyWithFirstParty.entity.js.map +1 -0
- package/dist/src/domain/model/company/entities/index.d.ts +1 -0
- package/dist/src/domain/model/company/entities/index.js +1 -0
- package/dist/src/domain/model/company/entities/index.js.map +1 -1
- package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.d.ts +2 -1
- package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.js +1 -0
- package/dist/src/domain/model/feature-flags/entities/BetaFeature.entity.js.map +1 -1
- package/dist/src/domain/services/PublicKeyService.d.ts +1 -1
- package/dist/src/domain/services/PublicKeyService.js +11 -7
- package/dist/src/domain/services/PublicKeyService.js.map +1 -1
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.d.ts +9 -0
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.js +35 -0
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.js.map +1 -0
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.d.ts +1 -0
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.js +99 -0
- package/dist/src/domain/services/RefundRecipientService/RefundRecipientService.spec.js.map +1 -0
- package/dist/src/domain/services/RefundRecipientService/index.d.ts +2 -0
- package/dist/src/domain/services/RefundRecipientService/index.js +19 -0
- package/dist/src/domain/services/RefundRecipientService/index.js.map +1 -0
- package/dist/src/domain/services/RefundRecipientService/types.d.ts +9 -0
- package/dist/src/domain/services/RefundRecipientService/types.js +3 -0
- package/dist/src/domain/services/RefundRecipientService/types.js.map +1 -0
- package/dist/src/domain/services/index.d.ts +1 -0
- package/dist/src/domain/services/index.js +1 -0
- package/dist/src/domain/services/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -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,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"}
|
|
@@ -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,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"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -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 (
|
|
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.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,yDAA2C;AAC3C,qCAAoC;AACpC,qCAAkC;AAClC,4CAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"PublicKeyService.js","sourceRoot":"","sources":["../../../../src/domain/services/PublicKeyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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,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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/domain/services/RefundRecipientService/types.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|