@aifinpay/agent 1.8.4 → 2.0.0-rc.13
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/PAYMENT_RECEIPTS.md +110 -0
- package/README.md +93 -35
- package/dist/agent.d.ts +6 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +50 -12
- package/dist/agent.js.map +1 -1
- package/dist/agentHistory.d.ts +15 -0
- package/dist/agentHistory.d.ts.map +1 -0
- package/dist/agentHistory.js +47 -0
- package/dist/agentHistory.js.map +1 -0
- package/dist/agentPassport.d.ts +95 -0
- package/dist/agentPassport.d.ts.map +1 -0
- package/dist/agentPassport.js +177 -0
- package/dist/agentPassport.js.map +1 -0
- package/dist/aifp1.d.ts +135 -8
- package/dist/aifp1.d.ts.map +1 -1
- package/dist/aifp1.js +317 -50
- package/dist/aifp1.js.map +1 -1
- package/dist/apiUrl.d.ts +3 -0
- package/dist/apiUrl.d.ts.map +1 -0
- package/dist/apiUrl.js +8 -0
- package/dist/apiUrl.js.map +1 -0
- package/dist/chains.d.ts +4 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +24 -0
- package/dist/chains.js.map +1 -0
- package/dist/deploymentResolver.d.ts +87 -0
- package/dist/deploymentResolver.d.ts.map +1 -0
- package/dist/deploymentResolver.js +145 -0
- package/dist/deploymentResolver.js.map +1 -0
- package/dist/facilitators/aifinpay.d.ts +4 -5
- package/dist/facilitators/aifinpay.d.ts.map +1 -1
- package/dist/facilitators/aifinpay.js +49 -19
- package/dist/facilitators/aifinpay.js.map +1 -1
- package/dist/facilitators/base.d.ts +12 -1
- package/dist/facilitators/base.d.ts.map +1 -1
- package/dist/facilitators/detect.d.ts +3 -3
- package/dist/facilitators/detect.d.ts.map +1 -1
- package/dist/facilitators/detect.js +3 -22
- package/dist/facilitators/detect.js.map +1 -1
- package/dist/facilitators/standard-x402.d.ts +4 -8
- package/dist/facilitators/standard-x402.d.ts.map +1 -1
- package/dist/facilitators/standard-x402.js +218 -92
- package/dist/facilitators/standard-x402.js.map +1 -1
- package/dist/index.d.ts +24 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -34
- package/dist/index.js.map +1 -1
- package/dist/localIdentity.d.ts +17 -0
- package/dist/localIdentity.d.ts.map +1 -0
- package/dist/localIdentity.js +81 -0
- package/dist/localIdentity.js.map +1 -0
- package/dist/settlement.d.ts +198 -0
- package/dist/settlement.d.ts.map +1 -0
- package/dist/settlement.js +429 -0
- package/dist/settlement.js.map +1 -0
- package/dist/settlementHttp.d.ts +10 -0
- package/dist/settlementHttp.d.ts.map +1 -0
- package/dist/settlementHttp.js +70 -0
- package/dist/settlementHttp.js.map +1 -0
- package/dist/settlementV14.d.ts +136 -0
- package/dist/settlementV14.d.ts.map +1 -0
- package/dist/settlementV14.js +170 -0
- package/dist/settlementV14.js.map +1 -0
- package/dist/solanaDeploymentResolver.d.ts +90 -0
- package/dist/solanaDeploymentResolver.d.ts.map +1 -0
- package/dist/solanaDeploymentResolver.js +143 -0
- package/dist/solanaDeploymentResolver.js.map +1 -0
- package/dist/solanaV14Deployments.generated.d.ts +35 -0
- package/dist/solanaV14Deployments.generated.d.ts.map +1 -0
- package/dist/solanaV14Deployments.generated.js +61 -0
- package/dist/solanaV14Deployments.generated.js.map +1 -0
- package/dist/splitterRoutes.d.ts +120 -0
- package/dist/splitterRoutes.d.ts.map +1 -0
- package/dist/splitterRoutes.generated.d.ts +22 -0
- package/dist/splitterRoutes.generated.d.ts.map +1 -0
- package/dist/splitterRoutes.generated.js +459 -0
- package/dist/splitterRoutes.generated.js.map +1 -0
- package/dist/splitterRoutes.js +73 -0
- package/dist/splitterRoutes.js.map +1 -0
- package/dist/unifiedAgent.d.ts +28 -18
- package/dist/unifiedAgent.d.ts.map +1 -1
- package/dist/unifiedAgent.js +85 -325
- package/dist/unifiedAgent.js.map +1 -1
- package/dist/v14Deployments.generated.d.ts +53 -0
- package/dist/v14Deployments.generated.d.ts.map +1 -0
- package/dist/v14Deployments.generated.js +89 -0
- package/dist/v14Deployments.generated.js.map +1 -0
- package/dist/wallet.d.ts +11 -52
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallet.js +27 -51
- package/dist/wallet.js.map +1 -1
- package/package.json +7 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentPassport.d.ts","sourceRoot":"","sources":["../src/agentPassport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { createHash, createPrivateKey, createPublicKey, generateKeyPairSync, sign, verify } from "node:crypto";
|
|
2
|
+
import { aifinpayApiUrl } from "./apiUrl.js";
|
|
3
|
+
export class AgentPassportError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
constructor(message, code = "agent_passport_error") {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.name = "AgentPassportError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const AGENT_ID_RE = /^aifp_agent_[0-9a-f]{32}$/;
|
|
12
|
+
const AGENT_NUMBER_RE = /^AIFP-\d{1,18}$/i;
|
|
13
|
+
const USERNAME_RE = /^@[a-z][a-z0-9_]{2,31}$/;
|
|
14
|
+
export function normalizeAgentPassportIdentifier(identifier) {
|
|
15
|
+
const raw = String(identifier || "").trim();
|
|
16
|
+
if (AGENT_ID_RE.test(raw))
|
|
17
|
+
return raw;
|
|
18
|
+
if (AGENT_NUMBER_RE.test(raw))
|
|
19
|
+
return `AIFP-${raw.split("-")[1]}`;
|
|
20
|
+
const username = raw.startsWith("@") ? raw.toLowerCase() : `@${raw.toLowerCase()}`;
|
|
21
|
+
if (!USERNAME_RE.test(username)) {
|
|
22
|
+
throw new AgentPassportError("identifier must be an immutable aifp_agent_* id, AIFP number, or 3-32 character @username", "invalid_agent_identifier");
|
|
23
|
+
}
|
|
24
|
+
return username;
|
|
25
|
+
}
|
|
26
|
+
function canonicalize(value) {
|
|
27
|
+
if (value === null || typeof value !== "object")
|
|
28
|
+
return JSON.stringify(value);
|
|
29
|
+
if (Array.isArray(value))
|
|
30
|
+
return `[${value.map(canonicalize).join(",")}]`;
|
|
31
|
+
const record = value;
|
|
32
|
+
return `{${Object.keys(record).sort().map((k) => `${JSON.stringify(k)}:${canonicalize(record[k])}`).join(",")}}`;
|
|
33
|
+
}
|
|
34
|
+
function protectedPayload(passport) {
|
|
35
|
+
const wallets = passport.wallets
|
|
36
|
+
.map((w) => ({
|
|
37
|
+
network: w.network,
|
|
38
|
+
chain_family: w.chain_family,
|
|
39
|
+
chain_ref: w.chain_ref ?? null,
|
|
40
|
+
address: w.address,
|
|
41
|
+
public_key: w.public_key ?? null,
|
|
42
|
+
is_primary: Boolean(w.is_primary),
|
|
43
|
+
status: w.status,
|
|
44
|
+
verified_at: w.verified_at == null ? null : Number(w.verified_at),
|
|
45
|
+
}))
|
|
46
|
+
.sort((a, b) => `${a.network}:${a.address}`.localeCompare(`${b.network}:${b.address}`));
|
|
47
|
+
return {
|
|
48
|
+
schema: "aifp3.passport.vnext",
|
|
49
|
+
agent_id: passport.agent_id,
|
|
50
|
+
agent_number: Number(passport.agent_number),
|
|
51
|
+
agent_number_display: passport.agent_number_display,
|
|
52
|
+
username: passport.username ?? null,
|
|
53
|
+
display_name: passport.display_name ?? null,
|
|
54
|
+
status: passport.status,
|
|
55
|
+
verification_level: passport.verification_level,
|
|
56
|
+
holder_public_key: passport.holder_public_key,
|
|
57
|
+
issuer_key_id: passport.issuer.key_id,
|
|
58
|
+
version: Number(passport.version),
|
|
59
|
+
created_at: Number(passport.created_at),
|
|
60
|
+
updated_at: Number(passport.updated_at),
|
|
61
|
+
wallets,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function validateResolvedIdentity(value) {
|
|
65
|
+
if (!value || typeof value !== "object")
|
|
66
|
+
throw new AgentPassportError("invalid Agent Passport response");
|
|
67
|
+
const v = value;
|
|
68
|
+
if (typeof v.agent_id !== "string" || !AGENT_ID_RE.test(v.agent_id))
|
|
69
|
+
throw new AgentPassportError("invalid agent_id in Agent Passport response");
|
|
70
|
+
if (typeof v.agent_number !== "number" || !Number.isSafeInteger(v.agent_number) || v.agent_number <= 0)
|
|
71
|
+
throw new AgentPassportError("invalid agent_number in Agent Passport response");
|
|
72
|
+
if (typeof v.agent_number_display !== "string" || !AGENT_NUMBER_RE.test(v.agent_number_display))
|
|
73
|
+
throw new AgentPassportError("invalid agent_number_display in Agent Passport response");
|
|
74
|
+
if (v.username !== null && (typeof v.username !== "string" || !USERNAME_RE.test(v.username)))
|
|
75
|
+
throw new AgentPassportError("invalid username in Agent Passport response");
|
|
76
|
+
if (!v.issuer || typeof v.issuer !== "object")
|
|
77
|
+
throw new AgentPassportError("Agent Passport response has no issuer proof");
|
|
78
|
+
if (!Array.isArray(v.wallets))
|
|
79
|
+
throw new AgentPassportError("Agent Passport response has no wallets array");
|
|
80
|
+
const wallets = v.wallets.map((raw) => {
|
|
81
|
+
if (!raw || typeof raw !== "object")
|
|
82
|
+
throw new AgentPassportError("invalid wallet binding");
|
|
83
|
+
const w = raw;
|
|
84
|
+
if (typeof w.network !== "string" || typeof w.chain_family !== "string" || typeof w.address !== "string")
|
|
85
|
+
throw new AgentPassportError("invalid wallet binding fields");
|
|
86
|
+
return raw;
|
|
87
|
+
});
|
|
88
|
+
return { ...value, wallets };
|
|
89
|
+
}
|
|
90
|
+
async function jsonRequest(url, init, fetchImpl = fetch) {
|
|
91
|
+
const response = await fetchImpl(url, {
|
|
92
|
+
...init,
|
|
93
|
+
headers: { accept: "application/json", ...(init?.body ? { "content-type": "application/json" } : {}), ...(init?.headers || {}) },
|
|
94
|
+
});
|
|
95
|
+
let body;
|
|
96
|
+
try {
|
|
97
|
+
body = await response.json();
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
throw new AgentPassportError(`Agent Passport endpoint returned non-JSON HTTP ${response.status}`, "agent_passport_non_json");
|
|
101
|
+
}
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
const rec = body && typeof body === "object" ? body : {};
|
|
104
|
+
throw new AgentPassportError(typeof rec.error === "string" ? rec.error : `Agent Passport HTTP ${response.status}`, typeof rec.error === "string" ? rec.error : "agent_passport_http_error");
|
|
105
|
+
}
|
|
106
|
+
return body;
|
|
107
|
+
}
|
|
108
|
+
/** Resolve by immutable agent_id, permanent AIFP number or @username. */
|
|
109
|
+
export async function resolveAgentPassport(identifier, baseUrl = "https://aifinpay.io", fetchImpl = fetch) {
|
|
110
|
+
const normalized = normalizeAgentPassportIdentifier(identifier);
|
|
111
|
+
const body = await jsonRequest(aifinpayApiUrl(baseUrl, `/api/agent/resolve/${encodeURIComponent(normalized)}`), undefined, fetchImpl);
|
|
112
|
+
return validateResolvedIdentity(body.agent);
|
|
113
|
+
}
|
|
114
|
+
/** Generate the holder key locally. The private key is never sent to AiFinPay. */
|
|
115
|
+
export function generateAgentPassportHolderKeypair() {
|
|
116
|
+
const { publicKey, privateKey } = generateKeyPairSync("ed25519");
|
|
117
|
+
return {
|
|
118
|
+
public_key_b64: publicKey.export({ format: "der", type: "spki" }).toString("base64"),
|
|
119
|
+
private_key_b64: privateKey.export({ format: "der", type: "pkcs8" }).toString("base64"),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function signAgentPassportHolderMessage(privateKeyB64, message) {
|
|
123
|
+
const key = createPrivateKey({ key: Buffer.from(privateKeyB64, "base64"), format: "der", type: "pkcs8" });
|
|
124
|
+
return sign(null, Buffer.from(message, "utf8"), key).toString("base64");
|
|
125
|
+
}
|
|
126
|
+
export async function issueAgentPassport(input, baseUrl = "https://aifinpay.io") {
|
|
127
|
+
const body = await jsonRequest(`${baseUrl.replace(/\/$/, "")}/api/aifp3/passports`, { method: "POST", body: JSON.stringify(input) });
|
|
128
|
+
return validateResolvedIdentity(body.passport);
|
|
129
|
+
}
|
|
130
|
+
export async function createAgentPassport(input = {}, baseUrl = "https://aifinpay.io") {
|
|
131
|
+
const holder = generateAgentPassportHolderKeypair();
|
|
132
|
+
const passport = await issueAgentPassport({ ...input, holder_public_key: holder.public_key_b64 }, baseUrl);
|
|
133
|
+
return { passport, holder };
|
|
134
|
+
}
|
|
135
|
+
export async function requestAgentPassportWalletBinding(identifier, input, baseUrl = "https://aifinpay.io") {
|
|
136
|
+
const normalized = normalizeAgentPassportIdentifier(identifier);
|
|
137
|
+
const body = await jsonRequest(`${baseUrl.replace(/\/$/, "")}/api/aifp3/passports/${encodeURIComponent(normalized)}/wallets/challenge`, { method: "POST", body: JSON.stringify(input) });
|
|
138
|
+
return body.challenge;
|
|
139
|
+
}
|
|
140
|
+
export async function confirmAgentPassportWalletBinding(identifier, input, baseUrl = "https://aifinpay.io") {
|
|
141
|
+
const normalized = normalizeAgentPassportIdentifier(identifier);
|
|
142
|
+
const body = await jsonRequest(`${baseUrl.replace(/\/$/, "")}/api/aifp3/passports/${encodeURIComponent(normalized)}/wallets/confirm`, { method: "POST", body: JSON.stringify(input) });
|
|
143
|
+
return validateResolvedIdentity(body.passport);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Verify both the issuer signature and the protected payload hash against an
|
|
147
|
+
* independently pinned AiFinPay issuer public key. Never trust only the key
|
|
148
|
+
* returned inside the same passport response.
|
|
149
|
+
*/
|
|
150
|
+
export function verifyAgentPassportIssuerSignature(passport, trustedIssuerPublicKeyB64) {
|
|
151
|
+
if (passport.integrity_state !== "ok")
|
|
152
|
+
return false;
|
|
153
|
+
if (passport.issuer.public_key !== trustedIssuerPublicKeyB64)
|
|
154
|
+
return false;
|
|
155
|
+
try {
|
|
156
|
+
const canonical = canonicalize(protectedPayload(passport));
|
|
157
|
+
const hashOk = createHash("sha256").update(Buffer.from(canonical, "utf8")).digest("hex") === passport.protected_payload_hash;
|
|
158
|
+
if (!hashOk)
|
|
159
|
+
return false;
|
|
160
|
+
const key = createPublicKey({ key: Buffer.from(trustedIssuerPublicKeyB64, "base64"), format: "der", type: "spki" });
|
|
161
|
+
return verify(null, Buffer.from(canonical, "utf8"), key, Buffer.from(passport.issuer.signature, "base64"));
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export function agentPassportWallet(passport, network) {
|
|
168
|
+
if (passport.status !== "active" || passport.integrity_state !== "ok") {
|
|
169
|
+
throw new AgentPassportError(`Agent Passport is ${passport.integrity_state !== "ok" ? "integrity_failed" : passport.status}`, "agent_not_active");
|
|
170
|
+
}
|
|
171
|
+
const candidates = passport.wallets.filter((w) => w.network === network && w.status === "active");
|
|
172
|
+
const selected = candidates.find((w) => w.is_primary) ?? candidates[0];
|
|
173
|
+
if (!selected)
|
|
174
|
+
throw new AgentPassportError(`Agent Passport has no verified ${network} wallet`, "wallet_binding_missing");
|
|
175
|
+
return selected;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=agentPassport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentPassport.js","sourceRoot":"","sources":["../src/agentPassport.ts"],"names":[],"mappings":"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"}
|
package/dist/aifp1.d.ts
CHANGED
|
@@ -13,13 +13,30 @@ export declare class Aifp1SettlementUnsupportedError extends Aifp1Error {
|
|
|
13
13
|
* Carries the tx hash because that is the only thing standing between the
|
|
14
14
|
* caller and a lost payment: the quote is still settleable through
|
|
15
15
|
* `POST /v1/pay` by hand with the same Idempotency-Key, and without the hash
|
|
16
|
-
* in the error there is nothing to retry with.
|
|
16
|
+
* in the error there is nothing to retry with. `recovery` additionally preserves
|
|
17
|
+
* the quote nonce and issuer domain needed to sign a fresh receipt claim.
|
|
17
18
|
*/
|
|
18
19
|
export declare class Aifp1PayError extends Aifp1Error {
|
|
19
20
|
readonly txRef?: string | undefined;
|
|
20
21
|
readonly quoteId?: string | undefined;
|
|
21
|
-
|
|
22
|
+
readonly recovery?: Aifp1PaymentRecovery | undefined;
|
|
23
|
+
constructor(msg: string, txRef?: string | undefined, quoteId?: string | undefined, recovery?: Aifp1PaymentRecovery | undefined);
|
|
22
24
|
}
|
|
25
|
+
/** Public settlement context; contains no private key or authorization signature. */
|
|
26
|
+
export interface Aifp1PaymentRecovery {
|
|
27
|
+
apiBaseUrl: string;
|
|
28
|
+
quote: Aifp1Quote;
|
|
29
|
+
txRef: `0x${string}`;
|
|
30
|
+
asset: string;
|
|
31
|
+
paymentIssuer?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface Aifp1PaymentSigner {
|
|
34
|
+
payerAddress: string;
|
|
35
|
+
signPaymentAuthorization(message: string): Promise<string>;
|
|
36
|
+
fetchImpl?: typeof fetch;
|
|
37
|
+
}
|
|
38
|
+
/** Recover an already settled Polygon payment. Never sends an on-chain transaction. */
|
|
39
|
+
export declare function recoverAifp1Payment(recovery: Aifp1PaymentRecovery, signer: Aifp1PaymentSigner, options?: Pick<Aifp1FetchOptions, 'settlementConfirmMs' | 'apiTimeoutMs' | 'paymentIssuer'>): Promise<Aifp1PayResult>;
|
|
23
40
|
/** The gateway rejected a receipt we believed covered the request. */
|
|
24
41
|
export declare class Aifp1ReceiptRejectedError extends Aifp1Error {
|
|
25
42
|
}
|
|
@@ -42,6 +59,13 @@ export interface Aifp1Challenge {
|
|
|
42
59
|
/** POST /v1/quote 200 body — routes/aifp.js (`used` is stripped server-side). */
|
|
43
60
|
export interface Aifp1Quote {
|
|
44
61
|
quote_id: string;
|
|
62
|
+
payer?: string;
|
|
63
|
+
network_mode?: "live" | "test";
|
|
64
|
+
payment_authorization?: {
|
|
65
|
+
scheme: 'wallet-signature-v1';
|
|
66
|
+
domain: string;
|
|
67
|
+
max_age_seconds: number;
|
|
68
|
+
};
|
|
45
69
|
merchant_id: string;
|
|
46
70
|
resource: string;
|
|
47
71
|
scope: Aifp1Scope;
|
|
@@ -55,28 +79,90 @@ export interface Aifp1Quote {
|
|
|
55
79
|
accepted_assets: string[];
|
|
56
80
|
accepted_chains: string[];
|
|
57
81
|
pay_to: Record<string, string>;
|
|
58
|
-
/**
|
|
82
|
+
/** The target and calldata the receipt verifier expects for this quote. */
|
|
83
|
+
settlement_call?: {
|
|
84
|
+
chain: string;
|
|
85
|
+
contract: string;
|
|
86
|
+
splitter_version: string;
|
|
87
|
+
asset: string;
|
|
88
|
+
function: string;
|
|
89
|
+
arg_encoding: string;
|
|
90
|
+
value_wei: string;
|
|
91
|
+
args: {
|
|
92
|
+
payment_id: string;
|
|
93
|
+
merchant: string;
|
|
94
|
+
gross_amount: string;
|
|
95
|
+
ip_creator: string;
|
|
96
|
+
valid_until: number;
|
|
97
|
+
order_id: string;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
/** Native Polygon v1.3 gross settlement, when enabled by backend readiness. */
|
|
59
101
|
native_settlement?: {
|
|
60
102
|
asset: string;
|
|
61
103
|
decimals: number;
|
|
62
104
|
rate_usd: string;
|
|
105
|
+
rate_fixed_at?: string;
|
|
63
106
|
total_wei: string;
|
|
107
|
+
gross_wei?: string;
|
|
108
|
+
payer_total_wei?: string;
|
|
64
109
|
merchant_wei: string;
|
|
65
110
|
treasury_wei: string;
|
|
66
111
|
creator_wei: string;
|
|
112
|
+
valid_until?: number | string;
|
|
113
|
+
settlement_semantics?: "gross-inclusive";
|
|
67
114
|
};
|
|
68
115
|
settlement: {
|
|
69
116
|
batch_units: string;
|
|
70
117
|
total_units: string;
|
|
71
|
-
|
|
118
|
+
gross_units: string;
|
|
119
|
+
payer_total_units: string;
|
|
120
|
+
merchant_units: string;
|
|
121
|
+
protocol_fee_units: string;
|
|
122
|
+
creator_units: string;
|
|
123
|
+
/** Canonical form, or the backend's retained legacy breakdown (not an extra fee). */
|
|
124
|
+
fee_on_top: false | {
|
|
72
125
|
provider: string;
|
|
73
126
|
treasury: string;
|
|
74
127
|
creator: string;
|
|
75
128
|
};
|
|
129
|
+
settlement_semantics?: "gross-inclusive";
|
|
76
130
|
};
|
|
77
131
|
nonce: string;
|
|
78
132
|
expires_at: string;
|
|
79
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* A one-object, human-and-LLM-readable summary of what a quote actually buys.
|
|
136
|
+
*
|
|
137
|
+
* The raw quote answers "1.06 POL" and leaves the agent — or the person reading
|
|
138
|
+
* over its shoulder — to work out FOR WHAT. That is the gap an agent-flow audit
|
|
139
|
+
* flagged: a payment prompt that states an amount without the terms is a prompt
|
|
140
|
+
* a careful agent should refuse, and a careless one over-pays on. Every field
|
|
141
|
+
* here already exists in the quote; this just assembles them into the sentence
|
|
142
|
+
* a reasonable payer needs before signing.
|
|
143
|
+
*/
|
|
144
|
+
export interface QuoteSummary {
|
|
145
|
+
/** One line, safe to show a user or feed an LLM: what, how much, how many, until when. */
|
|
146
|
+
headline: string;
|
|
147
|
+
amount_usd: string;
|
|
148
|
+
/** The on-chain figure and its asset, when the quote is settled natively. */
|
|
149
|
+
pay: {
|
|
150
|
+
amount: string;
|
|
151
|
+
asset: string;
|
|
152
|
+
} | null;
|
|
153
|
+
/** How many requests this batch covers, and each request's weight. */
|
|
154
|
+
requests: number;
|
|
155
|
+
unit_quota: number;
|
|
156
|
+
/** WHERE the batch may be spent — the single most misread field (see the
|
|
157
|
+
* wildcard bug): "exact" buys one path, "prefix" buys a subtree. */
|
|
158
|
+
scope: Aifp1Scope;
|
|
159
|
+
resource: string;
|
|
160
|
+
/** When the quote stops being settleable. */
|
|
161
|
+
expires_at: string;
|
|
162
|
+
/** The protocol fee, stated up front. */
|
|
163
|
+
fee_bps: number | null;
|
|
164
|
+
}
|
|
165
|
+
export declare function describeQuote(q: Aifp1Quote): QuoteSummary;
|
|
80
166
|
/** POST /v1/pay 200 body — routes/aifp.js. */
|
|
81
167
|
export interface Aifp1PayResult {
|
|
82
168
|
receipt_id: string;
|
|
@@ -128,7 +214,7 @@ export declare function prefixHint(path: string): string;
|
|
|
128
214
|
* treated as "allow all", because that is the shape a config bug takes.
|
|
129
215
|
*/
|
|
130
216
|
export declare const DEFAULT_GATEWAY_ORIGINS: readonly ["https://gateway.aifinpay.io"];
|
|
131
|
-
export declare function parseGatewayUrl(url: string, allowedOrigins?: readonly string[]): {
|
|
217
|
+
export declare function parseGatewayUrl(url: string, allowedOrigins?: readonly string[], resourcePathMode?: "gateway" | "direct"): {
|
|
132
218
|
site: string;
|
|
133
219
|
slug: string;
|
|
134
220
|
restPath: string;
|
|
@@ -236,6 +322,15 @@ export declare class Aifp1ReceiptCache {
|
|
|
236
322
|
get size(): number;
|
|
237
323
|
}
|
|
238
324
|
export interface Aifp1FetchOptions {
|
|
325
|
+
/** Reviewed v1.3 deployment pin, supplied independently of the quote server.
|
|
326
|
+
* The receipt flow currently verifies Polygon native settlements only. */
|
|
327
|
+
settlementPin?: import("./settlement.js").TrustedSettlementRoutePin;
|
|
328
|
+
/** Independent native/USD observation from the caller's trusted price source,
|
|
329
|
+
* never copied from the payment quote. Required with settlementPin; <=60s old. */
|
|
330
|
+
nativeUsdPrice?: {
|
|
331
|
+
usd: number;
|
|
332
|
+
observedAtMs: number;
|
|
333
|
+
};
|
|
239
334
|
/**
|
|
240
335
|
* How wide a batch to buy. Default "prefix" — see the comment on
|
|
241
336
|
* resolveScope() for why the default is not "exact".
|
|
@@ -250,14 +345,26 @@ export interface Aifp1FetchOptions {
|
|
|
250
345
|
* the tiers move.
|
|
251
346
|
*/
|
|
252
347
|
units?: number;
|
|
348
|
+
/** Maximum quoted batch cost in USD; only tightens the agent's budget caps. */
|
|
349
|
+
maxAmountUsd?: number;
|
|
253
350
|
/** Where /v1/quote and /v1/pay live. Default https://api.aifinpay.io */
|
|
254
351
|
apiBaseUrl?: string;
|
|
352
|
+
/** Per-API request deadline, including the body. Default 15 seconds. */
|
|
353
|
+
apiTimeoutMs?: number;
|
|
354
|
+
/** Independently configured receipt issuer. Defaults to https://api.aifinpay.io. */
|
|
355
|
+
paymentIssuer?: string;
|
|
255
356
|
/**
|
|
256
357
|
* Gateway origins this client will settle against. Defaults to
|
|
257
358
|
* DEFAULT_GATEWAY_ORIGINS — set it only for a self-hosted gateway, and
|
|
258
359
|
* never to a host you do not control the paywall of.
|
|
259
360
|
*/
|
|
260
361
|
gatewayOrigins?: readonly string[];
|
|
362
|
+
/**
|
|
363
|
+
* "gateway" strips the hosted merchant slug (default). "direct" uses the
|
|
364
|
+
* full URL pathname and probes for the merchant before reusing a receipt.
|
|
365
|
+
* Direct origins must still be explicitly trusted through gatewayOrigins.
|
|
366
|
+
*/
|
|
367
|
+
resourcePathMode?: "gateway" | "direct";
|
|
261
368
|
/** Value for the AIFP-Agent-Id header; defaults to the agent's EVM address. */
|
|
262
369
|
agentId?: string;
|
|
263
370
|
/** How long to keep retrying /v1/pay while the chain catches up (AIFP-425). */
|
|
@@ -275,13 +382,21 @@ export interface Aifp1Deps {
|
|
|
275
382
|
cache: Aifp1ReceiptCache;
|
|
276
383
|
/** AIFP-Agent-Id / agent_id — a 0x address, or agent policies cannot key on it. */
|
|
277
384
|
agentId: string;
|
|
385
|
+
/** Actual settlement wallet, independent of any display/agent identifier. */
|
|
386
|
+
payerAddress: string;
|
|
387
|
+
signPaymentAuthorization(message: string): Promise<string>;
|
|
278
388
|
/**
|
|
279
|
-
* Settle
|
|
280
|
-
*
|
|
389
|
+
* Settle one canonical v1.3 gross amount, returning a hash whose transaction
|
|
390
|
+
* was included AND succeeded. Implementations must independently verify the
|
|
391
|
+
* deployment/runtime profile before signing.
|
|
281
392
|
*/
|
|
282
393
|
settle(p: {
|
|
283
394
|
merchantWallet: `0x${string}`;
|
|
284
|
-
|
|
395
|
+
grossWei: bigint;
|
|
396
|
+
merchantWei: bigint;
|
|
397
|
+
treasuryWei: bigint;
|
|
398
|
+
creatorWei: bigint;
|
|
399
|
+
validUntil: bigint;
|
|
285
400
|
orderId: string;
|
|
286
401
|
}): Promise<`0x${string}`>;
|
|
287
402
|
/** Per-call cap. false ⇒ the caller asked to skip rather than throw. */
|
|
@@ -305,4 +420,16 @@ export interface Aifp1Deps {
|
|
|
305
420
|
* already has.
|
|
306
421
|
*/
|
|
307
422
|
export declare function aifp1Fetch(deps: Aifp1Deps, url: string, init?: RequestInit, opts?: Aifp1FetchOptions): Promise<Response | null>;
|
|
423
|
+
/** Fixed, domain-separated receipt claim; sign with the wallet that settled. */
|
|
424
|
+
export declare function paymentAuthorizationMessage(p: {
|
|
425
|
+
quote: Aifp1Quote;
|
|
426
|
+
apiBase: string;
|
|
427
|
+
chain: string;
|
|
428
|
+
txRef: string;
|
|
429
|
+
asset: string;
|
|
430
|
+
idempotencyKey: string;
|
|
431
|
+
payer: string;
|
|
432
|
+
expiresAt: number;
|
|
433
|
+
issuer?: string;
|
|
434
|
+
}): string;
|
|
308
435
|
//# sourceMappingURL=aifp1.d.ts.map
|
package/dist/aifp1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aifp1.d.ts","sourceRoot":"","sources":["../src/aifp1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aifp1.d.ts","sourceRoot":"","sources":["../src/aifp1.ts"],"names":[],"mappings":"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"}
|