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 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
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"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"}
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
- // Validate address
140
+ // Resolve username/basename to address
141
+ let recipientAddress = options.to;
142
+ let resolvedName;
139
143
  if (!ethers_1.ethers.isAddress(options.to)) {
140
- throw new Error(`Invalid recipient address: ${options.to}`);
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
- console.log(`🦞 Sending ${options.amount} USDC to ${options.to}...`);
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(options.to, amount);
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, options.to, tx.hash);
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: options.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
@@ -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;AAGxB,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,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;AAExB,iCAAiC;AACjC,iCAAkD;AAAzC,gGAAA,YAAY,OAAW"}
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
@@ -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
@@ -28,6 +28,7 @@ export interface Transfer {
28
28
  status: 'pending' | 'confirmed' | 'failed';
29
29
  amount: string;
30
30
  to: string;
31
+ toName?: string;
31
32
  from: string;
32
33
  memo?: string;
33
34
  createdAt: string;
@@ -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
- // Validate address
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
- throw new Error(`Invalid recipient address: ${options.to}`);
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
- console.log(`🦞 Sending ${options.amount} USDC to ${options.to}...`);
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(options.to, amount);
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, options.to, tx.hash);
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: options.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
@@ -31,6 +31,7 @@ export interface Transfer {
31
31
  status: 'pending' | 'confirmed' | 'failed';
32
32
  amount: string;
33
33
  to: string;
34
+ toName?: string;
34
35
  from: string;
35
36
  memo?: string;
36
37
  createdAt: string;
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pay-lobster",
3
- "version": "1.1.4",
3
+ "version": "1.3.0",
4
4
  "description": "Payment infrastructure for AI agents - The Stripe for autonomous agents. Send, receive, and escrow USDC on Base.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",