pay-lobster 1.1.4 → 1.3.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.
- package/dist/agent.d.ts +15 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +50 -6
- package/dist/agent.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/swap.d.ts +54 -0
- package/dist/swap.d.ts.map +1 -0
- package/dist/swap.js +148 -0
- package/dist/swap.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/usernames.d.ts +35 -0
- package/dist/usernames.d.ts.map +1 -0
- package/dist/usernames.js +142 -0
- package/dist/usernames.js.map +1 -0
- package/lib/agent.ts +60 -6
- package/lib/index.ts +3 -0
- package/lib/swap.ts +216 -0
- package/lib/types.ts +1 -0
- package/lib/usernames.ts +174 -0
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Now with REAL on-chain contracts! 🦞
|
|
4
4
|
*/
|
|
5
5
|
import type { LobsterConfig, Wallet, Transfer, Escrow, TrustScore, Agent, TransferOptions, EscrowOptions, DiscoverOptions, AutonomousConfig } from './types';
|
|
6
|
+
import { SwapOptions, SwapResult, SwapQuote } from './swap';
|
|
6
7
|
export declare class LobsterAgent {
|
|
7
8
|
private config;
|
|
8
9
|
private wallet?;
|
|
@@ -136,5 +137,19 @@ export declare class LobsterAgent {
|
|
|
136
137
|
direction?: string;
|
|
137
138
|
since?: string;
|
|
138
139
|
}): Promise<Transfer[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Get a swap quote without executing
|
|
142
|
+
*/
|
|
143
|
+
getSwapQuote(options: SwapOptions): Promise<SwapQuote>;
|
|
144
|
+
/**
|
|
145
|
+
* Execute a token swap (ETH ↔ USDC, etc.)
|
|
146
|
+
* Uses 0x API for best execution across DEXs
|
|
147
|
+
*/
|
|
148
|
+
swap(options: SwapOptions): Promise<SwapResult>;
|
|
149
|
+
/**
|
|
150
|
+
* Quick swap helpers
|
|
151
|
+
*/
|
|
152
|
+
swapEthToUsdc(ethAmount: string): Promise<SwapResult>;
|
|
153
|
+
swapUsdcToEth(usdcAmount: string): Promise<SwapResult>;
|
|
139
154
|
}
|
|
140
155
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAU,EACV,KAAK,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -8,6 +8,8 @@ exports.LobsterAgent = void 0;
|
|
|
8
8
|
const ethers_1 = require("ethers");
|
|
9
9
|
const contracts_1 = require("./contracts");
|
|
10
10
|
const analytics_1 = require("./analytics");
|
|
11
|
+
const usernames_1 = require("./usernames");
|
|
12
|
+
const swap_1 = require("./swap");
|
|
11
13
|
const BASE_RPC = 'https://mainnet.base.org';
|
|
12
14
|
const USDC_BASE = contracts_1.CONTRACTS.usdc;
|
|
13
15
|
class LobsterAgent {
|
|
@@ -135,9 +137,17 @@ class LobsterAgent {
|
|
|
135
137
|
if (!this.provider) {
|
|
136
138
|
throw new Error('Provider not initialized. Call initialize() first.');
|
|
137
139
|
}
|
|
138
|
-
//
|
|
140
|
+
// Resolve username/basename to address
|
|
141
|
+
let recipientAddress = options.to;
|
|
142
|
+
let resolvedName;
|
|
139
143
|
if (!ethers_1.ethers.isAddress(options.to)) {
|
|
140
|
-
|
|
144
|
+
const resolved = await (0, usernames_1.resolveUsername)(options.to, this.provider);
|
|
145
|
+
if (!resolved) {
|
|
146
|
+
throw new Error(`Could not resolve "${options.to}" to an address. Try @username, name.base.eth, or 0x...`);
|
|
147
|
+
}
|
|
148
|
+
recipientAddress = resolved.address;
|
|
149
|
+
resolvedName = resolved.name;
|
|
150
|
+
console.log(`🔍 Resolved ${options.to} → ${recipientAddress} (via ${resolved.source})`);
|
|
141
151
|
}
|
|
142
152
|
// Parse amount (USDC has 6 decimals)
|
|
143
153
|
const amount = ethers_1.ethers.parseUnits(options.amount, 6);
|
|
@@ -148,22 +158,24 @@ class LobsterAgent {
|
|
|
148
158
|
const balanceFormatted = ethers_1.ethers.formatUnits(balance, 6);
|
|
149
159
|
throw new Error(`Insufficient balance. Have: ${balanceFormatted} USDC, Need: ${options.amount} USDC`);
|
|
150
160
|
}
|
|
151
|
-
|
|
161
|
+
const displayTo = resolvedName || recipientAddress;
|
|
162
|
+
console.log(`🦞 Sending ${options.amount} USDC to ${displayTo}...`);
|
|
152
163
|
try {
|
|
153
164
|
// Execute the transfer
|
|
154
|
-
const tx = await usdc.transfer(
|
|
165
|
+
const tx = await usdc.transfer(recipientAddress, amount);
|
|
155
166
|
console.log(`📤 Transaction submitted: ${tx.hash}`);
|
|
156
167
|
// Wait for confirmation
|
|
157
168
|
const receipt = await tx.wait();
|
|
158
169
|
console.log(`✅ Confirmed in block ${receipt.blockNumber}`);
|
|
159
170
|
// Track successful transaction
|
|
160
|
-
analytics_1.analytics.trackTransaction('send', options.amount,
|
|
171
|
+
analytics_1.analytics.trackTransaction('send', options.amount, recipientAddress, tx.hash);
|
|
161
172
|
return {
|
|
162
173
|
id: tx.hash,
|
|
163
174
|
hash: tx.hash,
|
|
164
175
|
status: receipt.status === 1 ? 'confirmed' : 'failed',
|
|
165
176
|
amount: options.amount,
|
|
166
|
-
to:
|
|
177
|
+
to: recipientAddress,
|
|
178
|
+
toName: resolvedName,
|
|
167
179
|
from: this.signer.address,
|
|
168
180
|
memo: options.memo,
|
|
169
181
|
createdAt: new Date().toISOString()
|
|
@@ -466,6 +478,38 @@ class LobsterAgent {
|
|
|
466
478
|
return [];
|
|
467
479
|
}
|
|
468
480
|
}
|
|
481
|
+
// ============================================
|
|
482
|
+
// SWAP METHODS (Powered by 0x)
|
|
483
|
+
// ============================================
|
|
484
|
+
/**
|
|
485
|
+
* Get a swap quote without executing
|
|
486
|
+
*/
|
|
487
|
+
async getSwapQuote(options) {
|
|
488
|
+
return (0, swap_1.getSwapQuote)(options);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Execute a token swap (ETH ↔ USDC, etc.)
|
|
492
|
+
* Uses 0x API for best execution across DEXs
|
|
493
|
+
*/
|
|
494
|
+
async swap(options) {
|
|
495
|
+
if (!this.signer) {
|
|
496
|
+
throw new Error('No signer available. Provide privateKey to execute swaps.');
|
|
497
|
+
}
|
|
498
|
+
console.log(`🦞 Initiating swap: ${options.amount} ${options.from} → ${options.to}`);
|
|
499
|
+
const result = await (0, swap_1.executeSwap)(this.signer, options);
|
|
500
|
+
// Track the swap
|
|
501
|
+
analytics_1.analytics.trackTransaction('swap', options.amount, `${options.from}→${options.to}`, result.hash);
|
|
502
|
+
return result;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Quick swap helpers
|
|
506
|
+
*/
|
|
507
|
+
async swapEthToUsdc(ethAmount) {
|
|
508
|
+
return this.swap({ from: 'ETH', to: 'USDC', amount: ethAmount });
|
|
509
|
+
}
|
|
510
|
+
async swapUsdcToEth(usdcAmount) {
|
|
511
|
+
return this.swap({ from: 'USDC', to: 'ETH', amount: usdcAmount });
|
|
512
|
+
}
|
|
469
513
|
}
|
|
470
514
|
exports.LobsterAgent = LobsterAgent;
|
|
471
515
|
//# sourceMappingURL=agent.js.map
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,5 +7,8 @@
|
|
|
7
7
|
export { LobsterAgent } from './agent';
|
|
8
8
|
export { createLobsterAgent, quickStart } from './easy';
|
|
9
9
|
export * from './types';
|
|
10
|
+
export { resolveUsername, registerUsername, getUsername, listUsernames } from './usernames';
|
|
11
|
+
export { getSwapQuote, executeSwap, getPrice, getSupportedTokens } from './swap';
|
|
12
|
+
export type { SwapQuote, SwapOptions, SwapResult } from './swap';
|
|
10
13
|
export { LobsterAgent as default } from './agent';
|
|
11
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxD,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACjF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,13 +20,23 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
20
20
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.default = exports.quickStart = exports.createLobsterAgent = exports.LobsterAgent = void 0;
|
|
23
|
+
exports.default = exports.getSupportedTokens = exports.getPrice = exports.executeSwap = exports.getSwapQuote = exports.listUsernames = exports.getUsername = exports.registerUsername = exports.resolveUsername = exports.quickStart = exports.createLobsterAgent = exports.LobsterAgent = void 0;
|
|
24
24
|
var agent_1 = require("./agent");
|
|
25
25
|
Object.defineProperty(exports, "LobsterAgent", { enumerable: true, get: function () { return agent_1.LobsterAgent; } });
|
|
26
26
|
var easy_1 = require("./easy");
|
|
27
27
|
Object.defineProperty(exports, "createLobsterAgent", { enumerable: true, get: function () { return easy_1.createLobsterAgent; } });
|
|
28
28
|
Object.defineProperty(exports, "quickStart", { enumerable: true, get: function () { return easy_1.quickStart; } });
|
|
29
29
|
__exportStar(require("./types"), exports);
|
|
30
|
+
var usernames_1 = require("./usernames");
|
|
31
|
+
Object.defineProperty(exports, "resolveUsername", { enumerable: true, get: function () { return usernames_1.resolveUsername; } });
|
|
32
|
+
Object.defineProperty(exports, "registerUsername", { enumerable: true, get: function () { return usernames_1.registerUsername; } });
|
|
33
|
+
Object.defineProperty(exports, "getUsername", { enumerable: true, get: function () { return usernames_1.getUsername; } });
|
|
34
|
+
Object.defineProperty(exports, "listUsernames", { enumerable: true, get: function () { return usernames_1.listUsernames; } });
|
|
35
|
+
var swap_1 = require("./swap");
|
|
36
|
+
Object.defineProperty(exports, "getSwapQuote", { enumerable: true, get: function () { return swap_1.getSwapQuote; } });
|
|
37
|
+
Object.defineProperty(exports, "executeSwap", { enumerable: true, get: function () { return swap_1.executeSwap; } });
|
|
38
|
+
Object.defineProperty(exports, "getPrice", { enumerable: true, get: function () { return swap_1.getPrice; } });
|
|
39
|
+
Object.defineProperty(exports, "getSupportedTokens", { enumerable: true, get: function () { return swap_1.getSupportedTokens; } });
|
|
30
40
|
// Default export for convenience
|
|
31
41
|
var agent_2 = require("./agent");
|
|
32
42
|
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return agent_2.LobsterAgent; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,+BAAwD;AAA/C,0GAAA,kBAAkB,OAAA;AAAE,kGAAA,UAAU,OAAA;AACvC,0CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,+BAAwD;AAA/C,0GAAA,kBAAkB,OAAA;AAAE,kGAAA,UAAU,OAAA;AACvC,0CAAwB;AACxB,yCAA4F;AAAnF,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,0GAAA,aAAa,OAAA;AACtE,+BAAiF;AAAxE,oGAAA,YAAY,OAAA;AAAE,mGAAA,WAAW,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAGhE,iCAAiC;AACjC,iCAAkD;AAAzC,gGAAA,YAAY,OAAW"}
|
package/dist/swap.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pay Lobster Swap Module
|
|
3
|
+
* Powered by 0x API for best execution across DEXs
|
|
4
|
+
*/
|
|
5
|
+
import { ethers } from 'ethers';
|
|
6
|
+
export interface SwapQuote {
|
|
7
|
+
sellToken: string;
|
|
8
|
+
buyToken: string;
|
|
9
|
+
sellAmount: string;
|
|
10
|
+
buyAmount: string;
|
|
11
|
+
price: string;
|
|
12
|
+
gas: string;
|
|
13
|
+
gasPrice: string;
|
|
14
|
+
estimatedGas: string;
|
|
15
|
+
to: string;
|
|
16
|
+
data: string;
|
|
17
|
+
value: string;
|
|
18
|
+
sources: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
proportion: string;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export interface SwapOptions {
|
|
24
|
+
from: string;
|
|
25
|
+
to: string;
|
|
26
|
+
amount: string;
|
|
27
|
+
slippage?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface SwapResult {
|
|
30
|
+
hash: string;
|
|
31
|
+
status: 'pending' | 'confirmed' | 'failed';
|
|
32
|
+
fromToken: string;
|
|
33
|
+
toToken: string;
|
|
34
|
+
fromAmount: string;
|
|
35
|
+
toAmount: string;
|
|
36
|
+
gasUsed?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get a swap quote from 0x API
|
|
40
|
+
*/
|
|
41
|
+
export declare function getSwapQuote(options: SwapOptions): Promise<SwapQuote>;
|
|
42
|
+
/**
|
|
43
|
+
* Execute a swap transaction
|
|
44
|
+
*/
|
|
45
|
+
export declare function executeSwap(signer: ethers.Wallet, options: SwapOptions): Promise<SwapResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a price quote without executing
|
|
48
|
+
*/
|
|
49
|
+
export declare function getPrice(from: string, to: string, amount?: string): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Supported tokens list
|
|
52
|
+
*/
|
|
53
|
+
export declare function getSupportedTokens(): string[];
|
|
54
|
+
//# sourceMappingURL=swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../lib/swap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAahC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAyD3E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAgErB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"}
|
package/dist/swap.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pay Lobster Swap Module
|
|
4
|
+
* Powered by 0x API for best execution across DEXs
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getSwapQuote = getSwapQuote;
|
|
8
|
+
exports.executeSwap = executeSwap;
|
|
9
|
+
exports.getPrice = getPrice;
|
|
10
|
+
exports.getSupportedTokens = getSupportedTokens;
|
|
11
|
+
const ethers_1 = require("ethers");
|
|
12
|
+
const ZEROX_API = 'https://base.api.0x.org';
|
|
13
|
+
// Common tokens on Base
|
|
14
|
+
const TOKENS = {
|
|
15
|
+
ETH: { address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', decimals: 18 },
|
|
16
|
+
WETH: { address: '0x4200000000000000000000000000000000000006', decimals: 18 },
|
|
17
|
+
USDC: { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },
|
|
18
|
+
USDbC: { address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', decimals: 6 },
|
|
19
|
+
DAI: { address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', decimals: 18 },
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Resolve token symbol to address and decimals
|
|
23
|
+
*/
|
|
24
|
+
function resolveToken(tokenOrSymbol) {
|
|
25
|
+
const upper = tokenOrSymbol.toUpperCase();
|
|
26
|
+
if (TOKENS[upper]) {
|
|
27
|
+
return { ...TOKENS[upper], symbol: upper };
|
|
28
|
+
}
|
|
29
|
+
// Assume it's an address
|
|
30
|
+
if (ethers_1.ethers.isAddress(tokenOrSymbol)) {
|
|
31
|
+
return { address: tokenOrSymbol, decimals: 18, symbol: tokenOrSymbol.slice(0, 8) };
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Unknown token: ${tokenOrSymbol}. Supported: ${Object.keys(TOKENS).join(', ')}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get a swap quote from 0x API
|
|
37
|
+
*/
|
|
38
|
+
async function getSwapQuote(options) {
|
|
39
|
+
const fromToken = resolveToken(options.from);
|
|
40
|
+
const toToken = resolveToken(options.to);
|
|
41
|
+
// Convert amount to smallest unit
|
|
42
|
+
const sellAmount = ethers_1.ethers.parseUnits(options.amount, fromToken.decimals).toString();
|
|
43
|
+
const slippage = options.slippage || 0.5;
|
|
44
|
+
const params = new URLSearchParams({
|
|
45
|
+
sellToken: fromToken.address,
|
|
46
|
+
buyToken: toToken.address,
|
|
47
|
+
sellAmount: sellAmount,
|
|
48
|
+
slippagePercentage: (slippage / 100).toString(),
|
|
49
|
+
});
|
|
50
|
+
const url = `${ZEROX_API}/swap/v1/quote?${params}`;
|
|
51
|
+
console.log(`🔍 Getting quote: ${options.amount} ${fromToken.symbol} → ${toToken.symbol}...`);
|
|
52
|
+
const response = await fetch(url);
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const error = await response.json().catch(() => ({}));
|
|
55
|
+
throw new Error(`0x API error: ${error.reason || error.message || response.statusText}`);
|
|
56
|
+
}
|
|
57
|
+
const quote = await response.json();
|
|
58
|
+
// Calculate human-readable amounts
|
|
59
|
+
const buyAmountFormatted = ethers_1.ethers.formatUnits(quote.buyAmount, toToken.decimals);
|
|
60
|
+
const sellAmountFormatted = ethers_1.ethers.formatUnits(quote.sellAmount, fromToken.decimals);
|
|
61
|
+
const price = (parseFloat(buyAmountFormatted) / parseFloat(sellAmountFormatted)).toFixed(6);
|
|
62
|
+
return {
|
|
63
|
+
sellToken: fromToken.symbol,
|
|
64
|
+
buyToken: toToken.symbol,
|
|
65
|
+
sellAmount: sellAmountFormatted,
|
|
66
|
+
buyAmount: buyAmountFormatted,
|
|
67
|
+
price: price,
|
|
68
|
+
gas: quote.gas,
|
|
69
|
+
gasPrice: quote.gasPrice,
|
|
70
|
+
estimatedGas: quote.estimatedGas,
|
|
71
|
+
to: quote.to,
|
|
72
|
+
data: quote.data,
|
|
73
|
+
value: quote.value,
|
|
74
|
+
sources: quote.sources?.filter((s) => parseFloat(s.proportion) > 0) || [],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Execute a swap transaction
|
|
79
|
+
*/
|
|
80
|
+
async function executeSwap(signer, options) {
|
|
81
|
+
const quote = await getSwapQuote(options);
|
|
82
|
+
const fromToken = resolveToken(options.from);
|
|
83
|
+
const toToken = resolveToken(options.to);
|
|
84
|
+
console.log(`\n🦞 Swap Quote:`);
|
|
85
|
+
console.log(` Sell: ${quote.sellAmount} ${quote.sellToken}`);
|
|
86
|
+
console.log(` Buy: ${quote.buyAmount} ${quote.buyToken}`);
|
|
87
|
+
console.log(` Rate: 1 ${quote.sellToken} = ${quote.price} ${quote.buyToken}`);
|
|
88
|
+
console.log(` Sources: ${quote.sources.map(s => s.name).join(', ') || 'Direct'}`);
|
|
89
|
+
// If selling ERC20 (not ETH), need to approve first
|
|
90
|
+
if (fromToken.address !== TOKENS.ETH.address) {
|
|
91
|
+
console.log(`\n📝 Checking allowance...`);
|
|
92
|
+
const erc20Abi = [
|
|
93
|
+
'function allowance(address owner, address spender) view returns (uint256)',
|
|
94
|
+
'function approve(address spender, uint256 amount) returns (bool)'
|
|
95
|
+
];
|
|
96
|
+
const tokenContract = new ethers_1.ethers.Contract(fromToken.address, erc20Abi, signer);
|
|
97
|
+
const allowance = await tokenContract.allowance(signer.address, quote.to);
|
|
98
|
+
const sellAmountWei = ethers_1.ethers.parseUnits(options.amount, fromToken.decimals);
|
|
99
|
+
if (allowance < sellAmountWei) {
|
|
100
|
+
console.log(` Approving ${quote.sellToken} for swap...`);
|
|
101
|
+
const approveTx = await tokenContract.approve(quote.to, ethers_1.ethers.MaxUint256);
|
|
102
|
+
await approveTx.wait();
|
|
103
|
+
console.log(` ✅ Approved`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
console.log(` ✅ Already approved`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Execute the swap
|
|
110
|
+
console.log(`\n📤 Executing swap...`);
|
|
111
|
+
const tx = await signer.sendTransaction({
|
|
112
|
+
to: quote.to,
|
|
113
|
+
data: quote.data,
|
|
114
|
+
value: quote.value,
|
|
115
|
+
gasLimit: Math.ceil(parseInt(quote.estimatedGas) * 1.2), // 20% buffer
|
|
116
|
+
});
|
|
117
|
+
console.log(` TX: ${tx.hash}`);
|
|
118
|
+
const receipt = await tx.wait();
|
|
119
|
+
if (receipt && receipt.status === 1) {
|
|
120
|
+
console.log(` ✅ Swap confirmed in block ${receipt.blockNumber}`);
|
|
121
|
+
return {
|
|
122
|
+
hash: tx.hash,
|
|
123
|
+
status: 'confirmed',
|
|
124
|
+
fromToken: quote.sellToken,
|
|
125
|
+
toToken: quote.buyToken,
|
|
126
|
+
fromAmount: quote.sellAmount,
|
|
127
|
+
toAmount: quote.buyAmount,
|
|
128
|
+
gasUsed: receipt.gasUsed?.toString(),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw new Error('Swap transaction failed');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get a price quote without executing
|
|
137
|
+
*/
|
|
138
|
+
async function getPrice(from, to, amount = '1') {
|
|
139
|
+
const quote = await getSwapQuote({ from, to, amount });
|
|
140
|
+
return quote.price;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Supported tokens list
|
|
144
|
+
*/
|
|
145
|
+
function getSupportedTokens() {
|
|
146
|
+
return Object.keys(TOKENS);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=swap.js.map
|
package/dist/swap.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../lib/swap.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pay Lobster Username Resolution
|
|
3
|
+
* Resolves @usernames and .base.eth names to addresses
|
|
4
|
+
*/
|
|
5
|
+
import { ethers } from 'ethers';
|
|
6
|
+
export interface ResolvedAddress {
|
|
7
|
+
address: string;
|
|
8
|
+
source: 'basename' | 'registry' | 'cache' | 'direct';
|
|
9
|
+
name: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a username or ENS name to an address
|
|
13
|
+
* Supports:
|
|
14
|
+
* - @username (Pay Lobster registry)
|
|
15
|
+
* - name.base.eth (Basenames)
|
|
16
|
+
* - Raw addresses (0x...)
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveUsername(input: string, provider?: ethers.JsonRpcProvider): Promise<ResolvedAddress | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Register a username (local cache for now)
|
|
21
|
+
* TODO: Deploy contract and register on-chain
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerUsername(username: string, address: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get username for an address (reverse lookup)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getUsername(address: string): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* List all registered usernames
|
|
30
|
+
*/
|
|
31
|
+
export declare function listUsernames(): Array<{
|
|
32
|
+
username: string;
|
|
33
|
+
address: string;
|
|
34
|
+
}>;
|
|
35
|
+
//# sourceMappingURL=usernames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usernames.d.ts","sourceRoot":"","sources":["../lib/usernames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAehC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,eAAe,GAChC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6BjC;AAiED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5E"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pay Lobster Username Resolution
|
|
4
|
+
* Resolves @usernames and .base.eth names to addresses
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolveUsername = resolveUsername;
|
|
8
|
+
exports.registerUsername = registerUsername;
|
|
9
|
+
exports.getUsername = getUsername;
|
|
10
|
+
exports.listUsernames = listUsernames;
|
|
11
|
+
const ethers_1 = require("ethers");
|
|
12
|
+
// Base Mainnet ENS Registry (for Basenames)
|
|
13
|
+
const BASE_ENS_REGISTRY = '0x4ccb0BB02FCABA27e82a56646E81d8c5bC4119a5';
|
|
14
|
+
const BASE_PUBLIC_RESOLVER = '0xC6d566A56A1aFf6508b41f6c90ff131615583BCD';
|
|
15
|
+
// Pay Lobster Username Registry (deployed contract)
|
|
16
|
+
const PAYLOBSTER_USERNAME_REGISTRY = '0x0000000000000000000000000000000000000000'; // TODO: Deploy
|
|
17
|
+
// In-memory cache for usernames (fallback until contract deployed)
|
|
18
|
+
const usernameCache = new Map([
|
|
19
|
+
['paylobster', '0xf775f0224A680E2915a066e53A389d0335318b7B'],
|
|
20
|
+
['gustav', '0xf775f0224A680E2915a066e53A389d0335318b7B'],
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a username or ENS name to an address
|
|
24
|
+
* Supports:
|
|
25
|
+
* - @username (Pay Lobster registry)
|
|
26
|
+
* - name.base.eth (Basenames)
|
|
27
|
+
* - Raw addresses (0x...)
|
|
28
|
+
*/
|
|
29
|
+
async function resolveUsername(input, provider) {
|
|
30
|
+
const trimmed = input.trim();
|
|
31
|
+
// Already a valid address
|
|
32
|
+
if (ethers_1.ethers.isAddress(trimmed)) {
|
|
33
|
+
return {
|
|
34
|
+
address: trimmed,
|
|
35
|
+
source: 'direct',
|
|
36
|
+
name: trimmed,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Handle @username format
|
|
40
|
+
if (trimmed.startsWith('@')) {
|
|
41
|
+
const username = trimmed.slice(1).toLowerCase();
|
|
42
|
+
return resolveFromRegistry(username, provider);
|
|
43
|
+
}
|
|
44
|
+
// Handle .base.eth or .eth format (Basenames)
|
|
45
|
+
if (trimmed.endsWith('.base.eth') || trimmed.endsWith('.eth')) {
|
|
46
|
+
return resolveBasename(trimmed, provider);
|
|
47
|
+
}
|
|
48
|
+
// Try as plain username (no @)
|
|
49
|
+
if (/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
|
|
50
|
+
return resolveFromRegistry(trimmed.toLowerCase(), provider);
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve from Pay Lobster username registry
|
|
56
|
+
*/
|
|
57
|
+
async function resolveFromRegistry(username, provider) {
|
|
58
|
+
// Check local cache first
|
|
59
|
+
const cached = usernameCache.get(username);
|
|
60
|
+
if (cached) {
|
|
61
|
+
return {
|
|
62
|
+
address: cached,
|
|
63
|
+
source: 'cache',
|
|
64
|
+
name: `@${username}`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// TODO: Check on-chain registry when deployed
|
|
68
|
+
// const registry = new ethers.Contract(PAYLOBSTER_USERNAME_REGISTRY, REGISTRY_ABI, provider);
|
|
69
|
+
// const address = await registry.getAddress(username);
|
|
70
|
+
// Also try as basename (username.base.eth)
|
|
71
|
+
const basenameResult = await resolveBasename(`${username}.base.eth`, provider);
|
|
72
|
+
if (basenameResult) {
|
|
73
|
+
return {
|
|
74
|
+
...basenameResult,
|
|
75
|
+
name: `@${username}`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve Basename (.base.eth) via ENS
|
|
82
|
+
*/
|
|
83
|
+
async function resolveBasename(name, provider) {
|
|
84
|
+
if (!provider) {
|
|
85
|
+
provider = new ethers_1.ethers.JsonRpcProvider('https://mainnet.base.org');
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
// Use ethers built-in ENS resolution
|
|
89
|
+
const address = await provider.resolveName(name);
|
|
90
|
+
if (address) {
|
|
91
|
+
return {
|
|
92
|
+
address,
|
|
93
|
+
source: 'basename',
|
|
94
|
+
name,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
// Name not found or resolution failed
|
|
100
|
+
console.debug(`Basename resolution failed for ${name}:`, e);
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Register a username (local cache for now)
|
|
106
|
+
* TODO: Deploy contract and register on-chain
|
|
107
|
+
*/
|
|
108
|
+
function registerUsername(username, address) {
|
|
109
|
+
const normalized = username.toLowerCase().replace(/^@/, '');
|
|
110
|
+
if (!/^[a-zA-Z0-9_-]{3,20}$/.test(normalized)) {
|
|
111
|
+
throw new Error('Username must be 3-20 characters, alphanumeric with _ or -');
|
|
112
|
+
}
|
|
113
|
+
if (!ethers_1.ethers.isAddress(address)) {
|
|
114
|
+
throw new Error('Invalid address');
|
|
115
|
+
}
|
|
116
|
+
if (usernameCache.has(normalized)) {
|
|
117
|
+
throw new Error('Username already taken');
|
|
118
|
+
}
|
|
119
|
+
usernameCache.set(normalized, address);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get username for an address (reverse lookup)
|
|
124
|
+
*/
|
|
125
|
+
function getUsername(address) {
|
|
126
|
+
for (const [username, addr] of usernameCache.entries()) {
|
|
127
|
+
if (addr.toLowerCase() === address.toLowerCase()) {
|
|
128
|
+
return `@${username}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* List all registered usernames
|
|
135
|
+
*/
|
|
136
|
+
function listUsernames() {
|
|
137
|
+
return Array.from(usernameCache.entries()).map(([username, address]) => ({
|
|
138
|
+
username: `@${username}`,
|
|
139
|
+
address,
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=usernames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usernames.js","sourceRoot":"","sources":["../lib/usernames.ts"],"names":[],"mappings":"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"}
|
package/lib/agent.ts
CHANGED
|
@@ -18,6 +18,8 @@ import type {
|
|
|
18
18
|
} from './types';
|
|
19
19
|
import { CONTRACTS, ESCROW_ABI, REGISTRY_ABI, ERC20_ABI, EscrowStatus } from './contracts';
|
|
20
20
|
import { analytics } from './analytics';
|
|
21
|
+
import { resolveUsername, ResolvedAddress } from './usernames';
|
|
22
|
+
import { executeSwap, getSwapQuote, SwapOptions, SwapResult, SwapQuote } from './swap';
|
|
21
23
|
|
|
22
24
|
const BASE_RPC = 'https://mainnet.base.org';
|
|
23
25
|
const USDC_BASE = CONTRACTS.usdc;
|
|
@@ -169,9 +171,18 @@ export class LobsterAgent {
|
|
|
169
171
|
throw new Error('Provider not initialized. Call initialize() first.');
|
|
170
172
|
}
|
|
171
173
|
|
|
172
|
-
//
|
|
174
|
+
// Resolve username/basename to address
|
|
175
|
+
let recipientAddress = options.to;
|
|
176
|
+
let resolvedName: string | undefined;
|
|
177
|
+
|
|
173
178
|
if (!ethers.isAddress(options.to)) {
|
|
174
|
-
|
|
179
|
+
const resolved = await resolveUsername(options.to, this.provider);
|
|
180
|
+
if (!resolved) {
|
|
181
|
+
throw new Error(`Could not resolve "${options.to}" to an address. Try @username, name.base.eth, or 0x...`);
|
|
182
|
+
}
|
|
183
|
+
recipientAddress = resolved.address;
|
|
184
|
+
resolvedName = resolved.name;
|
|
185
|
+
console.log(`🔍 Resolved ${options.to} → ${recipientAddress} (via ${resolved.source})`);
|
|
175
186
|
}
|
|
176
187
|
|
|
177
188
|
// Parse amount (USDC has 6 decimals)
|
|
@@ -186,11 +197,12 @@ export class LobsterAgent {
|
|
|
186
197
|
throw new Error(`Insufficient balance. Have: ${balanceFormatted} USDC, Need: ${options.amount} USDC`);
|
|
187
198
|
}
|
|
188
199
|
|
|
189
|
-
|
|
200
|
+
const displayTo = resolvedName || recipientAddress;
|
|
201
|
+
console.log(`🦞 Sending ${options.amount} USDC to ${displayTo}...`);
|
|
190
202
|
|
|
191
203
|
try {
|
|
192
204
|
// Execute the transfer
|
|
193
|
-
const tx = await usdc.transfer(
|
|
205
|
+
const tx = await usdc.transfer(recipientAddress, amount);
|
|
194
206
|
console.log(`📤 Transaction submitted: ${tx.hash}`);
|
|
195
207
|
|
|
196
208
|
// Wait for confirmation
|
|
@@ -198,14 +210,15 @@ export class LobsterAgent {
|
|
|
198
210
|
console.log(`✅ Confirmed in block ${receipt.blockNumber}`);
|
|
199
211
|
|
|
200
212
|
// Track successful transaction
|
|
201
|
-
analytics.trackTransaction('send', options.amount,
|
|
213
|
+
analytics.trackTransaction('send', options.amount, recipientAddress, tx.hash);
|
|
202
214
|
|
|
203
215
|
return {
|
|
204
216
|
id: tx.hash,
|
|
205
217
|
hash: tx.hash,
|
|
206
218
|
status: receipt.status === 1 ? 'confirmed' : 'failed',
|
|
207
219
|
amount: options.amount,
|
|
208
|
-
to:
|
|
220
|
+
to: recipientAddress,
|
|
221
|
+
toName: resolvedName,
|
|
209
222
|
from: this.signer.address,
|
|
210
223
|
memo: options.memo,
|
|
211
224
|
createdAt: new Date().toISOString()
|
|
@@ -550,4 +563,45 @@ export class LobsterAgent {
|
|
|
550
563
|
return [];
|
|
551
564
|
}
|
|
552
565
|
}
|
|
566
|
+
|
|
567
|
+
// ============================================
|
|
568
|
+
// SWAP METHODS (Powered by 0x)
|
|
569
|
+
// ============================================
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Get a swap quote without executing
|
|
573
|
+
*/
|
|
574
|
+
async getSwapQuote(options: SwapOptions): Promise<SwapQuote> {
|
|
575
|
+
return getSwapQuote(options);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Execute a token swap (ETH ↔ USDC, etc.)
|
|
580
|
+
* Uses 0x API for best execution across DEXs
|
|
581
|
+
*/
|
|
582
|
+
async swap(options: SwapOptions): Promise<SwapResult> {
|
|
583
|
+
if (!this.signer) {
|
|
584
|
+
throw new Error('No signer available. Provide privateKey to execute swaps.');
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
console.log(`🦞 Initiating swap: ${options.amount} ${options.from} → ${options.to}`);
|
|
588
|
+
|
|
589
|
+
const result = await executeSwap(this.signer, options);
|
|
590
|
+
|
|
591
|
+
// Track the swap
|
|
592
|
+
analytics.trackTransaction('swap', options.amount, `${options.from}→${options.to}`, result.hash);
|
|
593
|
+
|
|
594
|
+
return result;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/**
|
|
598
|
+
* Quick swap helpers
|
|
599
|
+
*/
|
|
600
|
+
async swapEthToUsdc(ethAmount: string): Promise<SwapResult> {
|
|
601
|
+
return this.swap({ from: 'ETH', to: 'USDC', amount: ethAmount });
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
async swapUsdcToEth(usdcAmount: string): Promise<SwapResult> {
|
|
605
|
+
return this.swap({ from: 'USDC', to: 'ETH', amount: usdcAmount });
|
|
606
|
+
}
|
|
553
607
|
}
|
package/lib/index.ts
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
export { LobsterAgent } from './agent';
|
|
9
9
|
export { createLobsterAgent, quickStart } from './easy';
|
|
10
10
|
export * from './types';
|
|
11
|
+
export { resolveUsername, registerUsername, getUsername, listUsernames } from './usernames';
|
|
12
|
+
export { getSwapQuote, executeSwap, getPrice, getSupportedTokens } from './swap';
|
|
13
|
+
export type { SwapQuote, SwapOptions, SwapResult } from './swap';
|
|
11
14
|
|
|
12
15
|
// Default export for convenience
|
|
13
16
|
export { LobsterAgent as default } from './agent';
|
package/lib/swap.ts
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pay Lobster Swap Module
|
|
3
|
+
* Powered by 0x API for best execution across DEXs
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ethers } from 'ethers';
|
|
7
|
+
|
|
8
|
+
const ZEROX_API = 'https://base.api.0x.org';
|
|
9
|
+
|
|
10
|
+
// Common tokens on Base
|
|
11
|
+
const TOKENS: Record<string, { address: string; decimals: number }> = {
|
|
12
|
+
ETH: { address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', decimals: 18 },
|
|
13
|
+
WETH: { address: '0x4200000000000000000000000000000000000006', decimals: 18 },
|
|
14
|
+
USDC: { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },
|
|
15
|
+
USDbC: { address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', decimals: 6 },
|
|
16
|
+
DAI: { address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', decimals: 18 },
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export interface SwapQuote {
|
|
20
|
+
sellToken: string;
|
|
21
|
+
buyToken: string;
|
|
22
|
+
sellAmount: string;
|
|
23
|
+
buyAmount: string;
|
|
24
|
+
price: string;
|
|
25
|
+
gas: string;
|
|
26
|
+
gasPrice: string;
|
|
27
|
+
estimatedGas: string;
|
|
28
|
+
to: string;
|
|
29
|
+
data: string;
|
|
30
|
+
value: string;
|
|
31
|
+
sources: Array<{ name: string; proportion: string }>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface SwapOptions {
|
|
35
|
+
from: string; // Token symbol (ETH, USDC, etc.) or address
|
|
36
|
+
to: string; // Token symbol or address
|
|
37
|
+
amount: string; // Amount to sell (in human readable format)
|
|
38
|
+
slippage?: number; // Slippage tolerance (default 0.5%)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface SwapResult {
|
|
42
|
+
hash: string;
|
|
43
|
+
status: 'pending' | 'confirmed' | 'failed';
|
|
44
|
+
fromToken: string;
|
|
45
|
+
toToken: string;
|
|
46
|
+
fromAmount: string;
|
|
47
|
+
toAmount: string;
|
|
48
|
+
gasUsed?: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Resolve token symbol to address and decimals
|
|
53
|
+
*/
|
|
54
|
+
function resolveToken(tokenOrSymbol: string): { address: string; decimals: number; symbol: string } {
|
|
55
|
+
const upper = tokenOrSymbol.toUpperCase();
|
|
56
|
+
|
|
57
|
+
if (TOKENS[upper]) {
|
|
58
|
+
return { ...TOKENS[upper], symbol: upper };
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Assume it's an address
|
|
62
|
+
if (ethers.isAddress(tokenOrSymbol)) {
|
|
63
|
+
return { address: tokenOrSymbol, decimals: 18, symbol: tokenOrSymbol.slice(0, 8) };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
throw new Error(`Unknown token: ${tokenOrSymbol}. Supported: ${Object.keys(TOKENS).join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get a swap quote from 0x API
|
|
71
|
+
*/
|
|
72
|
+
export async function getSwapQuote(options: SwapOptions): Promise<SwapQuote> {
|
|
73
|
+
const fromToken = resolveToken(options.from);
|
|
74
|
+
const toToken = resolveToken(options.to);
|
|
75
|
+
|
|
76
|
+
// Convert amount to smallest unit
|
|
77
|
+
const sellAmount = ethers.parseUnits(options.amount, fromToken.decimals).toString();
|
|
78
|
+
const slippage = options.slippage || 0.5;
|
|
79
|
+
|
|
80
|
+
const params = new URLSearchParams({
|
|
81
|
+
sellToken: fromToken.address,
|
|
82
|
+
buyToken: toToken.address,
|
|
83
|
+
sellAmount: sellAmount,
|
|
84
|
+
slippagePercentage: (slippage / 100).toString(),
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const url = `${ZEROX_API}/swap/v1/quote?${params}`;
|
|
88
|
+
|
|
89
|
+
console.log(`🔍 Getting quote: ${options.amount} ${fromToken.symbol} → ${toToken.symbol}...`);
|
|
90
|
+
|
|
91
|
+
const response = await fetch(url);
|
|
92
|
+
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
const error = await response.json().catch(() => ({})) as { reason?: string; message?: string };
|
|
95
|
+
throw new Error(`0x API error: ${error.reason || error.message || response.statusText}`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const quote = await response.json() as {
|
|
99
|
+
buyAmount: string;
|
|
100
|
+
sellAmount: string;
|
|
101
|
+
gas: string;
|
|
102
|
+
gasPrice: string;
|
|
103
|
+
estimatedGas: string;
|
|
104
|
+
to: string;
|
|
105
|
+
data: string;
|
|
106
|
+
value: string;
|
|
107
|
+
sources?: Array<{ name: string; proportion: string }>;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// Calculate human-readable amounts
|
|
111
|
+
const buyAmountFormatted = ethers.formatUnits(quote.buyAmount, toToken.decimals);
|
|
112
|
+
const sellAmountFormatted = ethers.formatUnits(quote.sellAmount, fromToken.decimals);
|
|
113
|
+
const price = (parseFloat(buyAmountFormatted) / parseFloat(sellAmountFormatted)).toFixed(6);
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
sellToken: fromToken.symbol,
|
|
117
|
+
buyToken: toToken.symbol,
|
|
118
|
+
sellAmount: sellAmountFormatted,
|
|
119
|
+
buyAmount: buyAmountFormatted,
|
|
120
|
+
price: price,
|
|
121
|
+
gas: quote.gas,
|
|
122
|
+
gasPrice: quote.gasPrice,
|
|
123
|
+
estimatedGas: quote.estimatedGas,
|
|
124
|
+
to: quote.to,
|
|
125
|
+
data: quote.data,
|
|
126
|
+
value: quote.value,
|
|
127
|
+
sources: quote.sources?.filter((s) => parseFloat(s.proportion) > 0) || [],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Execute a swap transaction
|
|
133
|
+
*/
|
|
134
|
+
export async function executeSwap(
|
|
135
|
+
signer: ethers.Wallet,
|
|
136
|
+
options: SwapOptions
|
|
137
|
+
): Promise<SwapResult> {
|
|
138
|
+
const quote = await getSwapQuote(options);
|
|
139
|
+
|
|
140
|
+
const fromToken = resolveToken(options.from);
|
|
141
|
+
const toToken = resolveToken(options.to);
|
|
142
|
+
|
|
143
|
+
console.log(`\n🦞 Swap Quote:`);
|
|
144
|
+
console.log(` Sell: ${quote.sellAmount} ${quote.sellToken}`);
|
|
145
|
+
console.log(` Buy: ${quote.buyAmount} ${quote.buyToken}`);
|
|
146
|
+
console.log(` Rate: 1 ${quote.sellToken} = ${quote.price} ${quote.buyToken}`);
|
|
147
|
+
console.log(` Sources: ${quote.sources.map(s => s.name).join(', ') || 'Direct'}`);
|
|
148
|
+
|
|
149
|
+
// If selling ERC20 (not ETH), need to approve first
|
|
150
|
+
if (fromToken.address !== TOKENS.ETH.address) {
|
|
151
|
+
console.log(`\n📝 Checking allowance...`);
|
|
152
|
+
|
|
153
|
+
const erc20Abi = [
|
|
154
|
+
'function allowance(address owner, address spender) view returns (uint256)',
|
|
155
|
+
'function approve(address spender, uint256 amount) returns (bool)'
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const tokenContract = new ethers.Contract(fromToken.address, erc20Abi, signer);
|
|
159
|
+
const allowance = await tokenContract.allowance(signer.address, quote.to);
|
|
160
|
+
const sellAmountWei = ethers.parseUnits(options.amount, fromToken.decimals);
|
|
161
|
+
|
|
162
|
+
if (allowance < sellAmountWei) {
|
|
163
|
+
console.log(` Approving ${quote.sellToken} for swap...`);
|
|
164
|
+
const approveTx = await tokenContract.approve(quote.to, ethers.MaxUint256);
|
|
165
|
+
await approveTx.wait();
|
|
166
|
+
console.log(` ✅ Approved`);
|
|
167
|
+
} else {
|
|
168
|
+
console.log(` ✅ Already approved`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Execute the swap
|
|
173
|
+
console.log(`\n📤 Executing swap...`);
|
|
174
|
+
|
|
175
|
+
const tx = await signer.sendTransaction({
|
|
176
|
+
to: quote.to,
|
|
177
|
+
data: quote.data,
|
|
178
|
+
value: quote.value,
|
|
179
|
+
gasLimit: Math.ceil(parseInt(quote.estimatedGas) * 1.2), // 20% buffer
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
console.log(` TX: ${tx.hash}`);
|
|
183
|
+
|
|
184
|
+
const receipt = await tx.wait();
|
|
185
|
+
|
|
186
|
+
if (receipt && receipt.status === 1) {
|
|
187
|
+
console.log(` ✅ Swap confirmed in block ${receipt.blockNumber}`);
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
hash: tx.hash,
|
|
191
|
+
status: 'confirmed',
|
|
192
|
+
fromToken: quote.sellToken,
|
|
193
|
+
toToken: quote.buyToken,
|
|
194
|
+
fromAmount: quote.sellAmount,
|
|
195
|
+
toAmount: quote.buyAmount,
|
|
196
|
+
gasUsed: receipt.gasUsed?.toString(),
|
|
197
|
+
};
|
|
198
|
+
} else {
|
|
199
|
+
throw new Error('Swap transaction failed');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Get a price quote without executing
|
|
205
|
+
*/
|
|
206
|
+
export async function getPrice(from: string, to: string, amount: string = '1'): Promise<string> {
|
|
207
|
+
const quote = await getSwapQuote({ from, to, amount });
|
|
208
|
+
return quote.price;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Supported tokens list
|
|
213
|
+
*/
|
|
214
|
+
export function getSupportedTokens(): string[] {
|
|
215
|
+
return Object.keys(TOKENS);
|
|
216
|
+
}
|
package/lib/types.ts
CHANGED
package/lib/usernames.ts
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pay Lobster Username Resolution
|
|
3
|
+
* Resolves @usernames and .base.eth names to addresses
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ethers } from 'ethers';
|
|
7
|
+
|
|
8
|
+
// Base Mainnet ENS Registry (for Basenames)
|
|
9
|
+
const BASE_ENS_REGISTRY = '0x4ccb0BB02FCABA27e82a56646E81d8c5bC4119a5';
|
|
10
|
+
const BASE_PUBLIC_RESOLVER = '0xC6d566A56A1aFf6508b41f6c90ff131615583BCD';
|
|
11
|
+
|
|
12
|
+
// Pay Lobster Username Registry (deployed contract)
|
|
13
|
+
const PAYLOBSTER_USERNAME_REGISTRY = '0x0000000000000000000000000000000000000000'; // TODO: Deploy
|
|
14
|
+
|
|
15
|
+
// In-memory cache for usernames (fallback until contract deployed)
|
|
16
|
+
const usernameCache: Map<string, string> = new Map([
|
|
17
|
+
['paylobster', '0xf775f0224A680E2915a066e53A389d0335318b7B'],
|
|
18
|
+
['gustav', '0xf775f0224A680E2915a066e53A389d0335318b7B'],
|
|
19
|
+
]);
|
|
20
|
+
|
|
21
|
+
export interface ResolvedAddress {
|
|
22
|
+
address: string;
|
|
23
|
+
source: 'basename' | 'registry' | 'cache' | 'direct';
|
|
24
|
+
name: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Resolve a username or ENS name to an address
|
|
29
|
+
* Supports:
|
|
30
|
+
* - @username (Pay Lobster registry)
|
|
31
|
+
* - name.base.eth (Basenames)
|
|
32
|
+
* - Raw addresses (0x...)
|
|
33
|
+
*/
|
|
34
|
+
export async function resolveUsername(
|
|
35
|
+
input: string,
|
|
36
|
+
provider?: ethers.JsonRpcProvider
|
|
37
|
+
): Promise<ResolvedAddress | null> {
|
|
38
|
+
const trimmed: string = input.trim();
|
|
39
|
+
|
|
40
|
+
// Already a valid address
|
|
41
|
+
if (ethers.isAddress(trimmed)) {
|
|
42
|
+
return {
|
|
43
|
+
address: trimmed as string,
|
|
44
|
+
source: 'direct',
|
|
45
|
+
name: trimmed as string,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Handle @username format
|
|
50
|
+
if ((trimmed as string).startsWith('@')) {
|
|
51
|
+
const username = (trimmed as string).slice(1).toLowerCase();
|
|
52
|
+
return resolveFromRegistry(username, provider);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Handle .base.eth or .eth format (Basenames)
|
|
56
|
+
if ((trimmed as string).endsWith('.base.eth') || (trimmed as string).endsWith('.eth')) {
|
|
57
|
+
return resolveBasename(trimmed as string, provider);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Try as plain username (no @)
|
|
61
|
+
if (/^[a-zA-Z0-9_-]+$/.test(trimmed as string)) {
|
|
62
|
+
return resolveFromRegistry((trimmed as string).toLowerCase(), provider);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Resolve from Pay Lobster username registry
|
|
70
|
+
*/
|
|
71
|
+
async function resolveFromRegistry(
|
|
72
|
+
username: string,
|
|
73
|
+
provider?: ethers.JsonRpcProvider
|
|
74
|
+
): Promise<ResolvedAddress | null> {
|
|
75
|
+
// Check local cache first
|
|
76
|
+
const cached = usernameCache.get(username);
|
|
77
|
+
if (cached) {
|
|
78
|
+
return {
|
|
79
|
+
address: cached,
|
|
80
|
+
source: 'cache',
|
|
81
|
+
name: `@${username}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// TODO: Check on-chain registry when deployed
|
|
86
|
+
// const registry = new ethers.Contract(PAYLOBSTER_USERNAME_REGISTRY, REGISTRY_ABI, provider);
|
|
87
|
+
// const address = await registry.getAddress(username);
|
|
88
|
+
|
|
89
|
+
// Also try as basename (username.base.eth)
|
|
90
|
+
const basenameResult = await resolveBasename(`${username}.base.eth`, provider);
|
|
91
|
+
if (basenameResult) {
|
|
92
|
+
return {
|
|
93
|
+
...basenameResult,
|
|
94
|
+
name: `@${username}`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Resolve Basename (.base.eth) via ENS
|
|
103
|
+
*/
|
|
104
|
+
async function resolveBasename(
|
|
105
|
+
name: string,
|
|
106
|
+
provider?: ethers.JsonRpcProvider
|
|
107
|
+
): Promise<ResolvedAddress | null> {
|
|
108
|
+
if (!provider) {
|
|
109
|
+
provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
// Use ethers built-in ENS resolution
|
|
114
|
+
const address = await provider.resolveName(name);
|
|
115
|
+
|
|
116
|
+
if (address) {
|
|
117
|
+
return {
|
|
118
|
+
address,
|
|
119
|
+
source: 'basename',
|
|
120
|
+
name,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
} catch (e) {
|
|
124
|
+
// Name not found or resolution failed
|
|
125
|
+
console.debug(`Basename resolution failed for ${name}:`, e);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Register a username (local cache for now)
|
|
133
|
+
* TODO: Deploy contract and register on-chain
|
|
134
|
+
*/
|
|
135
|
+
export function registerUsername(username: string, address: string): boolean {
|
|
136
|
+
const normalized = username.toLowerCase().replace(/^@/, '');
|
|
137
|
+
|
|
138
|
+
if (!/^[a-zA-Z0-9_-]{3,20}$/.test(normalized)) {
|
|
139
|
+
throw new Error('Username must be 3-20 characters, alphanumeric with _ or -');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (!ethers.isAddress(address)) {
|
|
143
|
+
throw new Error('Invalid address');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (usernameCache.has(normalized)) {
|
|
147
|
+
throw new Error('Username already taken');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
usernameCache.set(normalized, address);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Get username for an address (reverse lookup)
|
|
156
|
+
*/
|
|
157
|
+
export function getUsername(address: string): string | null {
|
|
158
|
+
for (const [username, addr] of usernameCache.entries()) {
|
|
159
|
+
if (addr.toLowerCase() === address.toLowerCase()) {
|
|
160
|
+
return `@${username}`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* List all registered usernames
|
|
168
|
+
*/
|
|
169
|
+
export function listUsernames(): Array<{ username: string; address: string }> {
|
|
170
|
+
return Array.from(usernameCache.entries()).map(([username, address]) => ({
|
|
171
|
+
username: `@${username}`,
|
|
172
|
+
address,
|
|
173
|
+
}));
|
|
174
|
+
}
|
package/package.json
CHANGED