@aifinpay/agent 0.1.0-alpha.1 → 0.3.0-alpha.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.
Files changed (42) hide show
  1. package/README.md +6 -2
  2. package/dist/agent.d.ts +112 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +312 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/crypto.d.ts +3 -0
  7. package/dist/crypto.d.ts.map +1 -0
  8. package/dist/crypto.js +12 -0
  9. package/dist/crypto.js.map +1 -0
  10. package/dist/errors.d.ts +19 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +22 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/facilitators/aifinpay.d.ts +21 -0
  15. package/dist/facilitators/aifinpay.d.ts.map +1 -0
  16. package/dist/facilitators/aifinpay.js +76 -0
  17. package/dist/facilitators/aifinpay.js.map +1 -0
  18. package/dist/facilitators/base.d.ts +35 -0
  19. package/dist/facilitators/base.d.ts.map +1 -0
  20. package/dist/facilitators/base.js +2 -0
  21. package/dist/facilitators/base.js.map +1 -0
  22. package/dist/facilitators/coinbase.d.ts +20 -0
  23. package/dist/facilitators/coinbase.d.ts.map +1 -0
  24. package/dist/facilitators/coinbase.js +67 -0
  25. package/dist/facilitators/coinbase.js.map +1 -0
  26. package/dist/facilitators/detect.d.ts +9 -0
  27. package/dist/facilitators/detect.d.ts.map +1 -0
  28. package/dist/facilitators/detect.js +33 -0
  29. package/dist/facilitators/detect.js.map +1 -0
  30. package/dist/facilitators/index.d.ts +5 -0
  31. package/dist/facilitators/index.d.ts.map +1 -0
  32. package/dist/facilitators/index.js +4 -0
  33. package/dist/facilitators/index.js.map +1 -0
  34. package/dist/index.d.ts +28 -60
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +22 -197
  37. package/dist/index.js.map +1 -1
  38. package/dist/unifiedAgent.d.ts +222 -0
  39. package/dist/unifiedAgent.d.ts.map +1 -0
  40. package/dist/unifiedAgent.js +498 -0
  41. package/dist/unifiedAgent.js.map +1 -0
  42. package/package.json +16 -9
@@ -0,0 +1,222 @@
1
+ import { type PrivateKeyAccount } from "viem/accounts";
2
+ import { AiFinPayError } from "./errors.js";
3
+ import { Agent, type AgentOptions } from "./agent.js";
4
+ export type ChainId = "solana" | "polygon";
5
+ export interface ProviderEntry {
6
+ name: string;
7
+ display_name?: string;
8
+ preferred_chain: ChainId;
9
+ accepted_chains: ChainId[];
10
+ price_usd: number;
11
+ mode: "per_call" | "session" | "both";
12
+ bridge_url: string;
13
+ merchant_wallet: string;
14
+ service_type?: string;
15
+ url?: string;
16
+ }
17
+ export interface CallOptions {
18
+ provider: string;
19
+ cost?: number;
20
+ chain?: ChainId;
21
+ bridgeUrl?: string;
22
+ body?: unknown;
23
+ method?: string;
24
+ timeoutMs?: number;
25
+ signal?: AbortSignal;
26
+ }
27
+ export interface BalanceSnapshot {
28
+ agent_balance_usd: number;
29
+ chains: {
30
+ solana: {
31
+ sol: number;
32
+ usdc: number;
33
+ msecco_balance: number;
34
+ };
35
+ polygon: {
36
+ matic: number;
37
+ usdc: number;
38
+ msecco_balance: number;
39
+ };
40
+ };
41
+ spend_24h_usd: number;
42
+ budget_caps: {
43
+ daily_usd?: number;
44
+ per_call_usd?: number;
45
+ };
46
+ priced_at: number;
47
+ }
48
+ export interface ReputationSnapshot {
49
+ trust_score: number;
50
+ spend_score: number;
51
+ tenure_days: number;
52
+ verified: boolean;
53
+ flags: string[];
54
+ }
55
+ export interface BudgetCaps {
56
+ daily_usd?: number;
57
+ per_call_usd?: number;
58
+ }
59
+ export interface SessionHandle {
60
+ id: string;
61
+ provider: string;
62
+ chain: ChainId;
63
+ budget_usd: number;
64
+ spent_usd: number;
65
+ remaining_usd: number;
66
+ expires_at: number;
67
+ call(body: unknown): Promise<Response>;
68
+ close(): Promise<SessionReceipt>;
69
+ abandon(): Promise<void>;
70
+ }
71
+ export interface SessionReceipt {
72
+ session_id: string;
73
+ spent_usd: number;
74
+ refund_usd: number;
75
+ settlement_tx: string;
76
+ block: number | string;
77
+ }
78
+ export interface AiFinPayAgentOptions extends AgentOptions {
79
+ registryUrl?: string;
80
+ evmPrivateKey?: `0x${string}`;
81
+ budgetCaps?: BudgetCaps;
82
+ telemetry?: boolean;
83
+ polygonRpc?: string;
84
+ }
85
+ export declare class ProviderUnknownError extends AiFinPayError {
86
+ }
87
+ export declare class WrongChainBalanceError extends AiFinPayError {
88
+ has: ChainId[];
89
+ needed: ChainId;
90
+ constructor(has: ChainId[], needed: ChainId, msg: string);
91
+ }
92
+ export declare class InsufficientFundsError extends AiFinPayError {
93
+ needed_usd: number;
94
+ available_usd: number;
95
+ constructor(needed_usd: number, available_usd: number, msg: string);
96
+ }
97
+ export declare class BudgetCapExceededError extends AiFinPayError {
98
+ kind: "daily" | "per_call";
99
+ constructor(kind: "daily" | "per_call", msg: string);
100
+ }
101
+ export declare class SettlementError extends AiFinPayError {
102
+ reason: string;
103
+ txHash?: string | undefined;
104
+ constructor(reason: string, txHash?: string | undefined);
105
+ }
106
+ export declare class SessionExpiredError extends AiFinPayError {
107
+ session_id: string;
108
+ constructor(session_id: string);
109
+ }
110
+ export declare class AiFinPayAgent {
111
+ readonly inner: Agent;
112
+ readonly evmAccount: PrivateKeyAccount;
113
+ readonly registryUrl: string;
114
+ readonly polygonRpc: string;
115
+ private cachedRegistry?;
116
+ private budgetCaps;
117
+ private spend24h;
118
+ private telemetry;
119
+ private _polygonPublic?;
120
+ private _polygonWallet?;
121
+ private constructor();
122
+ private polygonClients;
123
+ /**
124
+ * Generate a fresh agent — new Solana keypair + new EVM keypair.
125
+ * Use `fromSeed()` to derive both from a single backup phrase instead.
126
+ */
127
+ static new(opts?: AiFinPayAgentOptions): Promise<AiFinPayAgent>;
128
+ /**
129
+ * Derive both keypairs from a single 32-byte hex seed. Same seed →
130
+ * deterministic Solana pubkey AND EVM address. One backup phrase, two
131
+ * chains.
132
+ *
133
+ * Solana key = nacl.sign.keyPair.fromSeed(seed)
134
+ * EVM key = keccak256(seed)[:32] (independent path; not BIP-44
135
+ * compatible — see design notes
136
+ * in 23 - Unified SDK Design).
137
+ *
138
+ * TODO(phase-1): replace with BIP-39/BIP-44 derivation
139
+ * m/44'/501'/0'/0' (Solana) + m/44'/60'/0'/0/0 (EVM) once the
140
+ * wallet-import audit recommendation lands.
141
+ */
142
+ static fromSeed(seedHex: string, opts?: AiFinPayAgentOptions): Promise<AiFinPayAgent>;
143
+ /**
144
+ * Legacy: load the Solana side from an existing keypair, then either
145
+ * generate a fresh EVM key or import one with `attachEvmKey`.
146
+ */
147
+ static fromSolanaSecret(secretB58: string, opts?: AiFinPayAgentOptions): Promise<AiFinPayAgent>;
148
+ get id(): string;
149
+ get solanaAddress(): string;
150
+ get evmAddress(): string;
151
+ fetchRegistry(force?: boolean): Promise<ProviderEntry[]>;
152
+ resolveProvider(name: string): Promise<ProviderEntry>;
153
+ setBudget(caps: BudgetCaps): void;
154
+ private checkBudget;
155
+ /**
156
+ * Chain selection heuristic — see Obsidian/23 - Unified SDK Design §Routing.
157
+ *
158
+ * 1. Explicit override always wins (subject to provider acceptance).
159
+ * 2. Cost ≤ $0.005 + Solana per-call live + Solana accepted → Solana
160
+ * (low gas wins for tiny calls).
161
+ * 3. Cost > $0.05 + Polygon accepted → Polygon
162
+ * (better finality for high-value calls).
163
+ * 4. Middle band → provider.preferred_chain.
164
+ * 5. Fallback → first accepted chain.
165
+ *
166
+ * Solana per-call is gated on the deploy of `b2b_pay_with_split` —
167
+ * until then `solana` selection raises in `call()`.
168
+ */
169
+ private pickChain;
170
+ /**
171
+ * TODO(phase-4): mint AgentPassport on the cheapest chain available
172
+ * with the requested `stake_usd`. For now wires only the Solana side
173
+ * via the existing `reserveSeatInvoice` semantics.
174
+ */
175
+ verify(_args?: {
176
+ stake_usd?: number;
177
+ }): Promise<{
178
+ verified: boolean;
179
+ }>;
180
+ /**
181
+ * TODO(phase-1): pick a chain (preferred USDC on Polygon for stability;
182
+ * fallback Solana SOL). Return signed-tx instructions for the wallet.
183
+ */
184
+ deposit(_usd: number, _opts?: {
185
+ asset?: "USDC" | "USDT" | "SOL" | "MATIC";
186
+ chain?: ChainId;
187
+ }): Promise<unknown>;
188
+ /**
189
+ * High-level paid call. Resolves the provider, picks a chain, builds the
190
+ * payment, sends to the bridge, retries with payment proof.
191
+ *
192
+ * Phase 1 implementation: Polygon per-call splitter via on-chain
193
+ * `B2BSplitter.payMatic()`. Solana per-call branch lights up after
194
+ * Phase 2 (b2b_pay_with_split deploy via Squads).
195
+ */
196
+ call(opts: CallOptions): Promise<Response>;
197
+ /**
198
+ * TODO(phase-3): open a metered budget session.
199
+ */
200
+ openSession(_args: {
201
+ provider: string;
202
+ budget_usd: number;
203
+ ttl_seconds?: number;
204
+ }): Promise<SessionHandle>;
205
+ /**
206
+ * Snapshot the agent's funds across both chains, USD-normalised.
207
+ *
208
+ * Phase 1.4: native MATIC + native SOL via RPC; ERC-20 / SPL token balances
209
+ * deferred (we don't yet need them for the unified `call()` flow which
210
+ * settles in MATIC). Pyth feeds are TODO; for now uses
211
+ * `AIFINPAY_MATIC_USD` and `AIFINPAY_SOL_USD` env, defaulting to 0.7 and 200.
212
+ */
213
+ balance(): Promise<BalanceSnapshot>;
214
+ private fetchPolygonNative;
215
+ private fetchSolanaNative;
216
+ /**
217
+ * TODO(phase-4 / phase-5): query operator backend reputation engine.
218
+ */
219
+ reputation(): Promise<ReputationSnapshot>;
220
+ private reportTelemetry;
221
+ }
222
+ //# sourceMappingURL=unifiedAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unifiedAgent.d.ts","sourceRoot":"","sources":["../src/unifiedAgent.ts"],"names":[],"mappings":"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"}