mint.club-cli 1.4.2 → 1.5.1

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 (44) hide show
  1. package/README.md +21 -6
  2. package/dist/index.js +79 -79
  3. package/package.json +20 -8
  4. package/dist/abi/bond.d.ts +0 -244
  5. package/dist/abi/bond.js +0 -323
  6. package/dist/abi/bond.js.map +0 -1
  7. package/dist/abi/zap-v2.d.ts +0 -93
  8. package/dist/abi/zap-v2.js +0 -121
  9. package/dist/abi/zap-v2.js.map +0 -1
  10. package/dist/client.d.ts +0 -6
  11. package/dist/client.js +0 -38
  12. package/dist/client.js.map +0 -1
  13. package/dist/commands/buy.d.ts +0 -2
  14. package/dist/commands/buy.js +0 -77
  15. package/dist/commands/buy.js.map +0 -1
  16. package/dist/commands/create.d.ts +0 -2
  17. package/dist/commands/create.js +0 -85
  18. package/dist/commands/create.js.map +0 -1
  19. package/dist/commands/info.d.ts +0 -19
  20. package/dist/commands/info.js +0 -139
  21. package/dist/commands/info.js.map +0 -1
  22. package/dist/commands/sell.d.ts +0 -2
  23. package/dist/commands/sell.js +0 -77
  24. package/dist/commands/sell.js.map +0 -1
  25. package/dist/commands/zap-buy.d.ts +0 -2
  26. package/dist/commands/zap-buy.js +0 -93
  27. package/dist/commands/zap-buy.js.map +0 -1
  28. package/dist/commands/zap-sell.d.ts +0 -2
  29. package/dist/commands/zap-sell.js +0 -89
  30. package/dist/commands/zap-sell.js.map +0 -1
  31. package/dist/config/chains.d.ts +0 -782
  32. package/dist/config/chains.js +0 -260
  33. package/dist/config/chains.js.map +0 -1
  34. package/dist/config/contracts.d.ts +0 -44
  35. package/dist/config/contracts.js +0 -59
  36. package/dist/config/contracts.js.map +0 -1
  37. package/dist/index.d.ts +0 -2
  38. package/dist/index.js.map +0 -1
  39. package/dist/utils/format.d.ts +0 -26
  40. package/dist/utils/format.js +0 -54
  41. package/dist/utils/format.js.map +0 -1
  42. package/dist/utils/swap.d.ts +0 -8
  43. package/dist/utils/swap.js +0 -48
  44. package/dist/utils/swap.js.map +0 -1
@@ -1,77 +0,0 @@
1
- import { getPublicClient, getWalletClient } from '../client.js';
2
- import { getBondAddress } from '../config/contracts.js';
3
- import { MCV2_BOND_ABI } from '../abi/bond.js';
4
- import { formatAmount, parseAmount, formatTxHash } from '../utils/format.js';
5
- export async function sellCommand(tokenAddress, amount, minRefund, chain, privateKey) {
6
- try {
7
- console.log(`🔥 Selling ${amount} tokens of ${tokenAddress} on ${chain}...`);
8
- const publicClient = getPublicClient(chain);
9
- const walletClient = getWalletClient(chain, privateKey);
10
- const bondAddress = getBondAddress(chain);
11
- const tokensToBurn = parseAmount(amount);
12
- // Get the expected refund amount
13
- console.log('💰 Calculating refund amount...');
14
- const [refundAmount, royalty] = await publicClient.readContract({
15
- address: bondAddress,
16
- abi: MCV2_BOND_ABI,
17
- functionName: 'getRefundForTokens',
18
- args: [tokenAddress, tokensToBurn],
19
- });
20
- const netRefund = refundAmount - royalty;
21
- console.log(` Gross refund: ${formatAmount(refundAmount)}`);
22
- console.log(` Royalty: ${formatAmount(royalty)}`);
23
- console.log(` Net refund: ${formatAmount(netRefund)}`);
24
- // Check min refund if provided
25
- if (minRefund) {
26
- const minRefundWei = parseAmount(minRefund);
27
- if (netRefund < minRefundWei) {
28
- throw new Error(`Refund ${formatAmount(netRefund)} is below minimum ${formatAmount(minRefundWei)}`);
29
- }
30
- }
31
- // Simulate the transaction first
32
- console.log('🔍 Simulating transaction...');
33
- await publicClient.simulateContract({
34
- account: walletClient.account,
35
- address: bondAddress,
36
- abi: MCV2_BOND_ABI,
37
- functionName: 'burn',
38
- args: [
39
- tokenAddress,
40
- tokensToBurn,
41
- minRefund ? parseAmount(minRefund) : 0n,
42
- walletClient.account.address,
43
- ],
44
- });
45
- // Execute the transaction
46
- console.log('📤 Sending transaction...');
47
- const hash = await walletClient.writeContract({
48
- address: bondAddress,
49
- abi: MCV2_BOND_ABI,
50
- functionName: 'burn',
51
- args: [
52
- tokenAddress,
53
- tokensToBurn,
54
- minRefund ? parseAmount(minRefund) : 0n,
55
- walletClient.account.address,
56
- ],
57
- });
58
- console.log(` Transaction hash: ${formatTxHash(hash)}`);
59
- // Wait for confirmation
60
- console.log('⏳ Waiting for confirmation...');
61
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
62
- if (receipt.status === 'success') {
63
- console.log('✅ Transaction confirmed!');
64
- console.log(` Sold: ${amount} tokens`);
65
- console.log(` Refund: ${formatAmount(netRefund)} reserve tokens`);
66
- console.log(` Block: ${receipt.blockNumber}`);
67
- }
68
- else {
69
- console.log('❌ Transaction failed');
70
- }
71
- }
72
- catch (error) {
73
- console.error('❌ Error:', error instanceof Error ? error.message : error);
74
- process.exit(1);
75
- }
76
- }
77
- //# sourceMappingURL=sell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { SupportedChain } from '../config/chains.js';
2
- export declare function zapBuyCommand(tokenAddress: string, inputToken: string, inputAmount: string, minTokens: string | undefined, path: string, chain: SupportedChain, privateKey: `0x${string}`): Promise<void>;
@@ -1,93 +0,0 @@
1
- import { getPublicClient, getWalletClient } from '../client.js';
2
- import { getZapV2Address, isZapV2Supported } from '../config/contracts.js';
3
- import { MCV2_ZAP_V2_ABI } from '../abi/zap-v2.js';
4
- import { formatAmount, parseAmount, formatTxHash } from '../utils/format.js';
5
- import { encodeV3SwapPath, encodeV3SwapInput, createSwapCommands, parseSwapPath } from '../utils/swap.js';
6
- export async function zapBuyCommand(tokenAddress, inputToken, inputAmount, minTokens, path, chain, privateKey) {
7
- try {
8
- if (!isZapV2Supported(chain)) {
9
- throw new Error(`ZapV2 is not supported on ${chain}. Currently only available on Base.`);
10
- }
11
- console.log(`⚡ Zap buying ${tokenAddress} with ${inputAmount} ${inputToken} on ${chain}...`);
12
- const publicClient = getPublicClient(chain);
13
- const walletClient = getWalletClient(chain, privateKey);
14
- const zapV2Address = getZapV2Address(chain);
15
- if (!zapV2Address) {
16
- throw new Error('ZapV2 contract not available on this chain');
17
- }
18
- const inputAmountWei = parseAmount(inputAmount);
19
- const minTokensOut = minTokens ? parseAmount(minTokens) : 0n;
20
- // Parse swap path
21
- const { tokens, fees } = parseSwapPath(path);
22
- console.log(` Input: ${inputAmount} ${inputToken}`);
23
- console.log(` Path: ${tokens.join(' -> ')} (fees: ${fees.join(', ')})`);
24
- console.log(` Min tokens out: ${minTokens || '0'}`);
25
- // Encode swap path and commands
26
- const swapPath = encodeV3SwapPath(tokens, fees);
27
- const commands = createSwapCommands();
28
- const swapInput = encodeV3SwapInput(zapV2Address, // recipient (ZapV2 contract)
29
- inputAmountWei, 0n, // amountOutMin for swap (we'll enforce minTokensOut at the zap level)
30
- swapPath, false // payerIsUser = false (ZapV2 handles token transfers)
31
- );
32
- const deadline = BigInt(Math.floor(Date.now() / 1000) + 1200); // 20 minutes from now
33
- // Check if input token is ETH (0x0000000000000000000000000000000000000000)
34
- const isETH = inputToken.toLowerCase() === '0x0000000000000000000000000000000000000000' ||
35
- inputToken.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
36
- console.log('🔍 Simulating zap transaction...');
37
- const { result } = await publicClient.simulateContract({
38
- account: walletClient.account,
39
- address: zapV2Address,
40
- abi: MCV2_ZAP_V2_ABI,
41
- functionName: 'zapMint',
42
- args: [
43
- tokenAddress,
44
- inputToken,
45
- inputAmountWei,
46
- minTokensOut,
47
- commands,
48
- [swapInput],
49
- deadline,
50
- walletClient.account.address,
51
- ],
52
- value: isETH ? inputAmountWei : 0n,
53
- });
54
- console.log(` Expected tokens received: ${formatAmount(result[0])}`);
55
- console.log(` Reserve tokens used: ${formatAmount(result[1])}`);
56
- // Execute the transaction
57
- console.log('📤 Sending transaction...');
58
- const hash = await walletClient.writeContract({
59
- address: zapV2Address,
60
- abi: MCV2_ZAP_V2_ABI,
61
- functionName: 'zapMint',
62
- args: [
63
- tokenAddress,
64
- inputToken,
65
- inputAmountWei,
66
- minTokensOut,
67
- commands,
68
- [swapInput],
69
- deadline,
70
- walletClient.account.address,
71
- ],
72
- value: isETH ? inputAmountWei : 0n,
73
- });
74
- console.log(` Transaction hash: ${formatTxHash(hash)}`);
75
- // Wait for confirmation
76
- console.log('⏳ Waiting for confirmation...');
77
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
78
- if (receipt.status === 'success') {
79
- console.log('✅ Zap transaction confirmed!');
80
- console.log(` Input: ${inputAmount} ${inputToken}`);
81
- console.log(` Tokens received: ${formatAmount(result[0])}`);
82
- console.log(` Block: ${receipt.blockNumber}`);
83
- }
84
- else {
85
- console.log('❌ Transaction failed');
86
- }
87
- }
88
- catch (error) {
89
- console.error('❌ Error:', error instanceof Error ? error.message : error);
90
- process.exit(1);
91
- }
92
- }
93
- //# sourceMappingURL=zap-buy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zap-buy.js","sourceRoot":"","sources":["../../src/commands/zap-buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG1G,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAoB,EACpB,UAAkB,EAClB,WAAmB,EACnB,SAA6B,EAC7B,IAAY,EACZ,KAAqB,EACrB,UAAyB;IAEzB,IAAI,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,qCAAqC,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,SAAS,WAAW,IAAI,UAAU,OAAO,KAAK,KAAK,CAAC,CAAC;QAE7F,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,kBAAkB;QAClB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,IAAI,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QAEtD,gCAAgC;QAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,iBAAiB,CACjC,YAAY,EAAE,6BAA6B;QAC3C,cAAc,EACd,EAAE,EAAE,sEAAsE;QAC1E,QAAQ,EACR,KAAK,CAAC,sDAAsD;SAC7D,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,sBAAsB;QAErF,2EAA2E;QAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,4CAA4C;YACzE,UAAU,CAAC,WAAW,EAAE,KAAK,4CAA4C,CAAC;QAExF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;YACrD,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,eAAe;YACpB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE;gBACJ,YAA6B;gBAC7B,UAA2B;gBAC3B,cAAc;gBACd,YAAY;gBACZ,QAAQ;gBACR,CAAC,SAAS,CAAC;gBACX,QAAQ;gBACR,YAAY,CAAC,OAAO,CAAC,OAAO;aAC7B;YACD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,2BAA2B,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAElE,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;YAC5C,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,eAAe;YACpB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE;gBACJ,YAA6B;gBAC7B,UAA2B;gBAC3B,cAAc;gBACd,YAAY;gBACZ,QAAQ;gBACR,CAAC,SAAS,CAAC;gBACX,QAAQ;gBACR,YAAY,CAAC,OAAO,CAAC,OAAO;aAC7B;YACD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1D,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,IAAI,UAAU,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { SupportedChain } from '../config/chains.js';
2
- export declare function zapSellCommand(tokenAddress: string, amount: string, outputToken: string, minOutput: string | undefined, path: string, chain: SupportedChain, privateKey: `0x${string}`): Promise<void>;
@@ -1,89 +0,0 @@
1
- import { getPublicClient, getWalletClient } from '../client.js';
2
- import { getZapV2Address, isZapV2Supported } from '../config/contracts.js';
3
- import { MCV2_ZAP_V2_ABI } from '../abi/zap-v2.js';
4
- import { formatAmount, parseAmount, formatTxHash } from '../utils/format.js';
5
- import { encodeV3SwapPath, encodeV3SwapInput, createSwapCommands, parseSwapPath } from '../utils/swap.js';
6
- export async function zapSellCommand(tokenAddress, amount, outputToken, minOutput, path, chain, privateKey) {
7
- try {
8
- if (!isZapV2Supported(chain)) {
9
- throw new Error(`ZapV2 is not supported on ${chain}. Currently only available on Base.`);
10
- }
11
- console.log(`⚡ Zap selling ${amount} tokens of ${tokenAddress} for ${outputToken} on ${chain}...`);
12
- const publicClient = getPublicClient(chain);
13
- const walletClient = getWalletClient(chain, privateKey);
14
- const zapV2Address = getZapV2Address(chain);
15
- if (!zapV2Address) {
16
- throw new Error('ZapV2 contract not available on this chain');
17
- }
18
- const tokensToBurn = parseAmount(amount);
19
- const minOutputAmount = minOutput ? parseAmount(minOutput) : 0n;
20
- // Parse swap path (reverse direction for selling)
21
- const { tokens, fees } = parseSwapPath(path);
22
- console.log(` Selling: ${amount} tokens`);
23
- console.log(` Path: ${tokens.join(' -> ')} (fees: ${fees.join(', ')})`);
24
- console.log(` Min output: ${minOutput || '0'} ${outputToken}`);
25
- // For selling, we typically want to go from reserve token to output token
26
- // So the path should start with reserve token and end with output token
27
- const swapPath = encodeV3SwapPath(tokens, fees);
28
- const commands = createSwapCommands();
29
- const swapInput = encodeV3SwapInput(walletClient.account.address, // recipient (user gets the output tokens)
30
- 0n, // amountIn will be determined by ZapV2 based on burn proceeds
31
- minOutputAmount, swapPath, false // payerIsUser = false (ZapV2 handles token transfers)
32
- );
33
- const deadline = BigInt(Math.floor(Date.now() / 1000) + 1200); // 20 minutes from now
34
- console.log('🔍 Simulating zap transaction...');
35
- const { result } = await publicClient.simulateContract({
36
- account: walletClient.account,
37
- address: zapV2Address,
38
- abi: MCV2_ZAP_V2_ABI,
39
- functionName: 'zapBurn',
40
- args: [
41
- tokenAddress,
42
- tokensToBurn,
43
- outputToken,
44
- minOutputAmount,
45
- commands,
46
- [swapInput],
47
- deadline,
48
- walletClient.account.address,
49
- ],
50
- });
51
- console.log(` Expected output amount: ${formatAmount(result[0])}`);
52
- console.log(` Reserve tokens received from burn: ${formatAmount(result[1])}`);
53
- // Execute the transaction
54
- console.log('📤 Sending transaction...');
55
- const hash = await walletClient.writeContract({
56
- address: zapV2Address,
57
- abi: MCV2_ZAP_V2_ABI,
58
- functionName: 'zapBurn',
59
- args: [
60
- tokenAddress,
61
- tokensToBurn,
62
- outputToken,
63
- minOutputAmount,
64
- commands,
65
- [swapInput],
66
- deadline,
67
- walletClient.account.address,
68
- ],
69
- });
70
- console.log(` Transaction hash: ${formatTxHash(hash)}`);
71
- // Wait for confirmation
72
- console.log('⏳ Waiting for confirmation...');
73
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
74
- if (receipt.status === 'success') {
75
- console.log('✅ Zap transaction confirmed!');
76
- console.log(` Burned: ${amount} tokens`);
77
- console.log(` Output received: ${formatAmount(result[0])} ${outputToken}`);
78
- console.log(` Block: ${receipt.blockNumber}`);
79
- }
80
- else {
81
- console.log('❌ Transaction failed');
82
- }
83
- }
84
- catch (error) {
85
- console.error('❌ Error:', error instanceof Error ? error.message : error);
86
- process.exit(1);
87
- }
88
- }
89
- //# sourceMappingURL=zap-sell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zap-sell.js","sourceRoot":"","sources":["../../src/commands/zap-sell.ts"],"names":[],"mappings":"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"}