pay-lobster 1.0.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/README.md +401 -0
- package/README.md.bak +401 -0
- package/dist/agent.d.ts +132 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +224 -0
- package/dist/agent.js.map +1 -0
- package/dist/analytics.d.ts +120 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +345 -0
- package/dist/analytics.js.map +1 -0
- package/dist/approvals.d.ts +168 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +406 -0
- package/dist/approvals.js.map +1 -0
- package/dist/circle-client.d.ts +152 -0
- package/dist/circle-client.d.ts.map +1 -0
- package/dist/circle-client.js +266 -0
- package/dist/circle-client.js.map +1 -0
- package/dist/commission.d.ts +191 -0
- package/dist/commission.d.ts.map +1 -0
- package/dist/commission.js +475 -0
- package/dist/commission.js.map +1 -0
- package/dist/condition-builder.d.ts +98 -0
- package/dist/condition-builder.d.ts.map +1 -0
- package/dist/condition-builder.js +193 -0
- package/dist/condition-builder.js.map +1 -0
- package/dist/contacts.d.ts +179 -0
- package/dist/contacts.d.ts.map +1 -0
- package/dist/contacts.js +445 -0
- package/dist/contacts.js.map +1 -0
- package/dist/easy.d.ts +22 -0
- package/dist/easy.d.ts.map +1 -0
- package/dist/easy.js +40 -0
- package/dist/easy.js.map +1 -0
- package/dist/erc8004/constants.d.ts +152 -0
- package/dist/erc8004/constants.d.ts.map +1 -0
- package/dist/erc8004/constants.js +114 -0
- package/dist/erc8004/constants.js.map +1 -0
- package/dist/erc8004/discovery.d.ts +84 -0
- package/dist/erc8004/discovery.d.ts.map +1 -0
- package/dist/erc8004/discovery.js +217 -0
- package/dist/erc8004/discovery.js.map +1 -0
- package/dist/erc8004/identity.d.ts +91 -0
- package/dist/erc8004/identity.d.ts.map +1 -0
- package/dist/erc8004/identity.js +250 -0
- package/dist/erc8004/identity.js.map +1 -0
- package/dist/erc8004/index.d.ts +147 -0
- package/dist/erc8004/index.d.ts.map +1 -0
- package/dist/erc8004/index.js +225 -0
- package/dist/erc8004/index.js.map +1 -0
- package/dist/erc8004/reputation.d.ts +133 -0
- package/dist/erc8004/reputation.d.ts.map +1 -0
- package/dist/erc8004/reputation.js +277 -0
- package/dist/erc8004/reputation.js.map +1 -0
- package/dist/escrow-templates.d.ts +38 -0
- package/dist/escrow-templates.d.ts.map +1 -0
- package/dist/escrow-templates.js +419 -0
- package/dist/escrow-templates.js.map +1 -0
- package/dist/escrow.d.ts +320 -0
- package/dist/escrow.d.ts.map +1 -0
- package/dist/escrow.js +854 -0
- package/dist/escrow.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/invoices.d.ts +212 -0
- package/dist/invoices.d.ts.map +1 -0
- package/dist/invoices.js +393 -0
- package/dist/invoices.js.map +1 -0
- package/dist/notifications.d.ts +141 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +350 -0
- package/dist/notifications.js.map +1 -0
- package/dist/tips.d.ts +171 -0
- package/dist/tips.d.ts.map +1 -0
- package/dist/tips.js +390 -0
- package/dist/tips.js.map +1 -0
- package/dist/types.d.ts +100 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/x402-client.d.ts +127 -0
- package/dist/x402-client.d.ts.map +1 -0
- package/dist/x402-client.js +350 -0
- package/dist/x402-client.js.map +1 -0
- package/dist/x402-server.d.ts +133 -0
- package/dist/x402-server.d.ts.map +1 -0
- package/dist/x402-server.js +330 -0
- package/dist/x402-server.js.map +1 -0
- package/lib/agent.ts +273 -0
- package/lib/analytics.ts +474 -0
- package/lib/analytics.ts.bak +474 -0
- package/lib/approvals.ts +585 -0
- package/lib/approvals.ts.bak +585 -0
- package/lib/circle-client.ts +376 -0
- package/lib/circle-client.ts.bak +376 -0
- package/lib/commission.ts +680 -0
- package/lib/commission.ts.bak +680 -0
- package/lib/condition-builder.ts +223 -0
- package/lib/condition-builder.ts.bak +223 -0
- package/lib/contacts.ts +615 -0
- package/lib/contacts.ts.bak +615 -0
- package/lib/easy.ts +46 -0
- package/lib/easy.ts.bak +352 -0
- package/lib/erc8004/constants.ts +175 -0
- package/lib/erc8004/discovery.ts +299 -0
- package/lib/erc8004/identity.ts +327 -0
- package/lib/erc8004/index.ts +285 -0
- package/lib/erc8004/reputation.ts +368 -0
- package/lib/escrow-templates.ts +462 -0
- package/lib/escrow.ts +1216 -0
- package/lib/index.ts +13 -0
- package/lib/invoices.ts +588 -0
- package/lib/notifications.ts +484 -0
- package/lib/tips.ts +570 -0
- package/lib/types.ts +108 -0
- package/lib/x402-client.ts +471 -0
- package/lib/x402-server.ts +462 -0
- package/package.json +58 -0
package/dist/agent.js
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LobsterAgent - Main class for Pay Lobster SDK
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LobsterAgent = void 0;
|
|
7
|
+
const BASE_RPC = 'https://mainnet.base.org';
|
|
8
|
+
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
|
|
9
|
+
class LobsterAgent {
|
|
10
|
+
constructor(config = {}) {
|
|
11
|
+
this.config = {
|
|
12
|
+
network: 'base',
|
|
13
|
+
enableTrust: true,
|
|
14
|
+
...config
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Initialize the agent and connect to wallet
|
|
19
|
+
*/
|
|
20
|
+
async initialize() {
|
|
21
|
+
if (this.config.walletId) {
|
|
22
|
+
this.wallet = await this.getWallet();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new Circle-managed wallet
|
|
27
|
+
*/
|
|
28
|
+
async createWallet() {
|
|
29
|
+
// Implementation would use Circle API
|
|
30
|
+
throw new Error('Circle wallet creation requires entity secret. Use external wallet or Circle Console.');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get wallet details and balance
|
|
34
|
+
*/
|
|
35
|
+
async getWallet() {
|
|
36
|
+
if (!this.wallet?.address && !this.config.walletId) {
|
|
37
|
+
throw new Error('No wallet configured');
|
|
38
|
+
}
|
|
39
|
+
const address = this.wallet?.address || this.config.walletId;
|
|
40
|
+
const balance = await this.getBalance();
|
|
41
|
+
return {
|
|
42
|
+
id: this.config.walletId || 'external',
|
|
43
|
+
address,
|
|
44
|
+
network: this.config.network || 'base',
|
|
45
|
+
balance
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get current USDC balance
|
|
50
|
+
*/
|
|
51
|
+
async getBalance() {
|
|
52
|
+
const address = this.wallet?.address || this.config.walletId;
|
|
53
|
+
if (!address)
|
|
54
|
+
throw new Error('No wallet address');
|
|
55
|
+
const rpc = this.config.rpcUrl || BASE_RPC;
|
|
56
|
+
const data = '0x70a08231' + address.slice(2).padStart(64, '0');
|
|
57
|
+
const response = await fetch(rpc, {
|
|
58
|
+
method: 'POST',
|
|
59
|
+
headers: { 'Content-Type': 'application/json' },
|
|
60
|
+
body: JSON.stringify({
|
|
61
|
+
jsonrpc: '2.0',
|
|
62
|
+
id: 1,
|
|
63
|
+
method: 'eth_call',
|
|
64
|
+
params: [{ to: USDC_BASE, data }, 'latest']
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
const result = await response.json();
|
|
68
|
+
const balance = parseInt(result.result || '0', 16) / 1e6;
|
|
69
|
+
return balance.toFixed(2);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get deposit address
|
|
73
|
+
*/
|
|
74
|
+
async getDepositAddress() {
|
|
75
|
+
return this.wallet?.address || this.config.walletId || '';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Transfer USDC to another address
|
|
79
|
+
*/
|
|
80
|
+
async transfer(options) {
|
|
81
|
+
// Implementation requires private key or Circle wallet
|
|
82
|
+
console.log(`Transfer: ${options.amount} USDC to ${options.to}`);
|
|
83
|
+
return {
|
|
84
|
+
id: `tx_${Date.now()}`,
|
|
85
|
+
status: 'pending',
|
|
86
|
+
amount: options.amount,
|
|
87
|
+
to: options.to,
|
|
88
|
+
from: this.wallet?.address || '',
|
|
89
|
+
memo: options.memo,
|
|
90
|
+
createdAt: new Date().toISOString()
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Alias for transfer
|
|
95
|
+
*/
|
|
96
|
+
async send(to, amount) {
|
|
97
|
+
return this.transfer({ to, amount: amount.toString() });
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create an escrow
|
|
101
|
+
*/
|
|
102
|
+
async createEscrow(options) {
|
|
103
|
+
return {
|
|
104
|
+
id: `esc_${Date.now()}`,
|
|
105
|
+
amount: options.amount,
|
|
106
|
+
buyer: this.wallet?.address || '',
|
|
107
|
+
seller: options.recipient,
|
|
108
|
+
status: 'funded',
|
|
109
|
+
conditions: options.conditions,
|
|
110
|
+
createdAt: new Date().toISOString()
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Release escrow funds
|
|
115
|
+
*/
|
|
116
|
+
async releaseEscrow(escrowId, options) {
|
|
117
|
+
console.log(`Releasing escrow ${escrowId}`, options);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Refund escrow
|
|
121
|
+
*/
|
|
122
|
+
async refundEscrow(escrowId) {
|
|
123
|
+
console.log(`Refunding escrow ${escrowId}`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Dispute escrow
|
|
127
|
+
*/
|
|
128
|
+
async disputeEscrow(escrowId, options) {
|
|
129
|
+
console.log(`Disputing escrow ${escrowId}: ${options.reason}`);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get trust score for an address
|
|
133
|
+
*/
|
|
134
|
+
async getTrustScore(address) {
|
|
135
|
+
// Would query ERC-8004 registry
|
|
136
|
+
return {
|
|
137
|
+
score: 100,
|
|
138
|
+
level: 'new',
|
|
139
|
+
totalTransactions: 0,
|
|
140
|
+
successRate: 100
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Rate an agent
|
|
145
|
+
*/
|
|
146
|
+
async rateAgent(options) {
|
|
147
|
+
console.log(`Rating agent ${options.agent}: ${options.rating}/5`);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get agent ratings
|
|
151
|
+
*/
|
|
152
|
+
async getAgentRatings(address) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Register agent in on-chain registry
|
|
157
|
+
*/
|
|
158
|
+
async registerAgent(options) {
|
|
159
|
+
console.log(`Registering agent: ${options.name}`);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Discover agents by capability
|
|
163
|
+
*/
|
|
164
|
+
async discoverAgents(options) {
|
|
165
|
+
// Would query on-chain registry
|
|
166
|
+
return [{
|
|
167
|
+
address: '0xf775f0224A680E2915a066e53A389d0335318b7B',
|
|
168
|
+
name: 'paylobster',
|
|
169
|
+
capabilities: ['payments', 'escrow'],
|
|
170
|
+
trustScore: { score: 100, level: 'verified', totalTransactions: 0, successRate: 100 }
|
|
171
|
+
}];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get agent details
|
|
175
|
+
*/
|
|
176
|
+
async getAgent(address) {
|
|
177
|
+
const agents = await this.discoverAgents({});
|
|
178
|
+
return agents.find(a => a.address.toLowerCase() === address.toLowerCase()) || null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Configure autonomous mode
|
|
182
|
+
*/
|
|
183
|
+
setAutonomousMode(config) {
|
|
184
|
+
this.autonomousConfig = config;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Hire an agent autonomously
|
|
188
|
+
*/
|
|
189
|
+
async hireAgent(options) {
|
|
190
|
+
console.log(`Hiring agent ${options.agent} for: ${options.task}`);
|
|
191
|
+
return { taskId: `task_${Date.now()}`, agent: options.agent, price: options.maxPrice };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Set webhook for notifications
|
|
195
|
+
*/
|
|
196
|
+
setWebhook(options) {
|
|
197
|
+
console.log(`Webhook configured: ${options.url}`);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Fetch with x402 auto-payment
|
|
201
|
+
*/
|
|
202
|
+
async fetch(url, options) {
|
|
203
|
+
const response = await fetch(url);
|
|
204
|
+
if (response.status === 402 && options?.x402) {
|
|
205
|
+
// Would handle payment automatically
|
|
206
|
+
console.log('402 Payment Required - auto-paying...');
|
|
207
|
+
}
|
|
208
|
+
return response;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get transfer by ID
|
|
212
|
+
*/
|
|
213
|
+
async getTransfer(id) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* List transfer history
|
|
218
|
+
*/
|
|
219
|
+
async listTransfers(options) {
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.LobsterAgent = LobsterAgent;
|
|
224
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction Analytics & Reporting
|
|
3
|
+
*
|
|
4
|
+
* Insights, summaries, and reports on USDC activity.
|
|
5
|
+
*/
|
|
6
|
+
export interface TransactionRecord {
|
|
7
|
+
id: string;
|
|
8
|
+
type: 'send' | 'receive' | 'bridge';
|
|
9
|
+
amount: string;
|
|
10
|
+
fromAddress: string;
|
|
11
|
+
toAddress: string;
|
|
12
|
+
chain: string;
|
|
13
|
+
targetChain?: string;
|
|
14
|
+
txHash: string;
|
|
15
|
+
fee?: string;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
contactName?: string;
|
|
18
|
+
category?: string;
|
|
19
|
+
memo?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DailySummary {
|
|
22
|
+
date: string;
|
|
23
|
+
sent: string;
|
|
24
|
+
received: string;
|
|
25
|
+
net: string;
|
|
26
|
+
txCount: number;
|
|
27
|
+
fees: string;
|
|
28
|
+
}
|
|
29
|
+
export interface CategorySummary {
|
|
30
|
+
category: string;
|
|
31
|
+
sent: string;
|
|
32
|
+
received: string;
|
|
33
|
+
txCount: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ContactSummary {
|
|
36
|
+
name: string;
|
|
37
|
+
address: string;
|
|
38
|
+
sent: string;
|
|
39
|
+
received: string;
|
|
40
|
+
txCount: number;
|
|
41
|
+
lastTxDate: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Analytics Engine
|
|
45
|
+
*/
|
|
46
|
+
export declare class AnalyticsEngine {
|
|
47
|
+
private txPath;
|
|
48
|
+
constructor(dataDir?: string);
|
|
49
|
+
private loadTransactions;
|
|
50
|
+
private saveTransactions;
|
|
51
|
+
/**
|
|
52
|
+
* Record a transaction for analytics
|
|
53
|
+
*/
|
|
54
|
+
recordTransaction(tx: Omit<TransactionRecord, 'id'>): Promise<TransactionRecord>;
|
|
55
|
+
/**
|
|
56
|
+
* Get transactions with filters
|
|
57
|
+
*/
|
|
58
|
+
getTransactions(filters?: {
|
|
59
|
+
type?: TransactionRecord['type'];
|
|
60
|
+
chain?: string;
|
|
61
|
+
fromDate?: string;
|
|
62
|
+
toDate?: string;
|
|
63
|
+
minAmount?: string;
|
|
64
|
+
maxAmount?: string;
|
|
65
|
+
contact?: string;
|
|
66
|
+
category?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
}): Promise<TransactionRecord[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Get daily summaries for a date range
|
|
71
|
+
*/
|
|
72
|
+
getDailySummaries(fromDate: string, toDate: string): Promise<DailySummary[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Get category breakdown
|
|
75
|
+
*/
|
|
76
|
+
getCategoryBreakdown(fromDate?: string, toDate?: string): Promise<CategorySummary[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Get top contacts by volume
|
|
79
|
+
*/
|
|
80
|
+
getTopContacts(limit?: number, fromDate?: string, toDate?: string): Promise<ContactSummary[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Get total stats
|
|
83
|
+
*/
|
|
84
|
+
getTotalStats(fromDate?: string, toDate?: string): Promise<{
|
|
85
|
+
totalSent: string;
|
|
86
|
+
totalReceived: string;
|
|
87
|
+
totalBridged: string;
|
|
88
|
+
netFlow: string;
|
|
89
|
+
totalFees: string;
|
|
90
|
+
txCount: number;
|
|
91
|
+
avgTxSize: string;
|
|
92
|
+
largestTx: TransactionRecord | null;
|
|
93
|
+
mostFrequentContact: ContactSummary | null;
|
|
94
|
+
}>;
|
|
95
|
+
/**
|
|
96
|
+
* Get chain distribution
|
|
97
|
+
*/
|
|
98
|
+
getChainDistribution(fromDate?: string, toDate?: string): Promise<{
|
|
99
|
+
chain: string;
|
|
100
|
+
sent: string;
|
|
101
|
+
received: string;
|
|
102
|
+
txCount: number;
|
|
103
|
+
percentage: string;
|
|
104
|
+
}[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Generate summary report text
|
|
107
|
+
*/
|
|
108
|
+
generateReport(fromDate?: string, toDate?: string): Promise<string>;
|
|
109
|
+
/**
|
|
110
|
+
* Categorize a transaction
|
|
111
|
+
*/
|
|
112
|
+
categorize(txId: string, category: string): Promise<TransactionRecord | null>;
|
|
113
|
+
/**
|
|
114
|
+
* Export transactions to CSV
|
|
115
|
+
*/
|
|
116
|
+
exportCSV(fromDate?: string, toDate?: string): Promise<string>;
|
|
117
|
+
private shortAddress;
|
|
118
|
+
}
|
|
119
|
+
export default AnalyticsEngine;
|
|
120
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../lib/analytics.ts"],"names":[],"mappings":"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"}
|