@heyanon/sdk 2.3.8 → 2.3.9
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/index.js
CHANGED
|
@@ -606,6 +606,32 @@ function isAddress(value) {
|
|
|
606
606
|
|
|
607
607
|
// src/utils/get-timestamp.ts
|
|
608
608
|
var getTimestamp = () => Math.floor(Date.now() / 1e3);
|
|
609
|
+
var { NATIVE_ADDRESS: NATIVE_ADDRESS2, WETH9: WETH92 } = evm_exports.constants;
|
|
610
|
+
var { isEvmChain: isEvmChain2 } = evm_exports.utils;
|
|
611
|
+
function normalizeAddress(chain, address) {
|
|
612
|
+
const { valid } = isAddress(address);
|
|
613
|
+
if (!valid)
|
|
614
|
+
throw new Error(`This is not a address: ${address}`);
|
|
615
|
+
if (address.toLowerCase() === NATIVE_ADDRESS2.toLowerCase()) {
|
|
616
|
+
if (isEvmChain2(chain)) {
|
|
617
|
+
const weth9 = WETH92[chain];
|
|
618
|
+
if (!weth9)
|
|
619
|
+
throw new Error(`WETH9 not found for ${chain}`);
|
|
620
|
+
return weth9.address;
|
|
621
|
+
}
|
|
622
|
+
if (chain === "solana" /* SOLANA */) {
|
|
623
|
+
return "So11111111111111111111111111111111111111112";
|
|
624
|
+
}
|
|
625
|
+
if (chain === "ton" /* TON */) {
|
|
626
|
+
return "0:0000000000000000000000000000000000000000000000000000000000000000";
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
if (chain === "ton" /* TON */) {
|
|
630
|
+
const tonAddress = ton.Address.parse(address);
|
|
631
|
+
return tonAddress.toRawString();
|
|
632
|
+
}
|
|
633
|
+
return address;
|
|
634
|
+
}
|
|
609
635
|
|
|
610
636
|
// src/adapter/transformers/toResult.ts
|
|
611
637
|
function toResult(data, error = false) {
|
|
@@ -643,6 +669,7 @@ exports.allChains = allChains;
|
|
|
643
669
|
exports.allEvmChains = allEvmChains;
|
|
644
670
|
exports.getTimestamp = getTimestamp;
|
|
645
671
|
exports.isAddress = isAddress;
|
|
672
|
+
exports.normalizeAddress = normalizeAddress;
|
|
646
673
|
exports.retry = retry;
|
|
647
674
|
exports.sleep = sleep;
|
|
648
675
|
exports.stringify = stringify;
|
package/dist/index.mjs
CHANGED
|
@@ -604,6 +604,32 @@ function isAddress(value) {
|
|
|
604
604
|
|
|
605
605
|
// src/utils/get-timestamp.ts
|
|
606
606
|
var getTimestamp = () => Math.floor(Date.now() / 1e3);
|
|
607
|
+
var { NATIVE_ADDRESS: NATIVE_ADDRESS2, WETH9: WETH92 } = evm_exports.constants;
|
|
608
|
+
var { isEvmChain: isEvmChain2 } = evm_exports.utils;
|
|
609
|
+
function normalizeAddress(chain, address) {
|
|
610
|
+
const { valid } = isAddress(address);
|
|
611
|
+
if (!valid)
|
|
612
|
+
throw new Error(`This is not a address: ${address}`);
|
|
613
|
+
if (address.toLowerCase() === NATIVE_ADDRESS2.toLowerCase()) {
|
|
614
|
+
if (isEvmChain2(chain)) {
|
|
615
|
+
const weth9 = WETH92[chain];
|
|
616
|
+
if (!weth9)
|
|
617
|
+
throw new Error(`WETH9 not found for ${chain}`);
|
|
618
|
+
return weth9.address;
|
|
619
|
+
}
|
|
620
|
+
if (chain === "solana" /* SOLANA */) {
|
|
621
|
+
return "So11111111111111111111111111111111111111112";
|
|
622
|
+
}
|
|
623
|
+
if (chain === "ton" /* TON */) {
|
|
624
|
+
return "0:0000000000000000000000000000000000000000000000000000000000000000";
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
if (chain === "ton" /* TON */) {
|
|
628
|
+
const tonAddress = Address.parse(address);
|
|
629
|
+
return tonAddress.toRawString();
|
|
630
|
+
}
|
|
631
|
+
return address;
|
|
632
|
+
}
|
|
607
633
|
|
|
608
634
|
// src/adapter/transformers/toResult.ts
|
|
609
635
|
function toResult(data, error = false) {
|
|
@@ -631,4 +657,4 @@ var AdapterTag = /* @__PURE__ */ ((AdapterTag2) => {
|
|
|
631
657
|
return AdapterTag2;
|
|
632
658
|
})(AdapterTag || {});
|
|
633
659
|
|
|
634
|
-
export { AdapterTag, Chain, evm_exports as EVM, solana_exports as Solana, ton_exports as TON, WalletType, allChains, allEvmChains, getTimestamp, isAddress, retry, sleep, stringify, toResult };
|
|
660
|
+
export { AdapterTag, Chain, evm_exports as EVM, solana_exports as Solana, ton_exports as TON, WalletType, allChains, allEvmChains, getTimestamp, isAddress, normalizeAddress, retry, sleep, stringify, toResult };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Chain } from '../blockchain';
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a blockchain address to its canonical form for a specific chain
|
|
4
|
+
*
|
|
5
|
+
* This function performs chain-specific address normalization:
|
|
6
|
+
* - Converts native token address (0xEee...eEe) to wrapped token address (WETH, WMATIC, etc.)
|
|
7
|
+
* - Converts TON addresses to raw string format
|
|
8
|
+
* - Validates address format before normalization
|
|
9
|
+
*
|
|
10
|
+
* @param chain - The blockchain network (Ethereum, Polygon, Solana, TON, etc.)
|
|
11
|
+
* @param address - The address to normalize
|
|
12
|
+
* @returns Normalized address in canonical format
|
|
13
|
+
* @throws Error if address is invalid or WETH9 is not found for the chain
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // EVM: Convert native address to WETH9
|
|
18
|
+
* const normalized = normalizeAddress(
|
|
19
|
+
* Chain.ETHEREUM,
|
|
20
|
+
* '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
|
|
21
|
+
* );
|
|
22
|
+
* // Returns: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' (WETH on Ethereum)
|
|
23
|
+
*
|
|
24
|
+
* // Polygon: Native to Wrapped
|
|
25
|
+
* const wmatic = normalizeAddress(
|
|
26
|
+
* Chain.POLYGON,
|
|
27
|
+
* '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
|
|
28
|
+
* );
|
|
29
|
+
* // Returns: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270' (WMATIC)
|
|
30
|
+
*
|
|
31
|
+
* // Solana: Native address to wrapped SOL
|
|
32
|
+
* const wsol = normalizeAddress(
|
|
33
|
+
* Chain.SOLANA,
|
|
34
|
+
* '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
|
|
35
|
+
* );
|
|
36
|
+
* // Returns: 'So11111111111111111111111111111111111111112' (Wrapped SOL)
|
|
37
|
+
*
|
|
38
|
+
* // TON: Convert to raw format
|
|
39
|
+
* const tonRaw = normalizeAddress(
|
|
40
|
+
* Chain.TON,
|
|
41
|
+
* 'EQD4FPq-PRDieyQKkizFTRtSDyucUIqrj0v_zXJmqaDp6_0t'
|
|
42
|
+
* );
|
|
43
|
+
* // Returns: '0:...' (raw format)
|
|
44
|
+
*
|
|
45
|
+
* // Regular EVM address (no change)
|
|
46
|
+
* const usdcAddress = normalizeAddress(
|
|
47
|
+
* Chain.ETHEREUM,
|
|
48
|
+
* '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
|
|
49
|
+
* );
|
|
50
|
+
* // Returns: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' (unchanged)
|
|
51
|
+
*
|
|
52
|
+
* // Token swap with normalization
|
|
53
|
+
* async function swapTokens(
|
|
54
|
+
* chain: Chain,
|
|
55
|
+
* tokenIn: string,
|
|
56
|
+
* tokenOut: string,
|
|
57
|
+
* amount: bigint
|
|
58
|
+
* ) {
|
|
59
|
+
* // Normalize addresses for consistent processing
|
|
60
|
+
* const normalizedTokenIn = normalizeAddress(chain, tokenIn);
|
|
61
|
+
* const normalizedTokenOut = normalizeAddress(chain, tokenOut);
|
|
62
|
+
*
|
|
63
|
+
* const swapData = await buildSwapTransaction(
|
|
64
|
+
* chain,
|
|
65
|
+
* normalizedTokenIn,
|
|
66
|
+
* normalizedTokenOut,
|
|
67
|
+
* amount
|
|
68
|
+
* );
|
|
69
|
+
*
|
|
70
|
+
* return swapData;
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* // Usage: Swap native ETH to USDC
|
|
74
|
+
* await swapTokens(
|
|
75
|
+
* Chain.ETHEREUM,
|
|
76
|
+
* '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', // Native ETH
|
|
77
|
+
* '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
|
|
78
|
+
* BigInt('1000000000000000000')
|
|
79
|
+
* );
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeAddress(chain: Chain, address: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|