four-flap-meme-sdk 2.0.0 → 2.2.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 (220) hide show
  1. package/dist/__tests__/subpath-exports.test.js +64 -0
  2. package/dist/chains/bsc/iro.d.ts +5 -0
  3. package/dist/chains/bsc/iro.js +4 -0
  4. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  5. package/dist/chains/eni/flat-aliases.js +8 -0
  6. package/dist/chains/eni/index.d.ts +1 -0
  7. package/dist/chains/eni/index.js +1 -0
  8. package/dist/chains/index.d.ts +13 -0
  9. package/dist/chains/index.js +13 -0
  10. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  11. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  12. package/dist/chains/xlayer/eip7702/index.d.ts +1 -0
  13. package/dist/chains/xlayer/eip7702/index.js +1 -0
  14. package/dist/chains/xlayer/index.d.ts +3 -2
  15. package/dist/chains/xlayer/index.js +4 -7
  16. package/dist/flap/index.d.ts +10 -0
  17. package/dist/flap/index.js +8 -0
  18. package/dist/merkle/index.d.ts +12 -0
  19. package/dist/merkle/index.js +11 -0
  20. package/dist/shared/constants/index.d.ts +2 -0
  21. package/dist/shared/index.d.ts +2 -0
  22. package/dist/vanity/index.d.ts +5 -0
  23. package/dist/vanity/index.js +5 -0
  24. package/package.json +93 -2
  25. package/dist/chains/bsc/four/disperse.d.ts +0 -12
  26. package/dist/chains/bsc/four/disperse.js +0 -470
  27. package/dist/chains/bsc/four/pairwise.d.ts +0 -7
  28. package/dist/chains/bsc/four/pairwise.js +0 -308
  29. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  30. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  31. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  32. package/dist/chains/bsc/four/submit/direct.js +0 -452
  33. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  34. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  35. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  36. package/dist/chains/bsc/four/submit/index.js +0 -11
  37. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  38. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  39. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  40. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  41. package/dist/chains/bsc/four/swap/index.js +0 -829
  42. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  43. package/dist/chains/bsc/four/swap/types.js +0 -1
  44. package/dist/chains/bsc/four/sweep.d.ts +0 -13
  45. package/dist/chains/bsc/four/sweep.js +0 -788
  46. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  47. package/dist/chains/bsc/four/utils/index.js +0 -1558
  48. package/dist/chains/bsc/four/utils/types.d.ts +0 -1
  49. package/dist/chains/bsc/four/utils/types.js +0 -1
  50. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  51. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  52. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  53. package/dist/chains/bsc/pancake/bundle-buy-first/types.js +0 -1
  54. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  55. package/dist/chains/bsc/pancake/bundle-swap/helpers.js +0 -572
  56. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  57. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  58. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  59. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  60. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  61. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  62. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  63. package/dist/chains/xlayer/eip7702/bundle-swap/types.js +0 -1
  64. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  65. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  66. package/dist/chains/xlayer/eip7702/multi-hop-transfer/types.d.ts +0 -85
  67. package/dist/chains/xlayer/eip7702/multi-hop-transfer/types.js +0 -1
  68. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  69. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  70. package/dist/chains/xlayer/eip7702/volume/types.d.ts +0 -124
  71. package/dist/chains/xlayer/eip7702/volume/types.js +0 -1
  72. package/dist/chains/xlayer/eoa/types-core.d.ts +0 -363
  73. package/dist/chains/xlayer/eoa/types-core.js +0 -53
  74. package/dist/chains/xlayer/eoa/types-create.d.ts +0 -413
  75. package/dist/chains/xlayer/eoa/types-create.js +0 -9
  76. package/dist/chains/xlayer/eoa/types-volume.d.ts +0 -209
  77. package/dist/chains/xlayer/eoa/types-volume.js +0 -13
  78. package/dist/dex/direct-router/index.d.ts +0 -70
  79. package/dist/dex/direct-router/index.js +0 -1410
  80. package/dist/dex/direct-router/types.d.ts +0 -81
  81. package/dist/dex/direct-router/types.js +0 -1
  82. package/dist/shared/abis/TaxToken.json +0 -969
  83. package/dist/shared/abis/TokenManager.json +0 -836
  84. package/dist/shared/abis/TokenManager2.json +0 -136
  85. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  86. package/dist/shared/abis 2/TaxToken.json +0 -105
  87. package/dist/shared/abis 2/TokenManager.json +0 -836
  88. package/dist/shared/abis 2/TokenManager2.json +0 -60
  89. package/dist/shared/abis 2/TokenManagerHelper3.json +0 -993
  90. package/dist/shared/abis 2/common.d.ts +0 -85
  91. package/dist/shared/abis 2/common.js +0 -254
  92. package/dist/shared/abis 2/index.d.ts +0 -8
  93. package/dist/shared/abis 2/index.js +0 -8
  94. package/dist/shared/clients 2/blockrazor.d.ts +0 -314
  95. package/dist/shared/clients 2/blockrazor.js +0 -596
  96. package/dist/shared/clients 2/club48.d.ts +0 -154
  97. package/dist/shared/clients 2/club48.js +0 -331
  98. package/dist/shared/clients 2/emitservice.d.ts +0 -47
  99. package/dist/shared/clients 2/emitservice.js +0 -44
  100. package/dist/shared/clients 2/four.d.ts +0 -132
  101. package/dist/shared/clients 2/four.js +0 -281
  102. package/dist/shared/clients 2/merkle.d.ts +0 -210
  103. package/dist/shared/clients 2/merkle.js +0 -400
  104. package/dist/shared/flap/__tests__/curve.test.d.ts +0 -1
  105. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  106. package/dist/shared/flap/portal/index.d.ts +0 -12
  107. package/dist/shared/flap/portal/index.js +0 -11
  108. package/dist/shared/flap/portal/portal.d.ts +0 -47
  109. package/dist/shared/flap/portal/portal.js +0 -218
  110. package/dist/shared/flap/portal/types.d.ts +0 -227
  111. package/dist/shared/flap/portal/types.js +0 -80
  112. package/dist/shared/flap/portal/writer.d.ts +0 -121
  113. package/dist/shared/flap/portal/writer.js +0 -265
  114. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  115. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  116. package/dist/shared/flap/portal-bundle-merkle/core/types.d.ts +0 -1
  117. package/dist/shared/flap/portal-bundle-merkle/core/types.js +0 -1
  118. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  119. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  120. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  121. package/dist/shared/flap/portal-bundle-merkle/swap/types.js +0 -1
  122. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  123. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  124. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  125. package/dist/shared/flap/portal-bundle-merkle/utils/types.js +0 -1
  126. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.d.ts +0 -100
  127. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.js +0 -133
  128. package/dist/shared/flap 2/__tests__/curve.test.d.ts +0 -1
  129. package/dist/shared/flap 2/__tests__/curve.test.js +0 -85
  130. package/dist/shared/flap 2/abi.d.ts +0 -4
  131. package/dist/shared/flap 2/abi.js +0 -4
  132. package/dist/shared/flap 2/constants.d.ts +0 -128
  133. package/dist/shared/flap 2/constants.js +0 -143
  134. package/dist/shared/flap 2/curve.d.ts +0 -33
  135. package/dist/shared/flap 2/curve.js +0 -84
  136. package/dist/shared/flap 2/errors.d.ts +0 -37
  137. package/dist/shared/flap 2/errors.js +0 -114
  138. package/dist/shared/flap 2/index.d.ts +0 -22
  139. package/dist/shared/flap 2/index.js +0 -33
  140. package/dist/shared/flap 2/ipfs.d.ts +0 -21
  141. package/dist/shared/flap 2/ipfs.js +0 -38
  142. package/dist/shared/flap 2/meta.d.ts +0 -30
  143. package/dist/shared/flap 2/meta.js +0 -195
  144. package/dist/shared/flap 2/permit.d.ts +0 -16
  145. package/dist/shared/flap 2/permit.js +0 -67
  146. package/dist/shared/flap 2/pinata.d.ts +0 -40
  147. package/dist/shared/flap 2/pinata.js +0 -106
  148. package/dist/shared/flap 2/portal-bundle-merkle/config.d.ts +0 -79
  149. package/dist/shared/flap 2/portal-bundle-merkle/config.js +0 -133
  150. package/dist/shared/flap 2/portal-bundle-merkle/core.d.ts +0 -18
  151. package/dist/shared/flap 2/portal-bundle-merkle/core.js +0 -938
  152. package/dist/shared/flap 2/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  153. package/dist/shared/flap 2/portal-bundle-merkle/create-to-dex.js +0 -665
  154. package/dist/shared/flap 2/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  155. package/dist/shared/flap 2/portal-bundle-merkle/curve-to-dex.js +0 -446
  156. package/dist/shared/flap 2/portal-bundle-merkle/index.d.ts +0 -14
  157. package/dist/shared/flap 2/portal-bundle-merkle/index.js +0 -26
  158. package/dist/shared/flap 2/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  159. package/dist/shared/flap 2/portal-bundle-merkle/pancake-proxy.js +0 -701
  160. package/dist/shared/flap 2/portal-bundle-merkle/private.d.ts +0 -17
  161. package/dist/shared/flap 2/portal-bundle-merkle/private.js +0 -549
  162. package/dist/shared/flap 2/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  163. package/dist/shared/flap 2/portal-bundle-merkle/swap-buy-first.js +0 -831
  164. package/dist/shared/flap 2/portal-bundle-merkle/swap.d.ts +0 -201
  165. package/dist/shared/flap 2/portal-bundle-merkle/swap.js +0 -1359
  166. package/dist/shared/flap 2/portal-bundle-merkle/types.d.ts +0 -358
  167. package/dist/shared/flap 2/portal-bundle-merkle/types.js +0 -1
  168. package/dist/shared/flap 2/portal-bundle-merkle/utils.d.ts +0 -89
  169. package/dist/shared/flap 2/portal-bundle-merkle/utils.js +0 -963
  170. package/dist/shared/flap 2/portal-bundle.d.ts +0 -119
  171. package/dist/shared/flap 2/portal-bundle.js +0 -584
  172. package/dist/shared/flap 2/portal.d.ts +0 -392
  173. package/dist/shared/flap 2/portal.js +0 -559
  174. package/dist/shared/flap 2/vanity.d.ts +0 -48
  175. package/dist/shared/flap 2/vanity.js +0 -110
  176. package/dist/shared/flap 2/vault.d.ts +0 -240
  177. package/dist/shared/flap 2/vault.js +0 -366
  178. package/dist/shared/four 2/index.d.ts +0 -7
  179. package/dist/shared/four 2/index.js +0 -22
  180. package/dist/shared/four 2/tax-token.d.ts +0 -176
  181. package/dist/shared/four 2/tax-token.js +0 -302
  182. package/dist/shared/index 2.js +0 -10
  183. package/dist/shared/index.d 2.ts +0 -10
  184. package/dist/types/distribute.d.ts +0 -72
  185. package/dist/types/distribute.js +0 -1
  186. package/dist/types 2/errors.d.ts +0 -27
  187. package/dist/types 2/errors.js +0 -34
  188. package/dist/utils/__tests__/errors.test.d.ts +0 -1
  189. package/dist/utils/__tests__/errors.test.js +0 -76
  190. package/dist/utils/airdrop-sweep-types.d.ts +0 -1
  191. package/dist/utils/airdrop-sweep-types.js +0 -1
  192. package/dist/utils/erc20/index.d.ts +0 -242
  193. package/dist/utils/erc20/index.js +0 -645
  194. package/dist/utils/erc20/types.d.ts +0 -77
  195. package/dist/utils/erc20/types.js +0 -1
  196. package/dist/utils/erc20-types.d.ts +0 -1
  197. package/dist/utils/erc20-types.js +0 -1
  198. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  199. package/dist/utils/holders-maker/helpers.js +0 -371
  200. package/dist/utils/holders-maker/index.d.ts +0 -26
  201. package/dist/utils/holders-maker/index.js +0 -218
  202. package/dist/utils/holders-maker/types.d.ts +0 -72
  203. package/dist/utils/holders-maker/types.js +0 -4
  204. package/dist/utils/holders-maker-types.d.ts +0 -1
  205. package/dist/utils/holders-maker-types.js +0 -1
  206. package/dist/utils/lp-inspect/index.d.ts +0 -44
  207. package/dist/utils/lp-inspect/index.js +0 -937
  208. package/dist/utils/lp-inspect/types.d.ts +0 -100
  209. package/dist/utils/lp-inspect/types.js +0 -1
  210. package/dist/utils/lp-inspect-types.d.ts +0 -1
  211. package/dist/utils/lp-inspect-types.js +0 -1
  212. package/dist/utils/private-sale-types.d.ts +0 -1
  213. package/dist/utils/private-sale-types.js +0 -1
  214. package/dist/utils/quote-helpers/index.d.ts +0 -107
  215. package/dist/utils/quote-helpers/index.js +0 -346
  216. package/dist/utils/quote-helpers/types.d.ts +0 -16
  217. package/dist/utils/quote-helpers/types.js +0 -1
  218. package/dist/utils/quote-helpers-types.d.ts +0 -1
  219. package/dist/utils/quote-helpers-types.js +0 -1
  220. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
@@ -1,110 +0,0 @@
1
- import { getCreate2Address, keccak256, randomBytes } from 'ethers';
2
- import { FLAP_ORIGINAL_PORTAL_ADDRESSES, FLAP_TOKEN_IMPL_ADDRESSES, getVanitySuffix } from './constants.js';
3
- /**
4
- * 预测 vanity 地址(CREATE2 proxy bytecode 方案)
5
- * 使用 ethers v6 的 getCreate2Address
6
- */
7
- export function predictVanityTokenAddress(salt, portal, tokenImpl) {
8
- // 规范化 salt 到 bytes32(避免前端传入的短字符串导致不可预期行为)
9
- const normalizedSalt = /^0x[0-9a-fA-F]{64}$/.test(salt)
10
- ? salt.toLowerCase()
11
- : keccak256(salt);
12
- // 构建 EIP-1167 minimal proxy bytecode
13
- const bytecode = '0x3d602d80600a3d3981f3363d3d373d3d3d363d73' + tokenImpl.slice(2).toLowerCase() + '5af43d82803e903d91602b57fd5bf3';
14
- const bytecodeHash = keccak256(bytecode);
15
- return getCreate2Address(portal, normalizedSalt, bytecodeHash);
16
- }
17
- /**
18
- * 预测 vanity 地址(使用链枚举)
19
- * SDK 自动使用该链的 Portal 和 TokenImpl 地址
20
- * 注意:使用 Flap 平台的原始 Portal 地址进行 CREATE2 计算
21
- * BSC/MONAD 默认使用 NORMAL 实现(非税版)
22
- * @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
23
- */
24
- export function predictVanityTokenAddressByChain(chain, salt, taxed = false, taxedV5 = false // ✅ 新增:V5 高级税代币标识
25
- ) {
26
- // 使用 Flap 平台的原始 Portal 地址(用于 CREATE2)
27
- const portal = FLAP_ORIGINAL_PORTAL_ADDRESSES[chain];
28
- let tokenImpl;
29
- if (chain === 'BSC') {
30
- if (taxedV5) {
31
- // ✅ V5 高级税代币使用新的实现地址
32
- tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V5;
33
- }
34
- else {
35
- tokenImpl = taxed ? FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED : FLAP_TOKEN_IMPL_ADDRESSES.BSC_NORMAL;
36
- }
37
- }
38
- else if (chain === 'MONAD') {
39
- // ✅ Monad 链支持税版和普通版
40
- tokenImpl = taxed ? FLAP_TOKEN_IMPL_ADDRESSES.MONAD_TAXED : FLAP_TOKEN_IMPL_ADDRESSES.MONAD_NORMAL;
41
- }
42
- else {
43
- tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES[chain];
44
- }
45
- if (!portal || !tokenImpl) {
46
- throw new Error(`Flap Protocol not fully deployed on ${chain}`);
47
- }
48
- return predictVanityTokenAddress(salt, portal, tokenImpl);
49
- }
50
- /**
51
- * 寻找满足后缀的 salt(默认 8888)
52
- * 注意:该方法为同步 CPU 搜索,谨慎设置迭代限制
53
- */
54
- export async function findSaltEnding(opts) {
55
- const suffix = (opts.suffix ?? '8888').toLowerCase();
56
- // 若未提供 seed,默认使用随机种子,避免每次结果都相同
57
- let salt = opts.seed ?? keccak256(randomBytes(32));
58
- let iterations = 0;
59
- const limit = opts.maxIterations ?? 1000000;
60
- while (iterations < limit) {
61
- const addr = predictVanityTokenAddress(salt, opts.portal, opts.tokenImpl);
62
- if (addr.toLowerCase().endsWith(suffix)) {
63
- return { salt, address: addr, iterations };
64
- }
65
- salt = keccak256(salt);
66
- iterations++;
67
- }
68
- throw new Error('findSaltEnding: maxIterations reached');
69
- }
70
- /**
71
- * 寻找满足后缀的 salt(使用链枚举)
72
- * SDK 自动使用该链的 Portal 和 TokenImpl 地址
73
- * 注意:使用 Flap 平台的原始 Portal 地址进行 CREATE2 计算
74
- * BSC/MONAD 默认使用 NORMAL 实现(非税版)
75
- * XLayer 只有标准版,后缀是 1111
76
- * @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
77
- */
78
- export async function findSaltEndingByChain(opts) {
79
- // 使用 Flap 平台的原始 Portal 地址(用于 CREATE2)
80
- const portal = FLAP_ORIGINAL_PORTAL_ADDRESSES[opts.chain];
81
- let tokenImpl;
82
- if (opts.chain === 'BSC') {
83
- if (opts.taxedV5) {
84
- // ✅ V5 高级税代币使用新的实现地址
85
- tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V5;
86
- }
87
- else {
88
- tokenImpl = opts.taxed ? FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED : FLAP_TOKEN_IMPL_ADDRESSES.BSC_NORMAL;
89
- }
90
- }
91
- else if (opts.chain === 'MONAD') {
92
- // ✅ Monad 链支持税版和普通版
93
- tokenImpl = opts.taxed ? FLAP_TOKEN_IMPL_ADDRESSES.MONAD_TAXED : FLAP_TOKEN_IMPL_ADDRESSES.MONAD_NORMAL;
94
- }
95
- else {
96
- tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES[opts.chain];
97
- }
98
- if (!portal || !tokenImpl) {
99
- throw new Error(`Flap Protocol not fully deployed on ${opts.chain}`);
100
- }
101
- // ✅ 如果未指定后缀,根据链自动选择正确的后缀
102
- const suffix = opts.suffix ?? getVanitySuffix(opts.chain, opts.taxed);
103
- return findSaltEnding({
104
- portal,
105
- tokenImpl,
106
- suffix,
107
- maxIterations: opts.maxIterations,
108
- seed: opts.seed
109
- });
110
- }
@@ -1,240 +0,0 @@
1
- /**
2
- * Flap Tax Vaults(税收金库)
3
- *
4
- * ⚠️ 重要:基于 flap.sh/launch 实际源码分析,金库模式架构如下:
5
- *
6
- * 1. 金库代币通过 VaultPortal 合约创建(不是普通 Portal)
7
- * 2. 调用函数:VaultPortal.newTaxTokenWithVault(params)
8
- * 3. 参数中 extensionID/extensionData 始终为零值
9
- * 4. 真正的金库配置通过 vaultFactory(工厂地址)和 vaultData(ABI 编码数据)传递
10
- * 5. 每种金库类型对应一个具体的 VaultFactory 合约地址
11
- *
12
- * VaultPortal.newTaxTokenWithVault 参数结构:
13
- * - 基础参数(与 Portal.newTokenV5 相同):name, symbol, meta, dexThresh, salt, taxRate,
14
- * migratorType, quoteToken, quoteAmt, permitData, extensionID(全零), extensionData("0x"),
15
- * dexId, lpFeeProfile, taxDuration, antiFarmerDuration, mktBps, deflationBps, dividendBps,
16
- * lpBps, minimumShareBalance
17
- * - 金库专属参数:vaultFactory(address), vaultData(bytes)
18
- *
19
- * 金库分类(来自 flap.sh 源码):
20
- * 官方金库 (official):
21
- * - gift (FlapXVault):禮物金庫,指定一个地址接收税费
22
- * - split (SplitVault):分配金庫,按比例将税费分配给多个接收者
23
- * - buyback & burn (SnowBallVault):自动回购并销毁代币
24
- * 社区金库 (community):
25
- * - burnToEarn (BlackHoleVault):燃燒分紅,燃烧代币以赚取分红奖励
26
- * - buildYourVault:構建您的金庫,用户输入自定义 VaultFactory 地址
27
- *
28
- * @module vault
29
- */
30
- import { type JsonRpcProvider } from 'ethers';
31
- /**
32
- * FieldDescriptor — 字段描述符
33
- * 对应 Solidity 结构体 IVaultSchemasV1.FieldDescriptor
34
- */
35
- export interface FieldDescriptor {
36
- name: string;
37
- fieldType: string;
38
- description: string;
39
- decimals: number;
40
- }
41
- /**
42
- * VaultDataSchema — 工厂数据模式
43
- * 对应 VaultFactoryBaseV2.vaultDataSchema() 返回值
44
- */
45
- export interface VaultDataSchema {
46
- description: string;
47
- fields: FieldDescriptor[];
48
- isArray: boolean;
49
- }
50
- /**
51
- * ApproveAction — ERC-20 授权操作
52
- */
53
- export interface ApproveAction {
54
- tokenType: string;
55
- amountFieldName: string;
56
- }
57
- /**
58
- * VaultMethodSchema — 金库方法描述
59
- */
60
- export interface VaultMethodSchema {
61
- name: string;
62
- description: string;
63
- inputs: FieldDescriptor[];
64
- outputs: FieldDescriptor[];
65
- approvals: ApproveAction[];
66
- isInputArray: boolean;
67
- isOutputArray: boolean;
68
- isWriteMethod: boolean;
69
- }
70
- /**
71
- * VaultUISchema — 金库 UI 模式
72
- */
73
- export interface VaultUISchema {
74
- vaultType: string;
75
- description: string;
76
- methods: VaultMethodSchema[];
77
- }
78
- /**
79
- * 金库类型枚举
80
- *
81
- * ⚠️ 基于 flap.sh 实际 JS 源码中 taxVaults.vaultTypes[] 配置
82
- * 每种类型对应一个 VaultFactory 合约地址
83
- */
84
- export type VaultType = 'none' | 'gift' | 'split' | 'buyback_burn' | 'burnToEarn' | 'buildYourVault';
85
- /**
86
- * 金库类型显示标签
87
- */
88
- export declare const VAULT_TYPE_LABELS: Record<VaultType, string>;
89
- /**
90
- * 金库类型分类(对齐 flap.sh 的 category 字段)
91
- */
92
- export declare const VAULT_TYPE_CATEGORIES: {
93
- official: VaultType[];
94
- community: VaultType[];
95
- };
96
- /**
97
- * VaultPortal 合约地址
98
- *
99
- * ⚠️ 金库代币通过 VaultPortal 创建,不是普通 Portal
100
- * 来源:flap.sh/_next/static/chunks/2601-*.js
101
- */
102
- export declare const VAULT_PORTAL_ADDRESSES: Record<string, string>;
103
- /**
104
- * VaultFactory 合约地址(每种金库类型 + 每条链)
105
- *
106
- * ⚠️ 直接从 flap.sh 前端 JS 源码中提取的真实地址
107
- * 来源:flap.sh/_next/static/chunks/2601-*.js 中 taxVaults.vaultTypes[]
108
- */
109
- export declare const VAULT_FACTORY_ADDRESSES: Record<string, Record<string, string>>;
110
- /**
111
- * 金库额外配置(如 XVault 的 relayer 端点)
112
- */
113
- export declare const VAULT_EXTRA_CONFIG: Record<string, Record<string, Record<string, string>>>;
114
- /**
115
- * Flap Guardian 合约地址
116
- */
117
- export declare const FLAP_GUARDIAN_ADDRESSES: {
118
- readonly BSC: "0x9e27098dcD8844bcc6287a557E0b4D09C86B8a4b";
119
- };
120
- import { VAULT_PORTAL_ABI, VAULT_FACTORY_ABI, VAULT_FACTORY_V2_ABI, VAULT_BASE_ABI, VAULT_BASE_V2_ABI } from '../../abis/flap/vault.js';
121
- export { VAULT_PORTAL_ABI, VAULT_FACTORY_ABI, VAULT_FACTORY_V2_ABI, VAULT_BASE_ABI, VAULT_BASE_V2_ABI, };
122
- /** extensionID/extensionData 在金库模式下始终为零值 */
123
- export declare const NONE_EXTENSION_ID: string;
124
- /**
125
- * Tax Vault 创建配置
126
- *
127
- * ⚠️ 金库模式下的核心参数:
128
- * - vaultFactory: VaultFactory 合约地址(直接传递给 VaultPortal)
129
- * - vaultData: ABI 编码的金库初始化数据(由 vaultDataSchema 决定格式)
130
- * - extensionID 和 extensionData 始终为零值
131
- */
132
- export interface TaxVaultConfig {
133
- /** 金库类型 */
134
- vaultType: VaultType;
135
- /**
136
- * VaultFactory 合约地址
137
- * - 官方金库:从 VAULT_FACTORY_ADDRESSES 自动获取
138
- * - buildYourVault:用户手动输入
139
- */
140
- factoryAddress?: string;
141
- /**
142
- * 金库初始化数据(原始 hex)
143
- * 直接使用此数据作为 vaultData
144
- */
145
- rawVaultData?: string;
146
- /**
147
- * 金库数据字段值
148
- * key = vaultDataSchema 中 field.name, value = 用户输入
149
- */
150
- vaultDataFields?: Record<string, string | number | boolean>;
151
- /**
152
- * 工厂的 vaultDataSchema
153
- */
154
- vaultDataSchema?: VaultDataSchema;
155
- }
156
- /**
157
- * 根据 VaultDataSchema 和用户输入编码 vaultData
158
- */
159
- export declare function encodeVaultData(schema: VaultDataSchema, fieldValues: Record<string, string | number | boolean>): string;
160
- /**
161
- * 获取指定链和金库类型的 VaultFactory 合约地址
162
- */
163
- export declare function getVaultFactoryAddress(chain: string, vaultType: VaultType): string | null;
164
- /**
165
- * 获取指定链的 VaultPortal 合约地址
166
- */
167
- export declare function getVaultPortalAddress(chain: string): string | null;
168
- /**
169
- * 构建金库参数(用于 VaultPortal.newTaxTokenWithVault)
170
- *
171
- * ⚠️ 重要:返回的是 vaultFactory 和 vaultData,不是 extensionID/extensionData
172
- * extensionID/extensionData 在金库模式下始终为零值
173
- *
174
- * @returns { vaultFactory, vaultData } 直接传给 VaultPortal
175
- */
176
- export declare function buildVaultParams(config?: TaxVaultConfig, chain?: string): {
177
- vaultFactory: string;
178
- vaultData: string;
179
- };
180
- /**
181
- * 旧版兼容:将 TaxVaultConfig 转换为 extensionID 和 extensionData
182
- *
183
- * ⚠️ 注意:真实的 Flap 平台在金库模式下 extensionID/extensionData 始终为零值
184
- * 金库参数通过 VaultPortal 的 vaultFactory/vaultData 传递
185
- * 此函数仅用于向后兼容
186
- */
187
- export declare function buildVaultExtensionParams(config?: TaxVaultConfig): {
188
- extensionID: string;
189
- extensionData: string;
190
- };
191
- /**
192
- * 从 VaultFactory 合约读取 vaultDataSchema
193
- */
194
- export declare function queryVaultDataSchema(provider: JsonRpcProvider, factoryAddress: string): Promise<VaultDataSchema | null>;
195
- /**
196
- * 从金库合约读取 vaultUISchema
197
- */
198
- export declare function queryVaultUISchema(provider: JsonRpcProvider, vaultAddress: string): Promise<VaultUISchema | null>;
199
- /**
200
- * 读取金库合约的动态描述
201
- */
202
- export declare function queryVaultDescription(provider: JsonRpcProvider, vaultAddress: string): Promise<string | null>;
203
- /**
204
- * 验证合约是否是有效的 VaultFactory
205
- */
206
- export declare function validateVaultFactory(provider: JsonRpcProvider, factoryAddress: string): Promise<{
207
- isValid: boolean;
208
- isV2: boolean;
209
- schema: VaultDataSchema | null;
210
- error?: string;
211
- }>;
212
- /**
213
- * 从 VaultPortal 查询代币的金库信息
214
- */
215
- export declare function getVaultInfo(provider: JsonRpcProvider, vaultPortalAddress: string, taxTokenAddress: string): Promise<{
216
- vault: string;
217
- vaultFactory: string;
218
- description: string;
219
- isOfficial: boolean;
220
- riskLevel: number;
221
- } | null>;
222
- /**
223
- * 验证合约是否有效(是否部署了代码)
224
- */
225
- export declare function isValidContract(provider: JsonRpcProvider, address: string): Promise<boolean>;
226
- /**
227
- * 金库信息(链上查询结果)
228
- */
229
- export interface VaultInfo {
230
- /** 金库合约地址 */
231
- address: string;
232
- /** 金库中的原生代币余额 */
233
- nativeBalance: bigint;
234
- /** 金库描述 */
235
- description: string | null;
236
- /** 是否为 V2 金库 */
237
- isV2: boolean;
238
- /** V2 金库的 UI 模式 */
239
- uiSchema: VaultUISchema | null;
240
- }