@cranberry-money/shared-constants 8.15.441 → 8.15.443
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/business/index.d.ts +0 -2
- package/dist/business/index.d.ts.map +1 -1
- package/dist/business/index.js +0 -2
- package/dist/business/index.js.map +1 -1
- package/dist/business/wallets.d.ts +0 -119
- package/dist/business/wallets.d.ts.map +1 -1
- package/dist/business/wallets.js +21 -287
- package/dist/business/wallets.js.map +1 -1
- package/dist/config.d.ts +0 -60
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -59
- package/dist/config.js.map +1 -1
- package/dist/countries.d.ts +0 -12
- package/dist/countries.d.ts.map +1 -1
- package/dist/countries.js +11 -82
- package/dist/countries.js.map +1 -1
- package/dist/ui/chart-colors.d.ts +0 -4
- package/dist/ui/chart-colors.d.ts.map +1 -1
- package/dist/ui/chart-colors.js +2 -11
- package/dist/ui/chart-colors.js.map +1 -1
- package/dist/ui/design-tokens.d.ts +0 -64
- package/dist/ui/design-tokens.d.ts.map +1 -1
- package/dist/ui/design-tokens.js +32 -182
- package/dist/ui/design-tokens.js.map +1 -1
- package/dist/ui/index.d.ts +0 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +0 -2
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/sumsub-theme.d.ts +0 -25
- package/dist/ui/sumsub-theme.d.ts.map +1 -1
- package/dist/ui/sumsub-theme.js +19 -51
- package/dist/ui/sumsub-theme.js.map +1 -1
- package/dist/utilities.d.ts +0 -4
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +3 -8
- package/dist/utilities.js.map +1 -1
- package/package.json +1 -1
- package/dist/business/assets.d.ts +0 -49
- package/dist/business/assets.d.ts.map +0 -1
- package/dist/business/assets.js +0 -64
- package/dist/business/assets.js.map +0 -1
- package/dist/business/user-preferences.d.ts +0 -36
- package/dist/business/user-preferences.d.ts.map +0 -1
- package/dist/business/user-preferences.js +0 -35
- package/dist/business/user-preferences.js.map +0 -1
- package/dist/ui/chart-config.d.ts +0 -12
- package/dist/ui/chart-config.d.ts.map +0 -1
- package/dist/ui/chart-config.js +0 -11
- package/dist/ui/chart-config.js.map +0 -1
- package/dist/ui/navigation.d.ts +0 -23
- package/dist/ui/navigation.d.ts.map +0 -1
- package/dist/ui/navigation.js +0 -21
- package/dist/ui/navigation.js.map +0 -1
package/dist/business/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
package/dist/business/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet-related constants for blockchain wallet management
|
|
3
|
-
*/
|
|
4
1
|
export declare const WALLET_VERIFICATION_STATUS: {
|
|
5
2
|
readonly PENDING: "PENDING";
|
|
6
3
|
readonly VERIFIED: "VERIFIED";
|
|
7
4
|
};
|
|
8
5
|
export type WalletVerificationStatus = (typeof WALLET_VERIFICATION_STATUS)[keyof typeof WALLET_VERIFICATION_STATUS];
|
|
9
|
-
export declare const WALLET_VERIFICATION_STATUS_LABELS: Record<WalletVerificationStatus, string>;
|
|
10
6
|
export declare const BLOCKCHAIN: {
|
|
11
7
|
readonly ETHEREUM: "ethereum";
|
|
12
8
|
readonly BITCOIN: "bitcoin";
|
|
@@ -18,10 +14,6 @@ export declare const BLOCKCHAIN: {
|
|
|
18
14
|
readonly BASE: "base";
|
|
19
15
|
};
|
|
20
16
|
export type BlockchainType = (typeof BLOCKCHAIN)[keyof typeof BLOCKCHAIN];
|
|
21
|
-
/**
|
|
22
|
-
* Chain configuration - THE SINGLE SOURCE OF TRUTH for all chain data
|
|
23
|
-
* All other chain-related lookups should derive from this array
|
|
24
|
-
*/
|
|
25
17
|
export interface ChainConfig {
|
|
26
18
|
code: BlockchainType;
|
|
27
19
|
name: string;
|
|
@@ -31,136 +23,25 @@ export interface ChainConfig {
|
|
|
31
23
|
addressPlaceholder: string;
|
|
32
24
|
confirmationTime: string;
|
|
33
25
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Centralized chain configuration for the app
|
|
36
|
-
* - code: blockchain identifier used in API calls (e.g., 'ethereum')
|
|
37
|
-
* - name: human-readable name (e.g., 'Ethereum')
|
|
38
|
-
* - shortName: native token symbol (e.g., 'ETH')
|
|
39
|
-
* - isActive: whether the chain is currently supported in the app
|
|
40
|
-
* - explorerTxUrl: base URL for transaction explorer
|
|
41
|
-
* - addressPlaceholder: placeholder text for address inputs
|
|
42
|
-
* - confirmationTime: estimated confirmation time string
|
|
43
|
-
*/
|
|
44
26
|
export declare const SUPPORTED_CHAINS: ChainConfig[];
|
|
45
|
-
/**
|
|
46
|
-
* Maps blockchain chain codes to their native asset symbols
|
|
47
|
-
* @deprecated Use getChainShortCode() instead for consistent behavior
|
|
48
|
-
*/
|
|
49
|
-
export declare const CHAIN_TO_NATIVE_ASSET: Record<string, string>;
|
|
50
|
-
/**
|
|
51
|
-
* Maps native asset short codes to full blockchain names
|
|
52
|
-
* @deprecated Use getChainName() instead for consistent behavior
|
|
53
|
-
*/
|
|
54
|
-
export declare const NATIVE_ASSET_TO_CHAIN: Record<string, BlockchainType>;
|
|
55
|
-
/**
|
|
56
|
-
* Human-readable labels for blockchain names
|
|
57
|
-
* @deprecated Use getChainConfig(code)?.name instead
|
|
58
|
-
*/
|
|
59
|
-
export declare const BLOCKCHAIN_LABELS: Record<string, string>;
|
|
60
|
-
/**
|
|
61
|
-
* Get chain config by code
|
|
62
|
-
*/
|
|
63
27
|
export declare function getChainConfig(code: string): ChainConfig | undefined;
|
|
64
|
-
/**
|
|
65
|
-
* Get chain config by short name (native asset symbol)
|
|
66
|
-
* Note: Returns first match (e.g., 'ETH' returns Ethereum, not Arbitrum)
|
|
67
|
-
*/
|
|
68
28
|
export declare function getChainByShortName(shortName: string): ChainConfig | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* Get only active chains
|
|
71
|
-
*/
|
|
72
29
|
export declare function getActiveChains(): ChainConfig[];
|
|
73
|
-
/**
|
|
74
|
-
* Get full blockchain name from any chain identifier (short code or full name)
|
|
75
|
-
* @param chain - Chain identifier (e.g., 'ETH', 'ethereum', 'BTC', 'bitcoin')
|
|
76
|
-
* @returns Full blockchain name (e.g., 'ethereum', 'bitcoin') or original if not found
|
|
77
|
-
*/
|
|
78
30
|
export declare function getChainName(chain: string): string;
|
|
79
|
-
/**
|
|
80
|
-
* Get native asset short code from any chain identifier
|
|
81
|
-
* @param chain - Chain identifier (e.g., 'ETH', 'ethereum', 'BTC', 'bitcoin')
|
|
82
|
-
* @returns Native asset symbol (e.g., 'ETH', 'BTC') or uppercase input if not found
|
|
83
|
-
*/
|
|
84
31
|
export declare function getChainShortCode(chain: string): string;
|
|
85
|
-
/**
|
|
86
|
-
* Check if a chain short code represents Ethereum
|
|
87
|
-
*/
|
|
88
32
|
export declare function isEthereumChain(chainShortCode: string): boolean;
|
|
89
|
-
/**
|
|
90
|
-
* Check if a chain short code represents Bitcoin
|
|
91
|
-
*/
|
|
92
33
|
export declare function isBitcoinChain(chainShortCode: string): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* Get the full blockchain display name from a chain short code
|
|
95
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
96
|
-
* @returns Full blockchain name (e.g., 'Ethereum', 'Bitcoin')
|
|
97
|
-
*/
|
|
98
34
|
export declare function getBlockchainDisplayName(chainShortCode: string): string;
|
|
99
|
-
/**
|
|
100
|
-
* Get address placeholder for input fields based on chain
|
|
101
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
102
|
-
*/
|
|
103
35
|
export declare function getAddressPlaceholder(chainShortCode: string): string;
|
|
104
|
-
/**
|
|
105
|
-
* Get estimated confirmation time for a chain
|
|
106
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
107
|
-
*/
|
|
108
36
|
export declare function getEstimatedConfirmationTime(chainShortCode: string): string;
|
|
109
|
-
/**
|
|
110
|
-
* Get block explorer URL for a transaction
|
|
111
|
-
* @param chain - Chain identifier (e.g., 'ethereum', 'bitcoin', 'eth', 'btc')
|
|
112
|
-
* @param txHash - Transaction hash
|
|
113
|
-
* @returns Full URL to view the transaction on a block explorer
|
|
114
|
-
*/
|
|
115
37
|
export declare function getBlockExplorerTxUrl(chain: string, txHash: string): string;
|
|
116
|
-
/**
|
|
117
|
-
* Block explorer base URLs for transaction lookups
|
|
118
|
-
* @deprecated Use getBlockExplorerTxUrl() instead
|
|
119
|
-
*/
|
|
120
|
-
export declare const BLOCK_EXPLORER_TX_URLS: Record<string, string>;
|
|
121
|
-
/**
|
|
122
|
-
* Estimated transaction fees for "max amount" calculations
|
|
123
|
-
* These are conservative estimates to ensure transfers go through
|
|
124
|
-
*/
|
|
125
38
|
export declare const TRANSFER_FEE_ESTIMATES: {
|
|
126
39
|
readonly BTC: 0.0001;
|
|
127
40
|
readonly ETH: 0.005;
|
|
128
41
|
};
|
|
129
|
-
/**
|
|
130
|
-
* Get estimated fee for a chain
|
|
131
|
-
*/
|
|
132
42
|
export declare function getEstimatedFee(chainShortName: string): number;
|
|
133
43
|
export declare const WALLET_ADDRESS_PATTERNS: {
|
|
134
44
|
readonly ETHEREUM: RegExp;
|
|
135
45
|
readonly BITCOIN: RegExp;
|
|
136
46
|
};
|
|
137
|
-
export declare const QR_CODE_CONFIG: {
|
|
138
|
-
readonly MAX_SIZE: 400;
|
|
139
|
-
readonly MIN_SIZE: 200;
|
|
140
|
-
readonly ERROR_CORRECTION_LEVEL: "M";
|
|
141
|
-
readonly ANIMATION_FPS: 5;
|
|
142
|
-
};
|
|
143
|
-
export declare const FIAT_TRANSACTION_STATUS: {
|
|
144
|
-
readonly PENDING: "PENDING";
|
|
145
|
-
readonly PROCESSING: "PROCESSING";
|
|
146
|
-
readonly COMPLETED: "COMPLETED";
|
|
147
|
-
readonly FAILED: "FAILED";
|
|
148
|
-
readonly CANCELLED: "CANCELLED";
|
|
149
|
-
};
|
|
150
|
-
export type FiatTransactionStatus = (typeof FIAT_TRANSACTION_STATUS)[keyof typeof FIAT_TRANSACTION_STATUS];
|
|
151
|
-
export declare const FIAT_TRANSACTION_STATUS_LABELS: Record<FiatTransactionStatus, string>;
|
|
152
|
-
export declare const FIAT_TRANSACTION_PROVIDER: {
|
|
153
|
-
readonly MOONPAY: "MOONPAY";
|
|
154
|
-
readonly RAMP: "RAMP";
|
|
155
|
-
};
|
|
156
|
-
export type FiatTransactionProvider = (typeof FIAT_TRANSACTION_PROVIDER)[keyof typeof FIAT_TRANSACTION_PROVIDER];
|
|
157
|
-
export declare const FIAT_TRANSACTION_PROVIDER_LABELS: Record<FiatTransactionProvider, string>;
|
|
158
|
-
export declare const PAYMENT_METHOD: {
|
|
159
|
-
readonly CARD: "CARD";
|
|
160
|
-
readonly BANK_TRANSFER: "BANK_TRANSFER";
|
|
161
|
-
readonly APPLE_PAY: "APPLE_PAY";
|
|
162
|
-
readonly GOOGLE_PAY: "GOOGLE_PAY";
|
|
163
|
-
};
|
|
164
|
-
export type PaymentMethod = (typeof PAYMENT_METHOD)[keyof typeof PAYMENT_METHOD];
|
|
165
|
-
export declare const PAYMENT_METHOD_LABELS: Record<PaymentMethod, string>;
|
|
166
47
|
//# sourceMappingURL=wallets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/business/wallets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/business/wallets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEpH,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAE1E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,EASzC,CAAC;AAKF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE9E;AAED,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAE/C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED,eAAO,MAAM,sBAAsB;;;CAAuC,CAAC;AAE3E,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC"}
|
package/dist/business/wallets.js
CHANGED
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet-related constants for blockchain wallet management
|
|
3
|
-
*/
|
|
4
|
-
// ============================================
|
|
5
|
-
// Wallet Verification Statuses
|
|
6
|
-
// ============================================
|
|
7
1
|
export const WALLET_VERIFICATION_STATUS = {
|
|
8
2
|
PENDING: 'PENDING',
|
|
9
3
|
VERIFIED: 'VERIFIED',
|
|
10
4
|
};
|
|
11
|
-
export const WALLET_VERIFICATION_STATUS_LABELS = {
|
|
12
|
-
[WALLET_VERIFICATION_STATUS.PENDING]: 'Pending Verification',
|
|
13
|
-
[WALLET_VERIFICATION_STATUS.VERIFIED]: 'Verified',
|
|
14
|
-
};
|
|
15
|
-
// ============================================
|
|
16
|
-
// Blockchain Chains - Single Source of Truth
|
|
17
|
-
// ============================================
|
|
18
5
|
export const BLOCKCHAIN = {
|
|
19
6
|
ETHEREUM: 'ethereum',
|
|
20
7
|
BITCOIN: 'bitcoin',
|
|
@@ -25,329 +12,76 @@ export const BLOCKCHAIN = {
|
|
|
25
12
|
OPTIMISM: 'optimism',
|
|
26
13
|
BASE: 'base',
|
|
27
14
|
};
|
|
28
|
-
/**
|
|
29
|
-
* Centralized chain configuration for the app
|
|
30
|
-
* - code: blockchain identifier used in API calls (e.g., 'ethereum')
|
|
31
|
-
* - name: human-readable name (e.g., 'Ethereum')
|
|
32
|
-
* - shortName: native token symbol (e.g., 'ETH')
|
|
33
|
-
* - isActive: whether the chain is currently supported in the app
|
|
34
|
-
* - explorerTxUrl: base URL for transaction explorer
|
|
35
|
-
* - addressPlaceholder: placeholder text for address inputs
|
|
36
|
-
* - confirmationTime: estimated confirmation time string
|
|
37
|
-
*/
|
|
38
15
|
export const SUPPORTED_CHAINS = [
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
code: BLOCKCHAIN.BITCOIN,
|
|
50
|
-
name: 'Bitcoin',
|
|
51
|
-
shortName: 'BTC',
|
|
52
|
-
isActive: true,
|
|
53
|
-
explorerTxUrl: 'https://blockchain.com/btc/tx/',
|
|
54
|
-
addressPlaceholder: '1... or 3... or bc1...',
|
|
55
|
-
confirmationTime: '~10 minutes',
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
code: BLOCKCHAIN.POLYGON,
|
|
59
|
-
name: 'Polygon',
|
|
60
|
-
shortName: 'MATIC',
|
|
61
|
-
isActive: false,
|
|
62
|
-
explorerTxUrl: 'https://polygonscan.com/tx/',
|
|
63
|
-
addressPlaceholder: '0x...',
|
|
64
|
-
confirmationTime: '~2 minutes',
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
code: BLOCKCHAIN.SOLANA,
|
|
68
|
-
name: 'Solana',
|
|
69
|
-
shortName: 'SOL',
|
|
70
|
-
isActive: false,
|
|
71
|
-
explorerTxUrl: 'https://solscan.io/tx/',
|
|
72
|
-
addressPlaceholder: 'Enter address',
|
|
73
|
-
confirmationTime: '~1 minute',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
code: BLOCKCHAIN.AVALANCHE,
|
|
77
|
-
name: 'Avalanche',
|
|
78
|
-
shortName: 'AVAX',
|
|
79
|
-
isActive: false,
|
|
80
|
-
explorerTxUrl: 'https://snowtrace.io/tx/',
|
|
81
|
-
addressPlaceholder: '0x...',
|
|
82
|
-
confirmationTime: '~2 minutes',
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
code: BLOCKCHAIN.ARBITRUM,
|
|
86
|
-
name: 'Arbitrum',
|
|
87
|
-
shortName: 'ETH',
|
|
88
|
-
isActive: false,
|
|
89
|
-
explorerTxUrl: 'https://arbiscan.io/tx/',
|
|
90
|
-
addressPlaceholder: '0x...',
|
|
91
|
-
confirmationTime: '~2 minutes',
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
code: BLOCKCHAIN.OPTIMISM,
|
|
95
|
-
name: 'Optimism',
|
|
96
|
-
shortName: 'ETH',
|
|
97
|
-
isActive: false,
|
|
98
|
-
explorerTxUrl: 'https://optimistic.etherscan.io/tx/',
|
|
99
|
-
addressPlaceholder: '0x...',
|
|
100
|
-
confirmationTime: '~2 minutes',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
code: BLOCKCHAIN.BASE,
|
|
104
|
-
name: 'Base',
|
|
105
|
-
shortName: 'ETH',
|
|
106
|
-
isActive: false,
|
|
107
|
-
explorerTxUrl: 'https://basescan.org/tx/',
|
|
108
|
-
addressPlaceholder: '0x...',
|
|
109
|
-
confirmationTime: '~2 minutes',
|
|
110
|
-
},
|
|
16
|
+
{ code: BLOCKCHAIN.ETHEREUM, name: 'Ethereum', shortName: 'ETH', isActive: true, explorerTxUrl: 'https://etherscan.io/tx/', addressPlaceholder: '0x...', confirmationTime: '~2-3 minutes' },
|
|
17
|
+
{ code: BLOCKCHAIN.BITCOIN, name: 'Bitcoin', shortName: 'BTC', isActive: true, explorerTxUrl: 'https://blockchain.com/btc/tx/', addressPlaceholder: '1... or 3... or bc1...', confirmationTime: '~10 minutes' },
|
|
18
|
+
{ code: BLOCKCHAIN.POLYGON, name: 'Polygon', shortName: 'MATIC', isActive: false, explorerTxUrl: 'https://polygonscan.com/tx/', addressPlaceholder: '0x...', confirmationTime: '~2 minutes' },
|
|
19
|
+
{ code: BLOCKCHAIN.SOLANA, name: 'Solana', shortName: 'SOL', isActive: false, explorerTxUrl: 'https://solscan.io/tx/', addressPlaceholder: 'Enter address', confirmationTime: '~1 minute' },
|
|
20
|
+
{ code: BLOCKCHAIN.AVALANCHE, name: 'Avalanche', shortName: 'AVAX', isActive: false, explorerTxUrl: 'https://snowtrace.io/tx/', addressPlaceholder: '0x...', confirmationTime: '~2 minutes' },
|
|
21
|
+
{ code: BLOCKCHAIN.ARBITRUM, name: 'Arbitrum', shortName: 'ETH', isActive: false, explorerTxUrl: 'https://arbiscan.io/tx/', addressPlaceholder: '0x...', confirmationTime: '~2 minutes' },
|
|
22
|
+
{ code: BLOCKCHAIN.OPTIMISM, name: 'Optimism', shortName: 'ETH', isActive: false, explorerTxUrl: 'https://optimistic.etherscan.io/tx/', addressPlaceholder: '0x...', confirmationTime: '~2 minutes' },
|
|
23
|
+
{ code: BLOCKCHAIN.BASE, name: 'Base', shortName: 'ETH', isActive: false, explorerTxUrl: 'https://basescan.org/tx/', addressPlaceholder: '0x...', confirmationTime: '~2 minutes' },
|
|
111
24
|
];
|
|
112
|
-
// ============================================
|
|
113
|
-
// Derived Lookups (built from SUPPORTED_CHAINS)
|
|
114
|
-
// ============================================
|
|
115
|
-
// Build lookup maps once for O(1) access
|
|
116
25
|
const chainByCode = new Map(SUPPORTED_CHAINS.map((c) => [c.code, c]));
|
|
117
26
|
const chainByShortName = new Map(SUPPORTED_CHAINS.map((c) => [c.shortName, c]));
|
|
118
|
-
/**
|
|
119
|
-
* Maps blockchain chain codes to their native asset symbols
|
|
120
|
-
* @deprecated Use getChainShortCode() instead for consistent behavior
|
|
121
|
-
*/
|
|
122
|
-
export const CHAIN_TO_NATIVE_ASSET = Object.fromEntries([
|
|
123
|
-
...SUPPORTED_CHAINS.map((c) => [c.code, c.shortName]),
|
|
124
|
-
// Aliases for common short codes used as input
|
|
125
|
-
['btc', 'BTC'],
|
|
126
|
-
['eth', 'ETH'],
|
|
127
|
-
['sol', 'SOL'],
|
|
128
|
-
['avax', 'AVAX'],
|
|
129
|
-
]);
|
|
130
|
-
/**
|
|
131
|
-
* Maps native asset short codes to full blockchain names
|
|
132
|
-
* @deprecated Use getChainName() instead for consistent behavior
|
|
133
|
-
*/
|
|
134
|
-
export const NATIVE_ASSET_TO_CHAIN = Object.fromEntries(SUPPORTED_CHAINS.filter((c) => c.shortName !== 'ETH' || c.code === BLOCKCHAIN.ETHEREUM).map((c) => [
|
|
135
|
-
c.shortName,
|
|
136
|
-
c.code,
|
|
137
|
-
]));
|
|
138
|
-
/**
|
|
139
|
-
* Human-readable labels for blockchain names
|
|
140
|
-
* @deprecated Use getChainConfig(code)?.name instead
|
|
141
|
-
*/
|
|
142
|
-
export const BLOCKCHAIN_LABELS = Object.fromEntries(SUPPORTED_CHAINS.map((c) => [c.code, c.name]));
|
|
143
|
-
// ============================================
|
|
144
|
-
// Chain Lookup Functions
|
|
145
|
-
// ============================================
|
|
146
|
-
/**
|
|
147
|
-
* Get chain config by code
|
|
148
|
-
*/
|
|
149
27
|
export function getChainConfig(code) {
|
|
150
28
|
return chainByCode.get(code);
|
|
151
29
|
}
|
|
152
|
-
/**
|
|
153
|
-
* Get chain config by short name (native asset symbol)
|
|
154
|
-
* Note: Returns first match (e.g., 'ETH' returns Ethereum, not Arbitrum)
|
|
155
|
-
*/
|
|
156
30
|
export function getChainByShortName(shortName) {
|
|
157
31
|
return chainByShortName.get(shortName);
|
|
158
32
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Get only active chains
|
|
161
|
-
*/
|
|
162
33
|
export function getActiveChains() {
|
|
163
34
|
return SUPPORTED_CHAINS.filter((c) => c.isActive);
|
|
164
35
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Get full blockchain name from any chain identifier (short code or full name)
|
|
167
|
-
* @param chain - Chain identifier (e.g., 'ETH', 'ethereum', 'BTC', 'bitcoin')
|
|
168
|
-
* @returns Full blockchain name (e.g., 'ethereum', 'bitcoin') or original if not found
|
|
169
|
-
*/
|
|
170
36
|
export function getChainName(chain) {
|
|
171
37
|
const normalized = chain?.toLowerCase() || '';
|
|
172
|
-
|
|
173
|
-
if (chainByCode.has(normalized)) {
|
|
38
|
+
if (chainByCode.has(normalized))
|
|
174
39
|
return normalized;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const upper = chain?.toUpperCase() || '';
|
|
178
|
-
const config = chainByShortName.get(upper);
|
|
179
|
-
if (config) {
|
|
180
|
-
return config.code;
|
|
181
|
-
}
|
|
182
|
-
return normalized;
|
|
40
|
+
const config = chainByShortName.get(chain?.toUpperCase() || '');
|
|
41
|
+
return config?.code || normalized;
|
|
183
42
|
}
|
|
184
|
-
/**
|
|
185
|
-
* Get native asset short code from any chain identifier
|
|
186
|
-
* @param chain - Chain identifier (e.g., 'ETH', 'ethereum', 'BTC', 'bitcoin')
|
|
187
|
-
* @returns Native asset symbol (e.g., 'ETH', 'BTC') or uppercase input if not found
|
|
188
|
-
*/
|
|
189
43
|
export function getChainShortCode(chain) {
|
|
190
44
|
const normalized = chain?.toLowerCase() || '';
|
|
191
|
-
// Check if it's a chain code
|
|
192
45
|
const config = chainByCode.get(normalized);
|
|
193
|
-
if (config)
|
|
46
|
+
if (config)
|
|
194
47
|
return config.shortName;
|
|
195
|
-
}
|
|
196
|
-
// Check common aliases
|
|
197
48
|
const aliases = { btc: 'BTC', eth: 'ETH', sol: 'SOL', avax: 'AVAX' };
|
|
198
|
-
if (aliases[normalized])
|
|
49
|
+
if (aliases[normalized])
|
|
199
50
|
return aliases[normalized];
|
|
200
|
-
}
|
|
201
|
-
// Check if it's already a valid short name
|
|
202
51
|
const upper = chain?.toUpperCase() || '';
|
|
203
|
-
|
|
204
|
-
return upper;
|
|
205
|
-
}
|
|
206
|
-
return upper;
|
|
52
|
+
return chainByShortName.has(upper) ? upper : upper;
|
|
207
53
|
}
|
|
208
|
-
// ============================================
|
|
209
|
-
// Chain Type Helpers
|
|
210
|
-
// ============================================
|
|
211
|
-
/**
|
|
212
|
-
* Check if a chain short code represents Ethereum
|
|
213
|
-
*/
|
|
214
54
|
export function isEthereumChain(chainShortCode) {
|
|
215
55
|
return chainShortCode === 'ETH';
|
|
216
56
|
}
|
|
217
|
-
/**
|
|
218
|
-
* Check if a chain short code represents Bitcoin
|
|
219
|
-
*/
|
|
220
57
|
export function isBitcoinChain(chainShortCode) {
|
|
221
58
|
return chainShortCode === 'BTC';
|
|
222
59
|
}
|
|
223
|
-
/**
|
|
224
|
-
* Get the full blockchain display name from a chain short code
|
|
225
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
226
|
-
* @returns Full blockchain name (e.g., 'Ethereum', 'Bitcoin')
|
|
227
|
-
*/
|
|
228
60
|
export function getBlockchainDisplayName(chainShortCode) {
|
|
229
|
-
|
|
230
|
-
return config?.name || chainShortCode;
|
|
61
|
+
return chainByShortName.get(chainShortCode)?.name || chainShortCode;
|
|
231
62
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Get address placeholder for input fields based on chain
|
|
234
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
235
|
-
*/
|
|
236
63
|
export function getAddressPlaceholder(chainShortCode) {
|
|
237
|
-
|
|
238
|
-
return config?.addressPlaceholder || 'Enter address';
|
|
64
|
+
return chainByShortName.get(chainShortCode)?.addressPlaceholder || 'Enter address';
|
|
239
65
|
}
|
|
240
|
-
/**
|
|
241
|
-
* Get estimated confirmation time for a chain
|
|
242
|
-
* @param chainShortCode - Chain short code (e.g., 'ETH', 'BTC')
|
|
243
|
-
*/
|
|
244
66
|
export function getEstimatedConfirmationTime(chainShortCode) {
|
|
245
|
-
|
|
246
|
-
return config?.confirmationTime || '~5 minutes';
|
|
67
|
+
return chainByShortName.get(chainShortCode)?.confirmationTime || '~5 minutes';
|
|
247
68
|
}
|
|
248
|
-
// ============================================
|
|
249
|
-
// Block Explorer URLs
|
|
250
|
-
// ============================================
|
|
251
|
-
/**
|
|
252
|
-
* Get block explorer URL for a transaction
|
|
253
|
-
* @param chain - Chain identifier (e.g., 'ethereum', 'bitcoin', 'eth', 'btc')
|
|
254
|
-
* @param txHash - Transaction hash
|
|
255
|
-
* @returns Full URL to view the transaction on a block explorer
|
|
256
|
-
*/
|
|
257
69
|
export function getBlockExplorerTxUrl(chain, txHash) {
|
|
258
70
|
const normalized = chain?.toLowerCase() || '';
|
|
259
|
-
// Try to find by chain code
|
|
260
71
|
let config = chainByCode.get(normalized);
|
|
261
|
-
// Try common aliases
|
|
262
72
|
if (!config) {
|
|
263
|
-
const aliases = {
|
|
264
|
-
|
|
265
|
-
eth: BLOCKCHAIN.ETHEREUM,
|
|
266
|
-
};
|
|
267
|
-
if (aliases[normalized]) {
|
|
73
|
+
const aliases = { btc: BLOCKCHAIN.BITCOIN, eth: BLOCKCHAIN.ETHEREUM };
|
|
74
|
+
if (aliases[normalized])
|
|
268
75
|
config = chainByCode.get(aliases[normalized]);
|
|
269
|
-
}
|
|
270
76
|
}
|
|
271
|
-
|
|
272
|
-
return `${baseUrl}${txHash}`;
|
|
77
|
+
return `${config?.explorerTxUrl || 'https://etherscan.io/tx/'}${txHash}`;
|
|
273
78
|
}
|
|
274
|
-
|
|
275
|
-
* Block explorer base URLs for transaction lookups
|
|
276
|
-
* @deprecated Use getBlockExplorerTxUrl() instead
|
|
277
|
-
*/
|
|
278
|
-
export const BLOCK_EXPLORER_TX_URLS = Object.fromEntries([
|
|
279
|
-
...SUPPORTED_CHAINS.map((c) => [c.code, c.explorerTxUrl]),
|
|
280
|
-
['eth', 'https://etherscan.io/tx/'],
|
|
281
|
-
['btc', 'https://blockchain.com/btc/tx/'],
|
|
282
|
-
]);
|
|
283
|
-
// ============================================
|
|
284
|
-
// Transfer Fee Estimates
|
|
285
|
-
// ============================================
|
|
286
|
-
/**
|
|
287
|
-
* Estimated transaction fees for "max amount" calculations
|
|
288
|
-
* These are conservative estimates to ensure transfers go through
|
|
289
|
-
*/
|
|
290
|
-
export const TRANSFER_FEE_ESTIMATES = {
|
|
291
|
-
BTC: 0.0001, // ~$10 at $100k BTC - conservative for standard tx
|
|
292
|
-
ETH: 0.005, // ~$20 at $4k ETH - conservative for ERC-20 transfers
|
|
293
|
-
};
|
|
294
|
-
/**
|
|
295
|
-
* Get estimated fee for a chain
|
|
296
|
-
*/
|
|
79
|
+
export const TRANSFER_FEE_ESTIMATES = { BTC: 0.0001, ETH: 0.005 };
|
|
297
80
|
export function getEstimatedFee(chainShortName) {
|
|
298
81
|
return TRANSFER_FEE_ESTIMATES[chainShortName] || TRANSFER_FEE_ESTIMATES.ETH;
|
|
299
82
|
}
|
|
300
|
-
// ============================================
|
|
301
|
-
// Wallet Address Validation Patterns
|
|
302
|
-
// ============================================
|
|
303
83
|
export const WALLET_ADDRESS_PATTERNS = {
|
|
304
84
|
ETHEREUM: /^0x[a-fA-F0-9]{40}$/,
|
|
305
85
|
BITCOIN: /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-z0-9]{39,59}$/,
|
|
306
86
|
};
|
|
307
|
-
// ============================================
|
|
308
|
-
// QR Code Configuration
|
|
309
|
-
// ============================================
|
|
310
|
-
export const QR_CODE_CONFIG = {
|
|
311
|
-
MAX_SIZE: 400,
|
|
312
|
-
MIN_SIZE: 200,
|
|
313
|
-
ERROR_CORRECTION_LEVEL: 'M',
|
|
314
|
-
ANIMATION_FPS: 5,
|
|
315
|
-
};
|
|
316
|
-
// ============================================
|
|
317
|
-
// Fiat Purchase (On-Ramp)
|
|
318
|
-
// ============================================
|
|
319
|
-
export const FIAT_TRANSACTION_STATUS = {
|
|
320
|
-
PENDING: 'PENDING',
|
|
321
|
-
PROCESSING: 'PROCESSING',
|
|
322
|
-
COMPLETED: 'COMPLETED',
|
|
323
|
-
FAILED: 'FAILED',
|
|
324
|
-
CANCELLED: 'CANCELLED',
|
|
325
|
-
};
|
|
326
|
-
export const FIAT_TRANSACTION_STATUS_LABELS = {
|
|
327
|
-
[FIAT_TRANSACTION_STATUS.PENDING]: 'Pending',
|
|
328
|
-
[FIAT_TRANSACTION_STATUS.PROCESSING]: 'Processing',
|
|
329
|
-
[FIAT_TRANSACTION_STATUS.COMPLETED]: 'Completed',
|
|
330
|
-
[FIAT_TRANSACTION_STATUS.FAILED]: 'Failed',
|
|
331
|
-
[FIAT_TRANSACTION_STATUS.CANCELLED]: 'Cancelled',
|
|
332
|
-
};
|
|
333
|
-
export const FIAT_TRANSACTION_PROVIDER = {
|
|
334
|
-
MOONPAY: 'MOONPAY',
|
|
335
|
-
RAMP: 'RAMP',
|
|
336
|
-
};
|
|
337
|
-
export const FIAT_TRANSACTION_PROVIDER_LABELS = {
|
|
338
|
-
[FIAT_TRANSACTION_PROVIDER.MOONPAY]: 'Moonpay',
|
|
339
|
-
[FIAT_TRANSACTION_PROVIDER.RAMP]: 'Ramp Network',
|
|
340
|
-
};
|
|
341
|
-
export const PAYMENT_METHOD = {
|
|
342
|
-
CARD: 'CARD',
|
|
343
|
-
BANK_TRANSFER: 'BANK_TRANSFER',
|
|
344
|
-
APPLE_PAY: 'APPLE_PAY',
|
|
345
|
-
GOOGLE_PAY: 'GOOGLE_PAY',
|
|
346
|
-
};
|
|
347
|
-
export const PAYMENT_METHOD_LABELS = {
|
|
348
|
-
[PAYMENT_METHOD.CARD]: 'Credit/Debit Card',
|
|
349
|
-
[PAYMENT_METHOD.BANK_TRANSFER]: 'Bank Transfer',
|
|
350
|
-
[PAYMENT_METHOD.APPLE_PAY]: 'Apple Pay',
|
|
351
|
-
[PAYMENT_METHOD.GOOGLE_PAY]: 'Google Pay',
|
|
352
|
-
};
|
|
353
87
|
//# sourceMappingURL=wallets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/business/wallets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/business/wallets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAIX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;CACJ,CAAC;AAcX,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE;IAC3L,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,gCAAgC,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,aAAa,EAAE;IAC/M,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;IAC7L,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE;IAC3L,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;IAC7L,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;IACzL,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;IACrM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;CACnL,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAsB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,UAA4B,CAAC;QAAE,OAAO,UAAU,CAAC;IACrE,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,EAAE,IAAI,IAAI,UAAU,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,UAA4B,CAAC,CAAC;IAC7D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IACpC,MAAM,OAAO,GAA2B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7F,IAAI,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACzC,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,cAAsB;IACpD,OAAO,cAAc,KAAK,KAAK,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,OAAO,cAAc,KAAK,KAAK,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,cAAsB;IAC7D,OAAO,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,IAAI,cAAc,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,kBAAkB,IAAI,eAAe,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,OAAO,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,gBAAgB,IAAI,YAAY,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAc;IACjE,MAAM,UAAU,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,UAA4B,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAmC,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtG,IAAI,OAAO,CAAC,UAAU,CAAC;YAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,MAAM,EAAE,aAAa,IAAI,0BAA0B,GAAG,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAW,CAAC;AAE3E,MAAM,UAAU,eAAe,CAAC,cAAsB;IACpD,OAAO,sBAAsB,CAAC,cAAqD,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC;AACrH,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,QAAQ,EAAE,qBAAqB;IAC/B,OAAO,EAAE,wDAAwD;CACzD,CAAC"}
|