@dynamic-labs/aleo 4.79.1 → 4.80.0

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 (29) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -6
  5. package/src/connectors/DynamicWaasAleoConnector/DynamicWaasAleoConnector.cjs +798 -0
  6. package/src/connectors/DynamicWaasAleoConnector/DynamicWaasAleoConnector.d.ts +409 -0
  7. package/src/connectors/DynamicWaasAleoConnector/DynamicWaasAleoConnector.js +794 -0
  8. package/src/connectors/DynamicWaasAleoConnector/index.cjs +13 -0
  9. package/src/connectors/DynamicWaasAleoConnector/index.d.ts +3 -0
  10. package/src/connectors/DynamicWaasAleoConnector/index.js +9 -0
  11. package/src/connectors/WaasAleoWalletConnector/WaasAleoWalletConnector.cjs +216 -0
  12. package/src/connectors/WaasAleoWalletConnector/WaasAleoWalletConnector.d.ts +116 -0
  13. package/src/connectors/WaasAleoWalletConnector/WaasAleoWalletConnector.js +211 -0
  14. package/src/connectors/WaasAleoWalletConnector/index.d.ts +1 -0
  15. package/src/index.cjs +15 -0
  16. package/src/index.d.ts +5 -0
  17. package/src/index.js +7 -0
  18. package/src/utils/AleoUiTransaction/AleoUiTransaction.cjs +354 -0
  19. package/src/utils/AleoUiTransaction/AleoUiTransaction.d.ts +130 -0
  20. package/src/utils/AleoUiTransaction/AleoUiTransaction.js +350 -0
  21. package/src/utils/AleoUiTransaction/index.d.ts +2 -0
  22. package/src/utils/aleoSendableTokens/aleoSendableTokens.cjs +185 -0
  23. package/src/utils/aleoSendableTokens/aleoSendableTokens.d.ts +78 -0
  24. package/src/utils/aleoSendableTokens/aleoSendableTokens.js +175 -0
  25. package/src/utils/aleoSendableTokens/index.d.ts +2 -0
  26. package/src/utils/aleoShieldableTokens/aleoShieldableTokens.cjs +119 -0
  27. package/src/utils/aleoShieldableTokens/aleoShieldableTokens.d.ts +45 -0
  28. package/src/utils/aleoShieldableTokens/aleoShieldableTokens.js +114 -0
  29. package/src/utils/aleoShieldableTokens/index.d.ts +2 -0
@@ -0,0 +1,175 @@
1
+ 'use client'
2
+ /**
3
+ * Per-network registry of tokens spendable from the wallet's *shielded*
4
+ * (private record) state via the widget Send view.
5
+ *
6
+ * Three program kinds, three submit paths:
7
+ *
8
+ * - `credits` `credits.aleo/transfer_private`
9
+ * inputs: [record, recipient, amount]
10
+ * inputTypes: ['credits.record','address.private','u64.private']
11
+ *
12
+ * `credits.aleo/transfer_private_to_public`
13
+ * inputs: [record, recipient, amount]
14
+ * inputTypes: ['credits.record','address.public','u64.public']
15
+ *
16
+ * - `stablecoin` `<stablecoin>/transfer_private`
17
+ * inputs: [recipient, amount, record]
18
+ * inputTypes: ['address.private','u128.private','Token.record']
19
+ * (Sealance proof + its `[MerkleProof; 2u32].private` type
20
+ * are appended by the iframe — see
21
+ * `dynamic-waas-sdk/packages/aleo/src/client/client.ts`.)
22
+ *
23
+ * - `arc21` `token_registry.aleo/transfer_private`
24
+ * inputs: [recipient, amount, record]
25
+ * inputTypes: ['address.private','u128.private','Token.record']
26
+ * (token_id is encoded inside the record's plaintext, not
27
+ * passed as an explicit input.)
28
+ *
29
+ * The 5 ARC-21 entries are mainnet-only (Hyperlane warp routes are not
30
+ * deployed on testnet). Stablecoins and credits exist on both networks.
31
+ */
32
+ const ALEO_MAINNET_NETWORK_ID = 0;
33
+ const ALEO_TESTNET_NETWORK_ID = 1;
34
+ const ALEO_CREDITS_DECIMALS = 6;
35
+ const ALEO_CREDITS_PROGRAM = 'credits.aleo';
36
+ const ALEO_TOKEN_REGISTRY_PROGRAM = 'token_registry.aleo';
37
+ const ALEO_CREDITS_TOKEN = {
38
+ contractAddress: ALEO_CREDITS_PROGRAM,
39
+ decimals: ALEO_CREDITS_DECIMALS,
40
+ logoURI: '',
41
+ name: 'Aleo Credits',
42
+ programId: ALEO_CREDITS_PROGRAM,
43
+ programKind: 'credits',
44
+ recordName: 'credits',
45
+ recordTypeLiteral: 'credits.record',
46
+ symbol: 'ALEO',
47
+ };
48
+ const ALEO_STABLECOIN_DECIMALS = 6;
49
+ const buildStablecoin = (programId, symbol, name) => ({
50
+ contractAddress: programId,
51
+ decimals: ALEO_STABLECOIN_DECIMALS,
52
+ name,
53
+ programId,
54
+ programKind: 'stablecoin',
55
+ recordName: 'Token',
56
+ recordTypeLiteral: 'Token.record',
57
+ symbol,
58
+ });
59
+ const buildArc21 = (args) => ({
60
+ contractAddress: args.warpProgram,
61
+ decimals: args.decimals,
62
+ externalAuthRequired: false,
63
+ name: args.name,
64
+ programId: ALEO_TOKEN_REGISTRY_PROGRAM,
65
+ programKind: 'arc21',
66
+ recordName: 'Token',
67
+ recordTypeLiteral: 'Token.record',
68
+ symbol: args.symbol,
69
+ tokenId: args.tokenId,
70
+ });
71
+ const ALEO_SENDABLE_TOKENS_BY_NETWORK = {
72
+ [ALEO_MAINNET_NETWORK_ID]: [
73
+ ALEO_CREDITS_TOKEN,
74
+ buildStablecoin('usad_stablecoin.aleo', 'USAD', 'USAD'),
75
+ buildStablecoin('usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
76
+ buildArc21({
77
+ decimals: 9,
78
+ name: 'Wrapped SOL',
79
+ symbol: 'wSOL',
80
+ tokenId: '2045969100091121326225168054634646230244820821909676777152465722877810201564field',
81
+ warpProgram: 'hyp_warp_token_sol.aleo',
82
+ }),
83
+ buildArc21({
84
+ decimals: 18,
85
+ name: 'Wrapped ETH',
86
+ symbol: 'wETH',
87
+ tokenId: '8189585964265444162798552221009403350643900573290534096996249214099143169251field',
88
+ warpProgram: 'hyp_warp_token_eth.aleo',
89
+ }),
90
+ buildArc21({
91
+ decimals: 8,
92
+ name: 'Wrapped BTC',
93
+ symbol: 'wBTC',
94
+ tokenId: '3491859903473482085250871387962132231204352466326026409883548131580582527809field',
95
+ warpProgram: 'hyp_warp_token_wbtc.aleo',
96
+ }),
97
+ buildArc21({
98
+ decimals: 6,
99
+ name: 'Tether USD',
100
+ symbol: 'USDT',
101
+ tokenId: '7881654794448182580124231856035865816599796419758925654292946277940935117913field',
102
+ warpProgram: 'hyp_warp_token_usdt.aleo',
103
+ }),
104
+ buildArc21({
105
+ decimals: 6,
106
+ name: 'USD Coin',
107
+ symbol: 'USDC',
108
+ tokenId: '4697275201844475848710842677807162058146139844643350200269139278887318953049field',
109
+ warpProgram: 'hyp_warp_token_usdc.aleo',
110
+ }),
111
+ ],
112
+ [ALEO_TESTNET_NETWORK_ID]: [
113
+ ALEO_CREDITS_TOKEN,
114
+ buildStablecoin('test_usad_stablecoin.aleo', 'USAD', 'USAD'),
115
+ buildStablecoin('test_usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
116
+ ],
117
+ };
118
+ const getAleoSendableTokensForNetwork = (networkId) => { var _a; return (_a = ALEO_SENDABLE_TOKENS_BY_NETWORK[networkId]) !== null && _a !== void 0 ? _a : []; };
119
+ /**
120
+ * True when the owned record matches the given sendable token: same program
121
+ * + record name, and (for ARC-21) same token_id encoded in the plaintext.
122
+ *
123
+ * For ARC-21, multiple tokens share `token_registry.aleo/Token`, so the
124
+ * plaintext-level token_id check is what disambiguates wSOL records from
125
+ * USDT records, etc. We match by substring rather than parsing the full
126
+ * record DSL — the field literal `<digits>field` is unambiguous and the
127
+ * record DSL is stable across snarkVM versions.
128
+ */
129
+ const recordMatchesSendableToken = (record, token) => {
130
+ if (record.program_name !== token.programId)
131
+ return false;
132
+ if (record.record_name !== token.recordName)
133
+ return false;
134
+ if (typeof record.record_plaintext !== 'string')
135
+ return false;
136
+ if (token.programKind !== 'arc21')
137
+ return true;
138
+ if (!token.tokenId)
139
+ return false;
140
+ return record.record_plaintext.includes(`token_id: ${token.tokenId}`);
141
+ };
142
+ /**
143
+ * Atomic-units amount from the record plaintext.
144
+ *
145
+ * - credits → pre-parsed `microcredits` (decimal string).
146
+ * - stablecoin / arc21 → parsed from `amount: <digits>u128` in plaintext.
147
+ *
148
+ * Returns `0n` when nothing parses — the caller's UI rules
149
+ * (sum / merge CTA / picker entry) all degrade gracefully on a zero amount.
150
+ */
151
+ const extractRecordAtomicAmount = (record, token) => {
152
+ if (token.programKind === 'credits') {
153
+ if (typeof record.microcredits !== 'string')
154
+ return BigInt(0);
155
+ try {
156
+ return BigInt(record.microcredits);
157
+ }
158
+ catch (_a) {
159
+ return BigInt(0);
160
+ }
161
+ }
162
+ if (typeof record.record_plaintext !== 'string')
163
+ return BigInt(0);
164
+ const match = /amount:\s*(\d+)u128/.exec(record.record_plaintext);
165
+ if (!match)
166
+ return BigInt(0);
167
+ try {
168
+ return BigInt(match[1]);
169
+ }
170
+ catch (_b) {
171
+ return BigInt(0);
172
+ }
173
+ };
174
+
175
+ export { ALEO_CREDITS_DECIMALS, ALEO_CREDITS_PROGRAM, ALEO_SENDABLE_TOKENS_BY_NETWORK, ALEO_TOKEN_REGISTRY_PROGRAM, extractRecordAtomicAmount, getAleoSendableTokensForNetwork, recordMatchesSendableToken };
@@ -0,0 +1,2 @@
1
+ export { ALEO_CREDITS_DECIMALS, ALEO_CREDITS_PROGRAM, ALEO_SENDABLE_TOKENS_BY_NETWORK, ALEO_TOKEN_REGISTRY_PROGRAM, extractRecordAtomicAmount, getAleoSendableTokensForNetwork, recordMatchesSendableToken, } from './aleoSendableTokens';
2
+ export type { AleoOwnedRecord, AleoProgramKind, AleoSendableToken, } from './aleoSendableTokens';
@@ -0,0 +1,119 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ /**
7
+ * Per-network registry of tokens whose UNSHIELDED (public) balance can be
8
+ * shielded into a private record via `<program>/transfer_public_to_private`.
9
+ *
10
+ * The widget surfaces a "Shield Manually" CTA per matching token under the
11
+ * Unshielded tab; clicking it submits the transition with recipient = self,
12
+ * minting a private record for the full unshielded balance.
13
+ *
14
+ * Three transition signatures, mirroring the Send-side `aleoSendableTokens`
15
+ * registry:
16
+ *
17
+ * - `credits` `credits.aleo/transfer_public_to_private`
18
+ * inputs: [recipient, amount]
19
+ * inputTypes: ['address.private', 'u64.public']
20
+ *
21
+ * - `stablecoin` `<stablecoin>.aleo/transfer_public_to_private`
22
+ * inputs: [recipient, amount]
23
+ * inputTypes: ['address.private', 'u128.public']
24
+ * (No Sealance proof — `transfer_public_to_private` is NOT
25
+ * in the iframe's `SEALANCE_FUNCTIONS_REQUIRING_PROOF` set,
26
+ * matching the playground's
27
+ * `transfer_public_to_private_stablecoin.ts`.)
28
+ *
29
+ * - `arc21` `token_registry.aleo/transfer_public_to_private`
30
+ * inputs: [token_id, recipient, amount, external_auth]
31
+ * inputTypes: ['field.public','address.private','u128.public','boolean.public']
32
+ * (`external_auth` is `false` for the 5 hyp_warp tokens —
33
+ * verified via app_metadata when the tokenIds were resolved.)
34
+ *
35
+ * The 5 ARC-21 entries are mainnet-only (Hyperlane warp routes are not
36
+ * deployed on testnet). Stablecoins + credits exist on both networks.
37
+ */
38
+ const ALEO_MAINNET_NETWORK_ID = 0;
39
+ const ALEO_TESTNET_NETWORK_ID = 1;
40
+ const ALEO_CREDITS_PROGRAM = 'credits.aleo';
41
+ const ALEO_TOKEN_REGISTRY_PROGRAM = 'token_registry.aleo';
42
+ const ALEO_CREDITS_TOKEN = {
43
+ contractAddress: ALEO_CREDITS_PROGRAM,
44
+ decimals: 6,
45
+ name: 'Aleo Credits',
46
+ programId: ALEO_CREDITS_PROGRAM,
47
+ programKind: 'credits',
48
+ symbol: 'ALEO',
49
+ };
50
+ const buildStablecoin = (programId, symbol, name) => ({
51
+ contractAddress: programId,
52
+ decimals: 6,
53
+ name,
54
+ programId,
55
+ programKind: 'stablecoin',
56
+ symbol,
57
+ });
58
+ const buildArc21 = (args) => ({
59
+ contractAddress: args.warpProgram,
60
+ decimals: args.decimals,
61
+ externalAuthRequired: false,
62
+ name: args.name,
63
+ programId: ALEO_TOKEN_REGISTRY_PROGRAM,
64
+ programKind: 'arc21',
65
+ symbol: args.symbol,
66
+ tokenId: args.tokenId,
67
+ });
68
+ const ALEO_SHIELDABLE_TOKENS_BY_NETWORK = {
69
+ [ALEO_MAINNET_NETWORK_ID]: [
70
+ ALEO_CREDITS_TOKEN,
71
+ buildStablecoin('usad_stablecoin.aleo', 'USAD', 'USAD'),
72
+ buildStablecoin('usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
73
+ buildArc21({
74
+ decimals: 9,
75
+ name: 'Wrapped SOL',
76
+ symbol: 'wSOL',
77
+ tokenId: '2045969100091121326225168054634646230244820821909676777152465722877810201564field',
78
+ warpProgram: 'hyp_warp_token_sol.aleo',
79
+ }),
80
+ buildArc21({
81
+ decimals: 18,
82
+ name: 'Wrapped ETH',
83
+ symbol: 'wETH',
84
+ tokenId: '8189585964265444162798552221009403350643900573290534096996249214099143169251field',
85
+ warpProgram: 'hyp_warp_token_eth.aleo',
86
+ }),
87
+ buildArc21({
88
+ decimals: 8,
89
+ name: 'Wrapped BTC',
90
+ symbol: 'wBTC',
91
+ tokenId: '3491859903473482085250871387962132231204352466326026409883548131580582527809field',
92
+ warpProgram: 'hyp_warp_token_wbtc.aleo',
93
+ }),
94
+ buildArc21({
95
+ decimals: 6,
96
+ name: 'Tether USD',
97
+ symbol: 'USDT',
98
+ tokenId: '7881654794448182580124231856035865816599796419758925654292946277940935117913field',
99
+ warpProgram: 'hyp_warp_token_usdt.aleo',
100
+ }),
101
+ buildArc21({
102
+ decimals: 6,
103
+ name: 'USD Coin',
104
+ symbol: 'USDC',
105
+ tokenId: '4697275201844475848710842677807162058146139844643350200269139278887318953049field',
106
+ warpProgram: 'hyp_warp_token_usdc.aleo',
107
+ }),
108
+ ],
109
+ [ALEO_TESTNET_NETWORK_ID]: [
110
+ ALEO_CREDITS_TOKEN,
111
+ buildStablecoin('test_usad_stablecoin.aleo', 'USAD', 'USAD'),
112
+ buildStablecoin('test_usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
113
+ ],
114
+ };
115
+ const getAleoShieldableTokensForNetwork = (networkId) => { var _a; return (_a = ALEO_SHIELDABLE_TOKENS_BY_NETWORK[networkId]) !== null && _a !== void 0 ? _a : []; };
116
+ const findAleoShieldableToken = (networkId, contractAddress) => getAleoShieldableTokensForNetwork(networkId).find((t) => t.contractAddress === contractAddress);
117
+
118
+ exports.findAleoShieldableToken = findAleoShieldableToken;
119
+ exports.getAleoShieldableTokensForNetwork = getAleoShieldableTokensForNetwork;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Per-network registry of tokens whose UNSHIELDED (public) balance can be
3
+ * shielded into a private record via `<program>/transfer_public_to_private`.
4
+ *
5
+ * The widget surfaces a "Shield Manually" CTA per matching token under the
6
+ * Unshielded tab; clicking it submits the transition with recipient = self,
7
+ * minting a private record for the full unshielded balance.
8
+ *
9
+ * Three transition signatures, mirroring the Send-side `aleoSendableTokens`
10
+ * registry:
11
+ *
12
+ * - `credits` `credits.aleo/transfer_public_to_private`
13
+ * inputs: [recipient, amount]
14
+ * inputTypes: ['address.private', 'u64.public']
15
+ *
16
+ * - `stablecoin` `<stablecoin>.aleo/transfer_public_to_private`
17
+ * inputs: [recipient, amount]
18
+ * inputTypes: ['address.private', 'u128.public']
19
+ * (No Sealance proof — `transfer_public_to_private` is NOT
20
+ * in the iframe's `SEALANCE_FUNCTIONS_REQUIRING_PROOF` set,
21
+ * matching the playground's
22
+ * `transfer_public_to_private_stablecoin.ts`.)
23
+ *
24
+ * - `arc21` `token_registry.aleo/transfer_public_to_private`
25
+ * inputs: [token_id, recipient, amount, external_auth]
26
+ * inputTypes: ['field.public','address.private','u128.public','boolean.public']
27
+ * (`external_auth` is `false` for the 5 hyp_warp tokens —
28
+ * verified via app_metadata when the tokenIds were resolved.)
29
+ *
30
+ * The 5 ARC-21 entries are mainnet-only (Hyperlane warp routes are not
31
+ * deployed on testnet). Stablecoins + credits exist on both networks.
32
+ */
33
+ export type AleoShieldProgramKind = 'arc21' | 'credits' | 'stablecoin';
34
+ export type AleoShieldableToken = {
35
+ contractAddress: string;
36
+ symbol: string;
37
+ name: string;
38
+ decimals: number;
39
+ programId: string;
40
+ tokenId?: string;
41
+ externalAuthRequired?: boolean;
42
+ programKind: AleoShieldProgramKind;
43
+ };
44
+ export declare const getAleoShieldableTokensForNetwork: (networkId: number) => AleoShieldableToken[];
45
+ export declare const findAleoShieldableToken: (networkId: number, contractAddress: string) => AleoShieldableToken | undefined;
@@ -0,0 +1,114 @@
1
+ 'use client'
2
+ /**
3
+ * Per-network registry of tokens whose UNSHIELDED (public) balance can be
4
+ * shielded into a private record via `<program>/transfer_public_to_private`.
5
+ *
6
+ * The widget surfaces a "Shield Manually" CTA per matching token under the
7
+ * Unshielded tab; clicking it submits the transition with recipient = self,
8
+ * minting a private record for the full unshielded balance.
9
+ *
10
+ * Three transition signatures, mirroring the Send-side `aleoSendableTokens`
11
+ * registry:
12
+ *
13
+ * - `credits` `credits.aleo/transfer_public_to_private`
14
+ * inputs: [recipient, amount]
15
+ * inputTypes: ['address.private', 'u64.public']
16
+ *
17
+ * - `stablecoin` `<stablecoin>.aleo/transfer_public_to_private`
18
+ * inputs: [recipient, amount]
19
+ * inputTypes: ['address.private', 'u128.public']
20
+ * (No Sealance proof — `transfer_public_to_private` is NOT
21
+ * in the iframe's `SEALANCE_FUNCTIONS_REQUIRING_PROOF` set,
22
+ * matching the playground's
23
+ * `transfer_public_to_private_stablecoin.ts`.)
24
+ *
25
+ * - `arc21` `token_registry.aleo/transfer_public_to_private`
26
+ * inputs: [token_id, recipient, amount, external_auth]
27
+ * inputTypes: ['field.public','address.private','u128.public','boolean.public']
28
+ * (`external_auth` is `false` for the 5 hyp_warp tokens —
29
+ * verified via app_metadata when the tokenIds were resolved.)
30
+ *
31
+ * The 5 ARC-21 entries are mainnet-only (Hyperlane warp routes are not
32
+ * deployed on testnet). Stablecoins + credits exist on both networks.
33
+ */
34
+ const ALEO_MAINNET_NETWORK_ID = 0;
35
+ const ALEO_TESTNET_NETWORK_ID = 1;
36
+ const ALEO_CREDITS_PROGRAM = 'credits.aleo';
37
+ const ALEO_TOKEN_REGISTRY_PROGRAM = 'token_registry.aleo';
38
+ const ALEO_CREDITS_TOKEN = {
39
+ contractAddress: ALEO_CREDITS_PROGRAM,
40
+ decimals: 6,
41
+ name: 'Aleo Credits',
42
+ programId: ALEO_CREDITS_PROGRAM,
43
+ programKind: 'credits',
44
+ symbol: 'ALEO',
45
+ };
46
+ const buildStablecoin = (programId, symbol, name) => ({
47
+ contractAddress: programId,
48
+ decimals: 6,
49
+ name,
50
+ programId,
51
+ programKind: 'stablecoin',
52
+ symbol,
53
+ });
54
+ const buildArc21 = (args) => ({
55
+ contractAddress: args.warpProgram,
56
+ decimals: args.decimals,
57
+ externalAuthRequired: false,
58
+ name: args.name,
59
+ programId: ALEO_TOKEN_REGISTRY_PROGRAM,
60
+ programKind: 'arc21',
61
+ symbol: args.symbol,
62
+ tokenId: args.tokenId,
63
+ });
64
+ const ALEO_SHIELDABLE_TOKENS_BY_NETWORK = {
65
+ [ALEO_MAINNET_NETWORK_ID]: [
66
+ ALEO_CREDITS_TOKEN,
67
+ buildStablecoin('usad_stablecoin.aleo', 'USAD', 'USAD'),
68
+ buildStablecoin('usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
69
+ buildArc21({
70
+ decimals: 9,
71
+ name: 'Wrapped SOL',
72
+ symbol: 'wSOL',
73
+ tokenId: '2045969100091121326225168054634646230244820821909676777152465722877810201564field',
74
+ warpProgram: 'hyp_warp_token_sol.aleo',
75
+ }),
76
+ buildArc21({
77
+ decimals: 18,
78
+ name: 'Wrapped ETH',
79
+ symbol: 'wETH',
80
+ tokenId: '8189585964265444162798552221009403350643900573290534096996249214099143169251field',
81
+ warpProgram: 'hyp_warp_token_eth.aleo',
82
+ }),
83
+ buildArc21({
84
+ decimals: 8,
85
+ name: 'Wrapped BTC',
86
+ symbol: 'wBTC',
87
+ tokenId: '3491859903473482085250871387962132231204352466326026409883548131580582527809field',
88
+ warpProgram: 'hyp_warp_token_wbtc.aleo',
89
+ }),
90
+ buildArc21({
91
+ decimals: 6,
92
+ name: 'Tether USD',
93
+ symbol: 'USDT',
94
+ tokenId: '7881654794448182580124231856035865816599796419758925654292946277940935117913field',
95
+ warpProgram: 'hyp_warp_token_usdt.aleo',
96
+ }),
97
+ buildArc21({
98
+ decimals: 6,
99
+ name: 'USD Coin',
100
+ symbol: 'USDC',
101
+ tokenId: '4697275201844475848710842677807162058146139844643350200269139278887318953049field',
102
+ warpProgram: 'hyp_warp_token_usdc.aleo',
103
+ }),
104
+ ],
105
+ [ALEO_TESTNET_NETWORK_ID]: [
106
+ ALEO_CREDITS_TOKEN,
107
+ buildStablecoin('test_usad_stablecoin.aleo', 'USAD', 'USAD'),
108
+ buildStablecoin('test_usdcx_stablecoin.aleo', 'USDCx', 'USDCx'),
109
+ ],
110
+ };
111
+ const getAleoShieldableTokensForNetwork = (networkId) => { var _a; return (_a = ALEO_SHIELDABLE_TOKENS_BY_NETWORK[networkId]) !== null && _a !== void 0 ? _a : []; };
112
+ const findAleoShieldableToken = (networkId, contractAddress) => getAleoShieldableTokensForNetwork(networkId).find((t) => t.contractAddress === contractAddress);
113
+
114
+ export { findAleoShieldableToken, getAleoShieldableTokensForNetwork };
@@ -0,0 +1,2 @@
1
+ export { findAleoShieldableToken, getAleoShieldableTokensForNetwork, } from './aleoShieldableTokens';
2
+ export type { AleoShieldableToken, AleoShieldProgramKind, } from './aleoShieldableTokens';