drain-mcp 0.2.0 → 0.2.2
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/README.md +262 -262
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/constants.d.ts +31 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +20 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +59 -77
- package/dist/index.js.map +1 -1
- package/dist/services/channel.d.ts +9 -0
- package/dist/services/channel.d.ts.map +1 -1
- package/dist/services/channel.js +41 -0
- package/dist/services/channel.js.map +1 -1
- package/dist/services/wallet.d.ts +1 -1
- package/dist/services/wallet.js +1 -1
- package/dist/tools/balance.d.ts.map +1 -1
- package/dist/tools/balance.js +47 -29
- package/dist/tools/balance.js.map +1 -1
- package/dist/tools/channel.d.ts +4 -3
- package/dist/tools/channel.d.ts.map +1 -1
- package/dist/tools/channel.js +117 -81
- package/dist/tools/channel.js.map +1 -1
- package/dist/tools/chat.js +15 -15
- package/dist/tools/providers.js +27 -27
- package/package.json +50 -50
package/dist/constants.d.ts
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* DRAIN Protocol Constants
|
|
3
3
|
*/
|
|
4
4
|
export declare const USDC_DECIMALS = 6;
|
|
5
|
-
export declare const SESSION_FEE = 10000n;
|
|
6
5
|
export declare const EIP712_DOMAIN: {
|
|
7
6
|
readonly name: "DrainChannel";
|
|
8
7
|
readonly version: "1";
|
|
@@ -84,6 +83,20 @@ export declare const DRAIN_CHANNEL_ABI: readonly [{
|
|
|
84
83
|
readonly outputs: readonly [{
|
|
85
84
|
readonly type: "uint256";
|
|
86
85
|
}];
|
|
86
|
+
}, {
|
|
87
|
+
readonly name: "cooperativeClose";
|
|
88
|
+
readonly type: "function";
|
|
89
|
+
readonly inputs: readonly [{
|
|
90
|
+
readonly name: "channelId";
|
|
91
|
+
readonly type: "bytes32";
|
|
92
|
+
}, {
|
|
93
|
+
readonly name: "finalAmount";
|
|
94
|
+
readonly type: "uint256";
|
|
95
|
+
}, {
|
|
96
|
+
readonly name: "providerSignature";
|
|
97
|
+
readonly type: "bytes";
|
|
98
|
+
}];
|
|
99
|
+
readonly outputs: readonly [];
|
|
87
100
|
}, {
|
|
88
101
|
readonly anonymous: false;
|
|
89
102
|
readonly name: "ChannelOpened";
|
|
@@ -109,6 +122,23 @@ export declare const DRAIN_CHANNEL_ABI: readonly [{
|
|
|
109
122
|
readonly type: "uint256";
|
|
110
123
|
readonly indexed: false;
|
|
111
124
|
}];
|
|
125
|
+
}, {
|
|
126
|
+
readonly anonymous: false;
|
|
127
|
+
readonly name: "ChannelClosed";
|
|
128
|
+
readonly type: "event";
|
|
129
|
+
readonly inputs: readonly [{
|
|
130
|
+
readonly name: "channelId";
|
|
131
|
+
readonly type: "bytes32";
|
|
132
|
+
readonly indexed: true;
|
|
133
|
+
}, {
|
|
134
|
+
readonly name: "consumer";
|
|
135
|
+
readonly type: "address";
|
|
136
|
+
readonly indexed: true;
|
|
137
|
+
}, {
|
|
138
|
+
readonly name: "refund";
|
|
139
|
+
readonly type: "uint256";
|
|
140
|
+
readonly indexed: false;
|
|
141
|
+
}];
|
|
112
142
|
}];
|
|
113
143
|
export declare const ERC20_ABI: readonly [{
|
|
114
144
|
readonly name: "balanceOf";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,aAAa,IAAI,CAAC;AAG/B,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,aAAa,IAAI,CAAC;AAG/B,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmFpB,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCZ,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;;;;;;;CAMhB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
// USDC has 6 decimals
|
|
5
5
|
export const USDC_DECIMALS = 6;
|
|
6
|
-
// Session fee: $0.01 USDC paid to marketplace wallet on channel open
|
|
7
|
-
export const SESSION_FEE = 10000n; // 0.01 USDC (6 decimals)
|
|
8
6
|
// EIP-712 Domain
|
|
9
7
|
export const EIP712_DOMAIN = {
|
|
10
8
|
name: 'DrainChannel',
|
|
@@ -62,6 +60,16 @@ export const DRAIN_CHANNEL_ABI = [
|
|
|
62
60
|
inputs: [{ name: 'channelId', type: 'bytes32' }],
|
|
63
61
|
outputs: [{ type: 'uint256' }],
|
|
64
62
|
},
|
|
63
|
+
{
|
|
64
|
+
name: 'cooperativeClose',
|
|
65
|
+
type: 'function',
|
|
66
|
+
inputs: [
|
|
67
|
+
{ name: 'channelId', type: 'bytes32' },
|
|
68
|
+
{ name: 'finalAmount', type: 'uint256' },
|
|
69
|
+
{ name: 'providerSignature', type: 'bytes' },
|
|
70
|
+
],
|
|
71
|
+
outputs: [],
|
|
72
|
+
},
|
|
65
73
|
{
|
|
66
74
|
anonymous: false,
|
|
67
75
|
name: 'ChannelOpened',
|
|
@@ -74,6 +82,16 @@ export const DRAIN_CHANNEL_ABI = [
|
|
|
74
82
|
{ name: 'expiry', type: 'uint256', indexed: false },
|
|
75
83
|
],
|
|
76
84
|
},
|
|
85
|
+
{
|
|
86
|
+
anonymous: false,
|
|
87
|
+
name: 'ChannelClosed',
|
|
88
|
+
type: 'event',
|
|
89
|
+
inputs: [
|
|
90
|
+
{ name: 'channelId', type: 'bytes32', indexed: true },
|
|
91
|
+
{ name: 'consumer', type: 'address', indexed: true },
|
|
92
|
+
{ name: 'refund', type: 'uint256', indexed: false },
|
|
93
|
+
],
|
|
94
|
+
},
|
|
77
95
|
];
|
|
78
96
|
export const ERC20_ABI = [
|
|
79
97
|
{
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,58 +7,59 @@
|
|
|
7
7
|
*/
|
|
8
8
|
const args = process.argv.slice(2);
|
|
9
9
|
if (args.includes('--help') || args.includes('-h')) {
|
|
10
|
-
console.log(`
|
|
11
|
-
drain-mcp — MCP server for the DRAIN payment protocol
|
|
12
|
-
|
|
13
|
-
WHAT IS THIS?
|
|
14
|
-
drain-mcp is a Model Context Protocol (MCP) server. It runs inside any
|
|
15
|
-
MCP-compatible client and gives agents tools to discover service providers,
|
|
16
|
-
open USDC payment channels on Polygon, and call any service — LLM, image
|
|
17
|
-
generation, web scraping, VPN, and more. Pay per use, no API keys.
|
|
18
|
-
|
|
19
|
-
COMPATIBLE CLIENTS:
|
|
20
|
-
Cursor, Claude Desktop, Cline, Windsurf, OpenAI Agents, or any MCP client.
|
|
21
|
-
|
|
22
|
-
CONFIGURATION:
|
|
23
|
-
{
|
|
24
|
-
"mcpServers": {
|
|
25
|
-
"drain": {
|
|
26
|
-
"command": "drain-mcp",
|
|
27
|
-
"env": {
|
|
28
|
-
"DRAIN_PRIVATE_KEY": "0x_your_polygon_wallet_private_key"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
ENVIRONMENT VARIABLES:
|
|
35
|
-
DRAIN_PRIVATE_KEY (required) Polygon wallet private key
|
|
36
|
-
DRAIN_CHAIN_ID 137 (Polygon, default) or 80002 (Amoy testnet)
|
|
37
|
-
DRAIN_RPC_URL Custom RPC endpoint
|
|
38
|
-
DRAIN_DIRECTORY_URL Provider directory URL
|
|
39
|
-
DRAIN_MARKETPLACE_URL Marketplace base URL
|
|
40
|
-
|
|
41
|
-
MCP TOOLS PROVIDED:
|
|
42
|
-
drain_providers List service providers (filter by model, category)
|
|
43
|
-
drain_provider_info Provider details + usage instructions (docs)
|
|
44
|
-
drain_balance Check wallet USDC balance and allowance
|
|
45
|
-
drain_approve Approve USDC spending for the DRAIN contract
|
|
46
|
-
drain_open_channel Open a payment channel with a provider
|
|
47
|
-
drain_close_channel
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
10
|
+
console.log(`
|
|
11
|
+
drain-mcp — MCP server for the DRAIN payment protocol
|
|
12
|
+
|
|
13
|
+
WHAT IS THIS?
|
|
14
|
+
drain-mcp is a Model Context Protocol (MCP) server. It runs inside any
|
|
15
|
+
MCP-compatible client and gives agents tools to discover service providers,
|
|
16
|
+
open USDC payment channels on Polygon, and call any service — LLM, image
|
|
17
|
+
generation, web scraping, VPN, and more. Pay per use, no API keys.
|
|
18
|
+
|
|
19
|
+
COMPATIBLE CLIENTS:
|
|
20
|
+
Cursor, Claude Desktop, Cline, Windsurf, OpenAI Agents, or any MCP client.
|
|
21
|
+
|
|
22
|
+
CONFIGURATION:
|
|
23
|
+
{
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"drain": {
|
|
26
|
+
"command": "drain-mcp",
|
|
27
|
+
"env": {
|
|
28
|
+
"DRAIN_PRIVATE_KEY": "0x_your_polygon_wallet_private_key"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ENVIRONMENT VARIABLES:
|
|
35
|
+
DRAIN_PRIVATE_KEY (required) Polygon wallet private key
|
|
36
|
+
DRAIN_CHAIN_ID 137 (Polygon, default) or 80002 (Amoy testnet)
|
|
37
|
+
DRAIN_RPC_URL Custom RPC endpoint
|
|
38
|
+
DRAIN_DIRECTORY_URL Provider directory URL
|
|
39
|
+
DRAIN_MARKETPLACE_URL Marketplace base URL
|
|
40
|
+
|
|
41
|
+
MCP TOOLS PROVIDED:
|
|
42
|
+
drain_providers List service providers (filter by model, category)
|
|
43
|
+
drain_provider_info Provider details + usage instructions (docs)
|
|
44
|
+
drain_balance Check wallet USDC balance and allowance
|
|
45
|
+
drain_approve Approve USDC spending for the DRAIN contract
|
|
46
|
+
drain_open_channel Open a payment channel with a provider
|
|
47
|
+
drain_close_channel Close expired channel and reclaim funds
|
|
48
|
+
drain_cooperative_close Close channel immediately (provider co-signs)
|
|
49
|
+
drain_channel_status Check channel status and balance
|
|
50
|
+
drain_channels List all known channels with status
|
|
51
|
+
drain_chat Send a paid request to a provider
|
|
52
|
+
|
|
53
|
+
PROVIDER CATEGORIES:
|
|
54
|
+
llm, image, audio, code, scraping, vpn, multi-modal, other
|
|
55
|
+
Each provider has a docs endpoint explaining how to format requests.
|
|
56
|
+
|
|
57
|
+
LINKS:
|
|
58
|
+
Marketplace: https://handshake58.com
|
|
59
|
+
Docs: https://handshake58.com/skill.md
|
|
60
|
+
Providers: https://handshake58.com/api/mcp/providers
|
|
61
|
+
npm: https://www.npmjs.com/package/drain-mcp
|
|
62
|
+
Source: https://github.com/kimbo128/DRAIN
|
|
62
63
|
`);
|
|
63
64
|
process.exit(0);
|
|
64
65
|
}
|
|
@@ -72,7 +73,7 @@ import { ProviderService } from './services/provider.js';
|
|
|
72
73
|
import { InferenceService } from './services/inference.js';
|
|
73
74
|
import { providerTools, listProviders, getProvider } from './tools/providers.js';
|
|
74
75
|
import { balanceTools, getBalance, approveUsdc } from './tools/balance.js';
|
|
75
|
-
import { channelTools, openChannel, closeChannel, getChannelStatus, listChannels } from './tools/channel.js';
|
|
76
|
+
import { channelTools, openChannel, closeChannel, cooperativeClose, getChannelStatus, listChannels } from './tools/channel.js';
|
|
76
77
|
import { chatTools, chat } from './tools/chat.js';
|
|
77
78
|
// ============================================================================
|
|
78
79
|
// SERVER SETUP
|
|
@@ -84,7 +85,6 @@ class DrainMcpServer {
|
|
|
84
85
|
channelService;
|
|
85
86
|
providerService;
|
|
86
87
|
inferenceService;
|
|
87
|
-
feeWallet = null;
|
|
88
88
|
constructor() {
|
|
89
89
|
// Load configuration
|
|
90
90
|
this.config = loadConfig();
|
|
@@ -139,11 +139,14 @@ class DrainMcpServer {
|
|
|
139
139
|
break;
|
|
140
140
|
// Channel tools
|
|
141
141
|
case 'drain_open_channel':
|
|
142
|
-
result = await openChannel(this.channelService, this.providerService,
|
|
142
|
+
result = await openChannel(this.channelService, this.providerService, args);
|
|
143
143
|
break;
|
|
144
144
|
case 'drain_close_channel':
|
|
145
145
|
result = await closeChannel(this.channelService, args);
|
|
146
146
|
break;
|
|
147
|
+
case 'drain_cooperative_close':
|
|
148
|
+
result = await cooperativeClose(this.channelService, this.providerService, args);
|
|
149
|
+
break;
|
|
147
150
|
case 'drain_channel_status':
|
|
148
151
|
result = await getChannelStatus(this.channelService, args);
|
|
149
152
|
break;
|
|
@@ -211,28 +214,7 @@ class DrainMcpServer {
|
|
|
211
214
|
}
|
|
212
215
|
});
|
|
213
216
|
}
|
|
214
|
-
/**
|
|
215
|
-
* Fetch marketplace fee wallet (cached for server lifetime)
|
|
216
|
-
*/
|
|
217
|
-
async loadFeeWallet() {
|
|
218
|
-
try {
|
|
219
|
-
const url = `${this.config.marketplaceBaseUrl}/api/directory/config`;
|
|
220
|
-
const res = await fetch(url);
|
|
221
|
-
if (res.ok) {
|
|
222
|
-
const cfg = await res.json();
|
|
223
|
-
if (cfg.feeWallet && /^0x[a-fA-F0-9]{40}$/.test(cfg.feeWallet)) {
|
|
224
|
-
this.feeWallet = cfg.feeWallet;
|
|
225
|
-
console.error(`Fee wallet: ${this.feeWallet}`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch {
|
|
230
|
-
console.error('Could not load marketplace config — session fees disabled');
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
217
|
async run() {
|
|
234
|
-
// Load marketplace fee wallet before accepting requests
|
|
235
|
-
await this.loadFeeWallet();
|
|
236
218
|
const transport = new StdioServerTransport();
|
|
237
219
|
await this.server.connect(transport);
|
|
238
220
|
// Log startup info to stderr (not stdout, which is for MCP protocol)
|
|
@@ -257,7 +239,7 @@ catch (error) {
|
|
|
257
239
|
console.error(`\n drain-mcp: ${msg}\n`);
|
|
258
240
|
console.error(' Setup:');
|
|
259
241
|
console.error(' 1. Create a Polygon wallet (MetaMask, Rabby, or any EVM wallet)');
|
|
260
|
-
console.error(' 2. Fund it with $
|
|
242
|
+
console.error(' 2. Fund it with $5+ USDC (gas provided free via handshake58.com/api/gas-station)');
|
|
261
243
|
console.error(' 3. Add drain-mcp to your MCP client config:\n');
|
|
262
244
|
console.error(' {');
|
|
263
245
|
console.error(' "mcpServers": {');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAoB,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAElD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,cAAc;IACV,MAAM,CAAS;IACf,MAAM,CAAc;IACpB,aAAa,CAAgB;IAC7B,cAAc,CAAiB;IAC/B,eAAe,CAAkB;IACjC,gBAAgB,CAAmB;IAE3C;QACE,qBAAqB;QACrB,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAE3B,iBAAiB;QACjB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3E,sBAAsB;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElE,oBAAoB;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,EAAE;aACd;SACF,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE;gBACL,GAAG,aAAa;gBAChB,GAAG,YAAY;gBACf,GAAG,YAAY;gBACf,GAAG,SAAS;aACb;SACF,CAAC,CAAC,CAAC;QAEJ,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC;gBACH,IAAI,MAAc,CAAC;gBAEnB,QAAQ,IAAI,EAAE,CAAC;oBACb,iBAAiB;oBACjB,KAAK,iBAAiB;wBACpB,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAmE,CAAC,CAAC;wBACxH,MAAM;oBACR,KAAK,qBAAqB;wBACxB,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,IAA8B,CAAC,CAAC;wBACjF,MAAM;oBAER,gBAAgB;oBAChB,KAAK,eAAe;wBAClB,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC3D,MAAM;oBACR,KAAK,eAAe;wBAClB,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAA2B,CAAC,CAAC;wBAC5E,MAAM;oBAER,gBAAgB;oBAChB,KAAK,oBAAoB;wBACvB,MAAM,GAAG,MAAM,WAAW,CACxB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAA8D,CAC/D,CAAC;wBACF,MAAM;oBACR,KAAK,qBAAqB;wBACxB,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAA6B,CAAC,CAAC;wBAChF,MAAM;oBACR,KAAK,yBAAyB;wBAC5B,MAAM,GAAG,MAAM,gBAAgB,CAC7B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAA6B,CAC9B,CAAC;wBACF,MAAM;oBACR,KAAK,sBAAsB;wBACzB,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAA6B,CAAC,CAAC;wBACpF,MAAM;oBACR,KAAK,gBAAgB;wBACnB,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACjD,MAAM;oBAER,aAAa;oBACb,KAAK,YAAY;wBACf,MAAM,GAAG,MAAM,IAAI,CACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,gBAAgB,EACrB,IAMC,CACF,CAAC;wBACF,MAAM;oBAER;wBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAC1C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;oBACtD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACrE,SAAS,EAAE;gBACT;oBACE,GAAG,EAAE,gBAAgB;oBACrB,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,4DAA4D;oBACzE,QAAQ,EAAE,eAAe;iBAC1B;gBACD;oBACE,GAAG,EAAE,mBAAmB;oBACxB,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,qEAAqE;oBAClF,QAAQ,EAAE,eAAe;iBAC1B;aACF;SACF,CAAC,CAAC,CAAC;QAEJ,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAE/B,IAAI,CAAC;gBACH,IAAI,OAAe,CAAC;gBAEpB,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,gBAAgB;wBACnB,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5D,MAAM;oBACR,KAAK,mBAAmB;wBACtB,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;wBACxD,MAAM;oBACR;wBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC;gBAED,OAAO;oBACL,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErC,qEAAqE;QACrE,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAChG,CAAC;CACF;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QACtG,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAChG,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -66,6 +66,15 @@ export declare class ChannelService {
|
|
|
66
66
|
txHash: Hash;
|
|
67
67
|
refundAmount: string;
|
|
68
68
|
}>;
|
|
69
|
+
/**
|
|
70
|
+
* Cooperative close: ask provider for a close signature, then close on-chain immediately
|
|
71
|
+
*/
|
|
72
|
+
cooperativeCloseChannel(channelId: Hash, providerApiUrl: string): Promise<{
|
|
73
|
+
txHash: Hash;
|
|
74
|
+
refundAmount: string;
|
|
75
|
+
payout: string;
|
|
76
|
+
fee: string;
|
|
77
|
+
}>;
|
|
69
78
|
/**
|
|
70
79
|
* Get channel details (raw)
|
|
71
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/services/channel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/services/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/services/channel.js
CHANGED
|
@@ -153,6 +153,47 @@ export class ChannelService {
|
|
|
153
153
|
refundAmount: formatUnits(refundAmount, USDC_DECIMALS)
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Cooperative close: ask provider for a close signature, then close on-chain immediately
|
|
158
|
+
*/
|
|
159
|
+
async cooperativeCloseChannel(channelId, providerApiUrl) {
|
|
160
|
+
const res = await fetch(`${providerApiUrl}/v1/close-channel`, {
|
|
161
|
+
method: 'POST',
|
|
162
|
+
headers: { 'Content-Type': 'application/json' },
|
|
163
|
+
body: JSON.stringify({ channelId }),
|
|
164
|
+
signal: AbortSignal.timeout(15000),
|
|
165
|
+
});
|
|
166
|
+
if (!res.ok) {
|
|
167
|
+
const body = await res.text().catch(() => '');
|
|
168
|
+
throw new Error(`Provider refused cooperative close (HTTP ${res.status}): ${body.slice(0, 200)}`);
|
|
169
|
+
}
|
|
170
|
+
const { finalAmount, signature } = await res.json();
|
|
171
|
+
const channelData = await this.getChannelRaw(channelId);
|
|
172
|
+
const finalAmountBn = BigInt(finalAmount);
|
|
173
|
+
const refund = channelData.deposit - finalAmountBn;
|
|
174
|
+
const payout = finalAmountBn - channelData.claimed;
|
|
175
|
+
const feeBps = 200n;
|
|
176
|
+
const fee = (payout * feeBps) / 10000n;
|
|
177
|
+
const hash = await this.walletClient.writeContract({
|
|
178
|
+
account: this.account,
|
|
179
|
+
address: this.config.drainAddress,
|
|
180
|
+
abi: DRAIN_CHANNEL_ABI,
|
|
181
|
+
functionName: 'cooperativeClose',
|
|
182
|
+
args: [channelId, finalAmountBn, signature],
|
|
183
|
+
chain: this.config.chain,
|
|
184
|
+
});
|
|
185
|
+
await this.publicClient.waitForTransactionReceipt({ hash });
|
|
186
|
+
this.nonces.delete(channelId);
|
|
187
|
+
this.spending.delete(channelId);
|
|
188
|
+
this.channelMeta.delete(channelId);
|
|
189
|
+
this.saveChannelMeta();
|
|
190
|
+
return {
|
|
191
|
+
txHash: hash,
|
|
192
|
+
refundAmount: formatUnits(refund, USDC_DECIMALS),
|
|
193
|
+
payout: formatUnits(payout, USDC_DECIMALS),
|
|
194
|
+
fee: formatUnits(fee, USDC_DECIMALS),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
156
197
|
/**
|
|
157
198
|
* Get channel details (raw)
|
|
158
199
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/services/channel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/services/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/services/wallet.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/tools/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/tools/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAGD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;IAkCxB,CAAC"}
|
package/dist/tools/balance.js
CHANGED
|
@@ -12,24 +12,42 @@ export async function getBalance(walletService, config) {
|
|
|
12
12
|
const network = config.chainId === 137 ? 'Polygon Mainnet' : 'Polygon Amoy Testnet';
|
|
13
13
|
const hasGas = parseFloat(nativeBalance.formatted) > 0.01;
|
|
14
14
|
const hasAllowance = parseFloat(allowance.formatted) > 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
**Address:** \`${address}\`
|
|
18
|
-
**Network:** ${network}
|
|
19
|
-
|
|
20
|
-
## Balances
|
|
21
|
-
- **USDC:** $${usdcBalance.formatted}
|
|
22
|
-
- **POL (for gas):** ${nativeBalance.formatted} POL
|
|
23
|
-
|
|
24
|
-
## DRAIN Contract
|
|
25
|
-
- **Allowance:** $${allowance.formatted} USDC
|
|
26
|
-
- **Contract:** \`${config.drainAddress}\`
|
|
27
|
-
|
|
28
|
-
## Status
|
|
29
|
-
${parseFloat(usdcBalance.formatted) > 0 ? '✅' : '⚠️'} USDC Balance: ${parseFloat(usdcBalance.formatted) > 0 ? 'OK' : 'LOW - need USDC to open channels'}
|
|
30
|
-
${hasGas ? '✅' : '⚠️'} Gas: ${hasGas ? 'OK' :
|
|
31
|
-
${hasAllowance ? '✅' : 'ℹ️'} Allowance: ${hasAllowance ? 'Approved' : 'Not yet approved - will need to approve before opening channel'}
|
|
15
|
+
let result = `# Wallet Status
|
|
16
|
+
|
|
17
|
+
**Address:** \`${address}\`
|
|
18
|
+
**Network:** ${network}
|
|
19
|
+
|
|
20
|
+
## Balances
|
|
21
|
+
- **USDC:** $${usdcBalance.formatted}
|
|
22
|
+
- **POL (for gas):** ${nativeBalance.formatted} POL
|
|
23
|
+
|
|
24
|
+
## DRAIN Contract
|
|
25
|
+
- **Allowance:** $${allowance.formatted} USDC
|
|
26
|
+
- **Contract:** \`${config.drainAddress}\`
|
|
27
|
+
|
|
28
|
+
## Status
|
|
29
|
+
${parseFloat(usdcBalance.formatted) > 0 ? '✅' : '⚠️'} USDC Balance: ${parseFloat(usdcBalance.formatted) > 0 ? 'OK' : 'LOW - need USDC to open channels. Get free credits with an invite code at handshake58.com/join/<code>'}
|
|
30
|
+
${hasGas ? '✅' : '⚠️'} Gas: ${hasGas ? 'OK' : `LOW - need POL for transactions${parseFloat(usdcBalance.formatted) >= 5 ? ' — requesting from Gas Station...' : '. Fund with $5+ USDC and gas is provided free, or use an invite code at handshake58.com/join/<code>'}`}
|
|
31
|
+
${hasAllowance ? '✅' : 'ℹ️'} Allowance: ${hasAllowance ? 'Approved' : 'Not yet approved - will need to approve before opening channel'}
|
|
32
32
|
`;
|
|
33
|
+
if (!hasGas && parseFloat(usdcBalance.formatted) >= 5) {
|
|
34
|
+
try {
|
|
35
|
+
const gasRes = await fetch(`${config.marketplaceBaseUrl || 'https://handshake58.com'}/api/gas-station`, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
headers: { 'Content-Type': 'application/json' },
|
|
38
|
+
body: JSON.stringify({ address }),
|
|
39
|
+
});
|
|
40
|
+
const gasData = await gasRes.json();
|
|
41
|
+
if (gasRes.ok && gasData.success) {
|
|
42
|
+
result += `\n🔋 **Gas Station:** 0.1 POL sent automatically! TX: \`${gasData.txHash}\`\nWait ~5 seconds, then proceed with drain_approve and drain_open_channel.`;
|
|
43
|
+
}
|
|
44
|
+
else if (gasData.error) {
|
|
45
|
+
result += `\nℹ️ Gas Station: ${gasData.error}`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch { }
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
33
51
|
}
|
|
34
52
|
/**
|
|
35
53
|
* Approve USDC spending
|
|
@@ -49,13 +67,13 @@ export async function approveUsdc(walletService, args) {
|
|
|
49
67
|
export const balanceTools = [
|
|
50
68
|
{
|
|
51
69
|
name: 'drain_balance',
|
|
52
|
-
description: `Check wallet balance, USDC allowance, and readiness for DRAIN protocol.
|
|
53
|
-
|
|
54
|
-
Use this to verify:
|
|
55
|
-
- You have enough USDC to open channels
|
|
56
|
-
- You have enough POL for gas fees
|
|
57
|
-
- USDC is approved for the DRAIN contract
|
|
58
|
-
|
|
70
|
+
description: `Check wallet balance, USDC allowance, and readiness for DRAIN protocol.
|
|
71
|
+
|
|
72
|
+
Use this to verify:
|
|
73
|
+
- You have enough USDC to open channels
|
|
74
|
+
- You have enough POL for gas fees
|
|
75
|
+
- USDC is approved for the DRAIN contract
|
|
76
|
+
|
|
59
77
|
Returns: Wallet address, balances, and status indicators.`,
|
|
60
78
|
inputSchema: {
|
|
61
79
|
type: 'object',
|
|
@@ -64,11 +82,11 @@ Returns: Wallet address, balances, and status indicators.`,
|
|
|
64
82
|
},
|
|
65
83
|
{
|
|
66
84
|
name: 'drain_approve',
|
|
67
|
-
description: `Approve USDC spending for the DRAIN contract.
|
|
68
|
-
|
|
69
|
-
Required before opening payment channels. Only needed once — after approval you can open unlimited channels.
|
|
70
|
-
If no amount is specified, approves unlimited spending (recommended).
|
|
71
|
-
|
|
85
|
+
description: `Approve USDC spending for the DRAIN contract.
|
|
86
|
+
|
|
87
|
+
Required before opening payment channels. Only needed once — after approval you can open unlimited channels.
|
|
88
|
+
If no amount is specified, approves unlimited spending (recommended).
|
|
89
|
+
|
|
72
90
|
Returns: Transaction hash of the approval.`,
|
|
73
91
|
inputSchema: {
|
|
74
92
|
type: 'object',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/tools/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,aAA4B,EAC5B,MAAmB;IAEnB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;IAErD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACpF,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC1D,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/tools/balance.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/channel.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Channel Tools
|
|
3
3
|
*/
|
|
4
|
-
import type { Address } from 'viem';
|
|
5
4
|
import type { ChannelService } from '../services/channel.js';
|
|
6
5
|
import type { ProviderService } from '../services/provider.js';
|
|
7
|
-
|
|
8
|
-
export declare function openChannel(channelService: ChannelService, providerService: ProviderService, walletService: WalletService, feeWallet: Address | null, args: {
|
|
6
|
+
export declare function openChannel(channelService: ChannelService, providerService: ProviderService, args: {
|
|
9
7
|
provider: string;
|
|
10
8
|
amount: string;
|
|
11
9
|
duration: string;
|
|
@@ -13,6 +11,9 @@ export declare function openChannel(channelService: ChannelService, providerServ
|
|
|
13
11
|
export declare function closeChannel(channelService: ChannelService, args: {
|
|
14
12
|
channelId: string;
|
|
15
13
|
}): Promise<string>;
|
|
14
|
+
export declare function cooperativeClose(channelService: ChannelService, providerService: ProviderService, args: {
|
|
15
|
+
channelId: string;
|
|
16
|
+
}): Promise<string>;
|
|
16
17
|
export declare function getChannelStatus(channelService: ChannelService, args: {
|
|
17
18
|
channelId: string;
|
|
18
19
|
}): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/tools/channel.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/tools/channel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAuB/D,wBAAsB,WAAW,CAC/B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,MAAM,CAAC,CAsEjB;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2GxB,CAAC"}
|