@rubicon-caliga/core 0.1.0 → 0.1.1
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/contract.d.ts +3 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/pricing.d.ts +7 -6
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js.map +1 -1
- package/dist/protocol.d.ts +95 -6
- package/dist/protocol.d.ts.map +1 -1
- package/dist/session.d.ts +6 -4
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +3 -3
- package/dist/session.js.map +1 -1
- package/package.json +3 -4
- package/src/contract.ts +3 -0
- package/src/pricing.ts +7 -6
- package/src/protocol.ts +101 -6
- package/src/session.ts +6 -4
package/dist/contract.d.ts
CHANGED
|
@@ -91,6 +91,9 @@ export interface PaymentActivity {
|
|
|
91
91
|
payTo?: `0x${string}`;
|
|
92
92
|
transactionHash?: string;
|
|
93
93
|
transactionHashes?: string[];
|
|
94
|
+
settlementId?: string;
|
|
95
|
+
settlementIds?: string[];
|
|
96
|
+
buyerWalletAddress?: `0x${string}`;
|
|
94
97
|
transferId?: string;
|
|
95
98
|
createdAt: string;
|
|
96
99
|
}
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhF,eAAO,MAAM,oBAAoB,EAAE,YAAqB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,EAAE,YAAY,CAAC;IACjC,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,YAAY,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,YAAY,CAAC;IAClC,gBAAgB,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,YAAY,CAAC;IAClC,gBAAgB,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,YAAY,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/pricing.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export type MeteringUnit = "word";
|
|
2
2
|
/**
|
|
3
3
|
* The atomic content unit in Rubicon is exactly one word. A quote describes the
|
|
4
|
-
* price the creator earns for a single word and the amount
|
|
5
|
-
* release one additional word.
|
|
4
|
+
* price the creator earns for a single word and the amount deducted from the
|
|
5
|
+
* buyer's session or chunk authorization to release one additional word.
|
|
6
6
|
*
|
|
7
|
-
* Rubicon never
|
|
8
|
-
*
|
|
7
|
+
* Rubicon never changes the product unit to chunks. Circle / Arc authorization
|
|
8
|
+
* may cover a whole session or multiple words, but application-level accounting
|
|
9
|
+
* is always one delivered word = one paid unit.
|
|
9
10
|
*/
|
|
10
11
|
export interface WordPriceQuote {
|
|
11
12
|
currency: "USDC";
|
|
@@ -14,12 +15,12 @@ export interface WordPriceQuote {
|
|
|
14
15
|
pricePerWordAtomic: `${bigint}`;
|
|
15
16
|
/** Rubicon gateway fee in basis points. Defaults to 0. */
|
|
16
17
|
gatewayFeeBps: number;
|
|
17
|
-
/** Exact amount the buyer
|
|
18
|
+
/** Exact amount consumed from the buyer authorization for one word. */
|
|
18
19
|
wordPaymentAtomic: `${bigint}`;
|
|
19
20
|
}
|
|
20
21
|
export interface WordUsageReport {
|
|
21
22
|
unit: MeteringUnit;
|
|
22
|
-
/** Number of individually delivered, individually
|
|
23
|
+
/** Number of individually delivered, individually metered words. */
|
|
23
24
|
wordsDelivered: number;
|
|
24
25
|
/** Full word price accruing to the creator (no Rubicon fee deducted). */
|
|
25
26
|
creatorAmountAtomic: `${bigint}`;
|
package/dist/pricing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,sDAAsD;IACtD,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAAC;IAChC,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;IACjC,wEAAwE;IACxE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B,wDAAwD;IACxD,eAAe,EAAE,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,cAAc,CAUjB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,eAAe,CAWlB"}
|
package/dist/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoC5C,MAAM,UAAU,YAAY,CAAC,KAG5B;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC5E,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,MAAM;QACpB,kBAAkB,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE;QACjD,aAAa;QACb,iBAAiB,EAAE,GAAG,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3D,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,mBAAmB,EAAE,GAAG,aAAa,EAAE;QACvC,gBAAgB,EAAE,GAAG,KAAK,GAAG,aAAa,EAAE;QAC5C,eAAe,EAAE,GAAG,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface Budget {
|
|
|
6
6
|
currency: "USDC";
|
|
7
7
|
maxAmountAtomic: AtomicAmount;
|
|
8
8
|
}
|
|
9
|
+
export type AuthorizationMode = "session" | "chunk" | "word";
|
|
9
10
|
/** Safe public article metadata. Never includes unpaid body text. */
|
|
10
11
|
export interface ArticleSummary {
|
|
11
12
|
articleId: string;
|
|
@@ -18,8 +19,18 @@ export interface ArticleSummary {
|
|
|
18
19
|
pricePerWordAtomic: AtomicAmount;
|
|
19
20
|
/** Maximum possible total price to read the whole article. */
|
|
20
21
|
maxArticlePriceAtomic: AtomicAmount;
|
|
22
|
+
/** Public seller settlement terms for paid reads. Present when a verified wallet exists. */
|
|
23
|
+
paymentTerms?: SellerPaymentTerms;
|
|
21
24
|
sections: ArticleSectionSummary[];
|
|
22
25
|
}
|
|
26
|
+
export interface SellerPaymentTerms {
|
|
27
|
+
asset: "USDC";
|
|
28
|
+
network: string;
|
|
29
|
+
networkLabel?: string;
|
|
30
|
+
payTo: `0x${string}`;
|
|
31
|
+
pricePerWordAtomic: AtomicAmount;
|
|
32
|
+
meteringUnit: "word";
|
|
33
|
+
}
|
|
23
34
|
/** Safe per-section navigation metadata. Headings only, no body content. */
|
|
24
35
|
export interface ArticleSectionSummary {
|
|
25
36
|
sectionId: string;
|
|
@@ -80,8 +91,26 @@ export interface StartSessionRequest {
|
|
|
80
91
|
conversationId?: string;
|
|
81
92
|
sectionId?: string;
|
|
82
93
|
budget: Budget;
|
|
94
|
+
/** Optional buyer estimate used to size a session or chunk authorization. */
|
|
95
|
+
predictedWords?: number;
|
|
83
96
|
metadata?: Record<string, unknown>;
|
|
84
97
|
}
|
|
98
|
+
export interface SessionAuthorizationRequired {
|
|
99
|
+
sessionId: string;
|
|
100
|
+
authorizationMode: AuthorizationMode;
|
|
101
|
+
meteringUnit: "word";
|
|
102
|
+
asset: "USDC";
|
|
103
|
+
network?: string;
|
|
104
|
+
payTo?: `0x${string}`;
|
|
105
|
+
pricePerWordAtomic: AtomicAmount;
|
|
106
|
+
/** Maximum USDC the buyer is willing to authorize for this session/chunk. */
|
|
107
|
+
maxAuthorizedAtomic: AtomicAmount;
|
|
108
|
+
/** Number of words covered by the current authorization cap. */
|
|
109
|
+
maxAuthorizedWords: number;
|
|
110
|
+
settlement: "actual_usage_on_close" | "actual_usage_per_chunk" | "per_word_compatibility";
|
|
111
|
+
resource: string;
|
|
112
|
+
expiresAt: string;
|
|
113
|
+
}
|
|
85
114
|
export interface StartSessionResponse {
|
|
86
115
|
sessionId: string;
|
|
87
116
|
state: SessionState;
|
|
@@ -95,20 +124,35 @@ export interface StartSessionResponse {
|
|
|
95
124
|
/** Exact amount the buyer pays to release one additional word. */
|
|
96
125
|
wordPaymentAtomic: AtomicAmount;
|
|
97
126
|
gatewayFeeBps: number;
|
|
98
|
-
/**
|
|
127
|
+
/** Circle / Arc payment requirement for a session or chunk authorization. */
|
|
128
|
+
authorizationRequired?: SessionAuthorizationRequired;
|
|
129
|
+
/** @deprecated Compatibility challenge for legacy one-word x402 clients. */
|
|
99
130
|
paymentRequired?: unknown;
|
|
100
131
|
expiresAt: string;
|
|
132
|
+
authorizationMode?: AuthorizationMode;
|
|
133
|
+
wordsAuthorized?: number;
|
|
101
134
|
wordsPaid: number;
|
|
102
135
|
wordsDelivered: number;
|
|
103
136
|
paidAtomic: AtomicAmount;
|
|
104
137
|
}
|
|
105
138
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
139
|
+
* Authorization for a session stream. The gateway meters delivered words against
|
|
140
|
+
* the authorized cap and settles actual usage when the session closes.
|
|
141
|
+
*/
|
|
142
|
+
export interface StreamAuthorizationRequest {
|
|
143
|
+
authorizationPayload: unknown;
|
|
144
|
+
idempotencyKey?: string;
|
|
145
|
+
maxWords?: number;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Chunk or legacy word-level payment. `idempotencyKey` ties the authorization to
|
|
149
|
+
* a specific stream position so retries never release or charge words twice.
|
|
108
150
|
*/
|
|
109
151
|
export interface StreamPaymentRequest {
|
|
110
152
|
paymentPayload: unknown;
|
|
111
153
|
idempotencyKey?: string;
|
|
154
|
+
/** Multi-word fallback cap. Omitted or 1 preserves legacy one-word behavior. */
|
|
155
|
+
maxWords?: number;
|
|
112
156
|
}
|
|
113
157
|
export interface StreamPaymentResponse {
|
|
114
158
|
accepted: boolean;
|
|
@@ -121,11 +165,38 @@ export interface StreamPaymentResponse {
|
|
|
121
165
|
completed: boolean;
|
|
122
166
|
/** Canonical, per-word settlement receipt. Present whenever a word is released. */
|
|
123
167
|
payment?: WordPaymentReceipt;
|
|
124
|
-
|
|
168
|
+
authorizationMode?: AuthorizationMode;
|
|
169
|
+
remainingAuthorizedAtomic?: AtomicAmount;
|
|
170
|
+
/** On-chain settlement transaction hash, when the payment facilitator returns one. */
|
|
125
171
|
transactionHash?: string;
|
|
126
172
|
/** All on-chain settlement transaction hashes for this payment, when available. */
|
|
127
173
|
transactionHashes?: string[];
|
|
128
|
-
/**
|
|
174
|
+
/** Gateway/facilitator settlement identifier, such as a Circle x402 transfer UUID. */
|
|
175
|
+
settlementId?: string;
|
|
176
|
+
settlementIds?: string[];
|
|
177
|
+
buyerWalletAddress?: `0x${string}`;
|
|
178
|
+
/** Gateway/facilitator transfer identifier, when distinct from an on-chain hash. */
|
|
179
|
+
transferId?: string;
|
|
180
|
+
}
|
|
181
|
+
export interface StreamChunkResponse {
|
|
182
|
+
accepted: boolean;
|
|
183
|
+
words: Array<{
|
|
184
|
+
sequence: number;
|
|
185
|
+
word: string;
|
|
186
|
+
priceAtomic: AtomicAmount;
|
|
187
|
+
payment?: WordPaymentReceipt;
|
|
188
|
+
}>;
|
|
189
|
+
text: string;
|
|
190
|
+
wordsPaid: number;
|
|
191
|
+
wordsDelivered: number;
|
|
192
|
+
paidAtomic: AtomicAmount;
|
|
193
|
+
completed: boolean;
|
|
194
|
+
authorizationMode?: AuthorizationMode;
|
|
195
|
+
transactionHash?: string;
|
|
196
|
+
transactionHashes?: string[];
|
|
197
|
+
settlementId?: string;
|
|
198
|
+
settlementIds?: string[];
|
|
199
|
+
buyerWalletAddress?: `0x${string}`;
|
|
129
200
|
transferId?: string;
|
|
130
201
|
}
|
|
131
202
|
export interface WordPaymentReceipt {
|
|
@@ -140,7 +211,11 @@ export interface WordPaymentReceipt {
|
|
|
140
211
|
payTo?: `0x${string}`;
|
|
141
212
|
transactionHash?: string;
|
|
142
213
|
transactionHashes?: string[];
|
|
143
|
-
/**
|
|
214
|
+
/** Gateway/facilitator settlement identifier, such as a Circle x402 transfer UUID. */
|
|
215
|
+
settlementId?: string;
|
|
216
|
+
settlementIds?: string[];
|
|
217
|
+
buyerWalletAddress?: `0x${string}`;
|
|
218
|
+
/** Gateway/facilitator transfer identifier, when distinct from an on-chain hash. */
|
|
144
219
|
transferId?: string;
|
|
145
220
|
settledAt: string;
|
|
146
221
|
}
|
|
@@ -148,9 +223,15 @@ export interface PaymentVerification {
|
|
|
148
223
|
accepted: boolean;
|
|
149
224
|
transactionHash?: string;
|
|
150
225
|
transactionHashes?: string[];
|
|
226
|
+
settlementId?: string;
|
|
227
|
+
settlementIds?: string[];
|
|
228
|
+
buyerWalletAddress?: `0x${string}`;
|
|
151
229
|
transferId?: string;
|
|
152
230
|
network?: string;
|
|
153
231
|
payTo?: `0x${string}`;
|
|
232
|
+
authorizationMode?: AuthorizationMode;
|
|
233
|
+
maxAuthorizedAtomic?: AtomicAmount;
|
|
234
|
+
maxAuthorizedWords?: number;
|
|
154
235
|
amountAtomic?: AtomicAmount;
|
|
155
236
|
reason?: string;
|
|
156
237
|
}
|
|
@@ -169,6 +250,14 @@ export type GatewayEvent = {
|
|
|
169
250
|
role: "seller";
|
|
170
251
|
message: string;
|
|
171
252
|
recommendedSectionId?: string;
|
|
253
|
+
} | {
|
|
254
|
+
type: "authorization.accepted";
|
|
255
|
+
sessionId: string;
|
|
256
|
+
authorizationMode: AuthorizationMode;
|
|
257
|
+
maxAuthorizedAtomic: AtomicAmount;
|
|
258
|
+
maxAuthorizedWords: number;
|
|
259
|
+
network?: string;
|
|
260
|
+
payTo?: `0x${string}`;
|
|
172
261
|
} | {
|
|
173
262
|
type: "word.payment_accepted";
|
|
174
263
|
sessionId: string;
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -21,12 +21,14 @@ export interface SessionRecord {
|
|
|
21
21
|
sellerWallet: `0x${string}`;
|
|
22
22
|
metadata: Record<string, unknown>;
|
|
23
23
|
state: SessionState;
|
|
24
|
-
/** Words
|
|
24
|
+
/** Words covered by accepted metering/settlement, regardless of authorization scope. */
|
|
25
25
|
wordsPaid: number;
|
|
26
26
|
/** Words actually delivered to the buyer. */
|
|
27
27
|
wordsDelivered: number;
|
|
28
28
|
/** Total atomic USDC the buyer has paid in this session. */
|
|
29
29
|
paidAtomic: bigint;
|
|
30
|
+
/** Exact provider payment requirement issued when the session was opened. */
|
|
31
|
+
paymentRequired?: unknown;
|
|
30
32
|
createdAt: Date;
|
|
31
33
|
updatedAt: Date;
|
|
32
34
|
expiresAt: Date;
|
|
@@ -45,11 +47,11 @@ export declare function createSession(input: {
|
|
|
45
47
|
metadata?: Record<string, unknown>;
|
|
46
48
|
ttlMs: number;
|
|
47
49
|
}): SessionRecord;
|
|
48
|
-
/** Whether one more word
|
|
50
|
+
/** Whether one more delivered word fits inside the session budget. */
|
|
49
51
|
export declare function canAffordNextWord(session: SessionRecord, wordPaymentAtomic: bigint): boolean;
|
|
50
|
-
/** Record that one word
|
|
52
|
+
/** Record that one delivered word has been metered for payment. */
|
|
51
53
|
export declare function recordWordPayment(session: SessionRecord, amountAtomic: AtomicAmount): SessionRecord;
|
|
52
|
-
/** Record that one
|
|
54
|
+
/** Record that one authorized word has been delivered. */
|
|
53
55
|
export declare function recordWordDelivery(session: SessionRecord): SessionRecord;
|
|
54
56
|
export declare function isSessionExpired(session: SessionRecord, now?: Date): boolean;
|
|
55
57
|
//# sourceMappingURL=session.d.ts.map
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,aAAa,CAsBhB;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAE5F;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,GAAG,aAAa,CAQnG;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAa,GAAG,OAAO,CAElF"}
|
package/dist/session.js
CHANGED
|
@@ -22,11 +22,11 @@ export function createSession(input) {
|
|
|
22
22
|
expiresAt: new Date(now.getTime() + input.ttlMs),
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
/** Whether one more word
|
|
25
|
+
/** Whether one more delivered word fits inside the session budget. */
|
|
26
26
|
export function canAffordNextWord(session, wordPaymentAtomic) {
|
|
27
27
|
return session.paidAtomic + wordPaymentAtomic <= BigInt(session.budget.maxAmountAtomic);
|
|
28
28
|
}
|
|
29
|
-
/** Record that one word
|
|
29
|
+
/** Record that one delivered word has been metered for payment. */
|
|
30
30
|
export function recordWordPayment(session, amountAtomic) {
|
|
31
31
|
session.paidAtomic += BigInt(amountAtomic);
|
|
32
32
|
session.wordsPaid += 1;
|
|
@@ -36,7 +36,7 @@ export function recordWordPayment(session, amountAtomic) {
|
|
|
36
36
|
}
|
|
37
37
|
return session;
|
|
38
38
|
}
|
|
39
|
-
/** Record that one
|
|
39
|
+
/** Record that one authorized word has been delivered. */
|
|
40
40
|
export function recordWordDelivery(session) {
|
|
41
41
|
session.wordsDelivered += 1;
|
|
42
42
|
session.updatedAt = new Date();
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwCzC,MAAM,UAAU,aAAa,CAAC,KAa7B;IACC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,UAAU,EAAE;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,CAAC;QACZ,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,OAAsB,EAAE,iBAAyB;IACjF,OAAO,OAAO,CAAC,UAAU,GAAG,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1F,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,OAAsB,EAAE,YAA0B;IAClF,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAsB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACvE,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AACtD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubicon-caliga/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Shared protocol types, pricing math, and session primitives for the Rubicon x402 streaming gateway.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
"dev": "tsx src/index.ts",
|
|
30
30
|
"lint": "tsc -p tsconfig.json --noEmit",
|
|
31
31
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
-
"test": "node --test dist/**/*.test.js"
|
|
33
|
-
"prepublishOnly": "pnpm run build"
|
|
32
|
+
"test": "node --test dist/**/*.test.js"
|
|
34
33
|
}
|
|
35
|
-
}
|
|
34
|
+
}
|
package/src/contract.ts
CHANGED
|
@@ -103,6 +103,9 @@ export interface PaymentActivity {
|
|
|
103
103
|
payTo?: `0x${string}`;
|
|
104
104
|
transactionHash?: string;
|
|
105
105
|
transactionHashes?: string[];
|
|
106
|
+
settlementId?: string;
|
|
107
|
+
settlementIds?: string[];
|
|
108
|
+
buyerWalletAddress?: `0x${string}`;
|
|
106
109
|
transferId?: string;
|
|
107
110
|
createdAt: string;
|
|
108
111
|
}
|
package/src/pricing.ts
CHANGED
|
@@ -4,11 +4,12 @@ export type MeteringUnit = "word";
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* The atomic content unit in Rubicon is exactly one word. A quote describes the
|
|
7
|
-
* price the creator earns for a single word and the amount
|
|
8
|
-
* release one additional word.
|
|
7
|
+
* price the creator earns for a single word and the amount deducted from the
|
|
8
|
+
* buyer's session or chunk authorization to release one additional word.
|
|
9
9
|
*
|
|
10
|
-
* Rubicon never
|
|
11
|
-
*
|
|
10
|
+
* Rubicon never changes the product unit to chunks. Circle / Arc authorization
|
|
11
|
+
* may cover a whole session or multiple words, but application-level accounting
|
|
12
|
+
* is always one delivered word = one paid unit.
|
|
12
13
|
*/
|
|
13
14
|
export interface WordPriceQuote {
|
|
14
15
|
currency: "USDC";
|
|
@@ -17,13 +18,13 @@ export interface WordPriceQuote {
|
|
|
17
18
|
pricePerWordAtomic: `${bigint}`;
|
|
18
19
|
/** Rubicon gateway fee in basis points. Defaults to 0. */
|
|
19
20
|
gatewayFeeBps: number;
|
|
20
|
-
/** Exact amount the buyer
|
|
21
|
+
/** Exact amount consumed from the buyer authorization for one word. */
|
|
21
22
|
wordPaymentAtomic: `${bigint}`;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export interface WordUsageReport {
|
|
25
26
|
unit: MeteringUnit;
|
|
26
|
-
/** Number of individually delivered, individually
|
|
27
|
+
/** Number of individually delivered, individually metered words. */
|
|
27
28
|
wordsDelivered: number;
|
|
28
29
|
/** Full word price accruing to the creator (no Rubicon fee deducted). */
|
|
29
30
|
creatorAmountAtomic: `${bigint}`;
|
package/src/protocol.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface Budget {
|
|
|
8
8
|
maxAmountAtomic: AtomicAmount;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
export type AuthorizationMode = "session" | "chunk" | "word";
|
|
12
|
+
|
|
11
13
|
/** Safe public article metadata. Never includes unpaid body text. */
|
|
12
14
|
export interface ArticleSummary {
|
|
13
15
|
articleId: string;
|
|
@@ -20,9 +22,20 @@ export interface ArticleSummary {
|
|
|
20
22
|
pricePerWordAtomic: AtomicAmount;
|
|
21
23
|
/** Maximum possible total price to read the whole article. */
|
|
22
24
|
maxArticlePriceAtomic: AtomicAmount;
|
|
25
|
+
/** Public seller settlement terms for paid reads. Present when a verified wallet exists. */
|
|
26
|
+
paymentTerms?: SellerPaymentTerms;
|
|
23
27
|
sections: ArticleSectionSummary[];
|
|
24
28
|
}
|
|
25
29
|
|
|
30
|
+
export interface SellerPaymentTerms {
|
|
31
|
+
asset: "USDC";
|
|
32
|
+
network: string;
|
|
33
|
+
networkLabel?: string;
|
|
34
|
+
payTo: `0x${string}`;
|
|
35
|
+
pricePerWordAtomic: AtomicAmount;
|
|
36
|
+
meteringUnit: "word";
|
|
37
|
+
}
|
|
38
|
+
|
|
26
39
|
/** Safe per-section navigation metadata. Headings only, no body content. */
|
|
27
40
|
export interface ArticleSectionSummary {
|
|
28
41
|
sectionId: string;
|
|
@@ -106,9 +119,28 @@ export interface StartSessionRequest {
|
|
|
106
119
|
conversationId?: string;
|
|
107
120
|
sectionId?: string;
|
|
108
121
|
budget: Budget;
|
|
122
|
+
/** Optional buyer estimate used to size a session or chunk authorization. */
|
|
123
|
+
predictedWords?: number;
|
|
109
124
|
metadata?: Record<string, unknown>;
|
|
110
125
|
}
|
|
111
126
|
|
|
127
|
+
export interface SessionAuthorizationRequired {
|
|
128
|
+
sessionId: string;
|
|
129
|
+
authorizationMode: AuthorizationMode;
|
|
130
|
+
meteringUnit: "word";
|
|
131
|
+
asset: "USDC";
|
|
132
|
+
network?: string;
|
|
133
|
+
payTo?: `0x${string}`;
|
|
134
|
+
pricePerWordAtomic: AtomicAmount;
|
|
135
|
+
/** Maximum USDC the buyer is willing to authorize for this session/chunk. */
|
|
136
|
+
maxAuthorizedAtomic: AtomicAmount;
|
|
137
|
+
/** Number of words covered by the current authorization cap. */
|
|
138
|
+
maxAuthorizedWords: number;
|
|
139
|
+
settlement: "actual_usage_on_close" | "actual_usage_per_chunk" | "per_word_compatibility";
|
|
140
|
+
resource: string;
|
|
141
|
+
expiresAt: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
112
144
|
export interface StartSessionResponse {
|
|
113
145
|
sessionId: string;
|
|
114
146
|
state: SessionState;
|
|
@@ -122,21 +154,37 @@ export interface StartSessionResponse {
|
|
|
122
154
|
/** Exact amount the buyer pays to release one additional word. */
|
|
123
155
|
wordPaymentAtomic: AtomicAmount;
|
|
124
156
|
gatewayFeeBps: number;
|
|
125
|
-
/**
|
|
157
|
+
/** Circle / Arc payment requirement for a session or chunk authorization. */
|
|
158
|
+
authorizationRequired?: SessionAuthorizationRequired;
|
|
159
|
+
/** @deprecated Compatibility challenge for legacy one-word x402 clients. */
|
|
126
160
|
paymentRequired?: unknown;
|
|
127
161
|
expiresAt: string;
|
|
162
|
+
authorizationMode?: AuthorizationMode;
|
|
163
|
+
wordsAuthorized?: number;
|
|
128
164
|
wordsPaid: number;
|
|
129
165
|
wordsDelivered: number;
|
|
130
166
|
paidAtomic: AtomicAmount;
|
|
131
167
|
}
|
|
132
168
|
|
|
133
169
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
170
|
+
* Authorization for a session stream. The gateway meters delivered words against
|
|
171
|
+
* the authorized cap and settles actual usage when the session closes.
|
|
172
|
+
*/
|
|
173
|
+
export interface StreamAuthorizationRequest {
|
|
174
|
+
authorizationPayload: unknown;
|
|
175
|
+
idempotencyKey?: string;
|
|
176
|
+
maxWords?: number;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Chunk or legacy word-level payment. `idempotencyKey` ties the authorization to
|
|
181
|
+
* a specific stream position so retries never release or charge words twice.
|
|
136
182
|
*/
|
|
137
183
|
export interface StreamPaymentRequest {
|
|
138
184
|
paymentPayload: unknown;
|
|
139
185
|
idempotencyKey?: string;
|
|
186
|
+
/** Multi-word fallback cap. Omitted or 1 preserves legacy one-word behavior. */
|
|
187
|
+
maxWords?: number;
|
|
140
188
|
}
|
|
141
189
|
|
|
142
190
|
export interface StreamPaymentResponse {
|
|
@@ -150,11 +198,39 @@ export interface StreamPaymentResponse {
|
|
|
150
198
|
completed: boolean;
|
|
151
199
|
/** Canonical, per-word settlement receipt. Present whenever a word is released. */
|
|
152
200
|
payment?: WordPaymentReceipt;
|
|
153
|
-
|
|
201
|
+
authorizationMode?: AuthorizationMode;
|
|
202
|
+
remainingAuthorizedAtomic?: AtomicAmount;
|
|
203
|
+
/** On-chain settlement transaction hash, when the payment facilitator returns one. */
|
|
154
204
|
transactionHash?: string;
|
|
155
205
|
/** All on-chain settlement transaction hashes for this payment, when available. */
|
|
156
206
|
transactionHashes?: string[];
|
|
157
|
-
/**
|
|
207
|
+
/** Gateway/facilitator settlement identifier, such as a Circle x402 transfer UUID. */
|
|
208
|
+
settlementId?: string;
|
|
209
|
+
settlementIds?: string[];
|
|
210
|
+
buyerWalletAddress?: `0x${string}`;
|
|
211
|
+
/** Gateway/facilitator transfer identifier, when distinct from an on-chain hash. */
|
|
212
|
+
transferId?: string;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export interface StreamChunkResponse {
|
|
216
|
+
accepted: boolean;
|
|
217
|
+
words: Array<{
|
|
218
|
+
sequence: number;
|
|
219
|
+
word: string;
|
|
220
|
+
priceAtomic: AtomicAmount;
|
|
221
|
+
payment?: WordPaymentReceipt;
|
|
222
|
+
}>;
|
|
223
|
+
text: string;
|
|
224
|
+
wordsPaid: number;
|
|
225
|
+
wordsDelivered: number;
|
|
226
|
+
paidAtomic: AtomicAmount;
|
|
227
|
+
completed: boolean;
|
|
228
|
+
authorizationMode?: AuthorizationMode;
|
|
229
|
+
transactionHash?: string;
|
|
230
|
+
transactionHashes?: string[];
|
|
231
|
+
settlementId?: string;
|
|
232
|
+
settlementIds?: string[];
|
|
233
|
+
buyerWalletAddress?: `0x${string}`;
|
|
158
234
|
transferId?: string;
|
|
159
235
|
}
|
|
160
236
|
|
|
@@ -170,7 +246,11 @@ export interface WordPaymentReceipt {
|
|
|
170
246
|
payTo?: `0x${string}`;
|
|
171
247
|
transactionHash?: string;
|
|
172
248
|
transactionHashes?: string[];
|
|
173
|
-
/**
|
|
249
|
+
/** Gateway/facilitator settlement identifier, such as a Circle x402 transfer UUID. */
|
|
250
|
+
settlementId?: string;
|
|
251
|
+
settlementIds?: string[];
|
|
252
|
+
buyerWalletAddress?: `0x${string}`;
|
|
253
|
+
/** Gateway/facilitator transfer identifier, when distinct from an on-chain hash. */
|
|
174
254
|
transferId?: string;
|
|
175
255
|
settledAt: string;
|
|
176
256
|
}
|
|
@@ -179,9 +259,15 @@ export interface PaymentVerification {
|
|
|
179
259
|
accepted: boolean;
|
|
180
260
|
transactionHash?: string;
|
|
181
261
|
transactionHashes?: string[];
|
|
262
|
+
settlementId?: string;
|
|
263
|
+
settlementIds?: string[];
|
|
264
|
+
buyerWalletAddress?: `0x${string}`;
|
|
182
265
|
transferId?: string;
|
|
183
266
|
network?: string;
|
|
184
267
|
payTo?: `0x${string}`;
|
|
268
|
+
authorizationMode?: AuthorizationMode;
|
|
269
|
+
maxAuthorizedAtomic?: AtomicAmount;
|
|
270
|
+
maxAuthorizedWords?: number;
|
|
185
271
|
amountAtomic?: AtomicAmount;
|
|
186
272
|
reason?: string;
|
|
187
273
|
}
|
|
@@ -208,6 +294,15 @@ export type GatewayEvent =
|
|
|
208
294
|
message: string;
|
|
209
295
|
recommendedSectionId?: string;
|
|
210
296
|
}
|
|
297
|
+
| {
|
|
298
|
+
type: "authorization.accepted";
|
|
299
|
+
sessionId: string;
|
|
300
|
+
authorizationMode: AuthorizationMode;
|
|
301
|
+
maxAuthorizedAtomic: AtomicAmount;
|
|
302
|
+
maxAuthorizedWords: number;
|
|
303
|
+
network?: string;
|
|
304
|
+
payTo?: `0x${string}`;
|
|
305
|
+
}
|
|
211
306
|
| {
|
|
212
307
|
type: "word.payment_accepted";
|
|
213
308
|
sessionId: string;
|
package/src/session.ts
CHANGED
|
@@ -25,12 +25,14 @@ export interface SessionRecord {
|
|
|
25
25
|
sellerWallet: `0x${string}`;
|
|
26
26
|
metadata: Record<string, unknown>;
|
|
27
27
|
state: SessionState;
|
|
28
|
-
/** Words
|
|
28
|
+
/** Words covered by accepted metering/settlement, regardless of authorization scope. */
|
|
29
29
|
wordsPaid: number;
|
|
30
30
|
/** Words actually delivered to the buyer. */
|
|
31
31
|
wordsDelivered: number;
|
|
32
32
|
/** Total atomic USDC the buyer has paid in this session. */
|
|
33
33
|
paidAtomic: bigint;
|
|
34
|
+
/** Exact provider payment requirement issued when the session was opened. */
|
|
35
|
+
paymentRequired?: unknown;
|
|
34
36
|
createdAt: Date;
|
|
35
37
|
updatedAt: Date;
|
|
36
38
|
expiresAt: Date;
|
|
@@ -73,12 +75,12 @@ export function createSession(input: {
|
|
|
73
75
|
};
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
/** Whether one more word
|
|
78
|
+
/** Whether one more delivered word fits inside the session budget. */
|
|
77
79
|
export function canAffordNextWord(session: SessionRecord, wordPaymentAtomic: bigint): boolean {
|
|
78
80
|
return session.paidAtomic + wordPaymentAtomic <= BigInt(session.budget.maxAmountAtomic);
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
/** Record that one word
|
|
83
|
+
/** Record that one delivered word has been metered for payment. */
|
|
82
84
|
export function recordWordPayment(session: SessionRecord, amountAtomic: AtomicAmount): SessionRecord {
|
|
83
85
|
session.paidAtomic += BigInt(amountAtomic);
|
|
84
86
|
session.wordsPaid += 1;
|
|
@@ -89,7 +91,7 @@ export function recordWordPayment(session: SessionRecord, amountAtomic: AtomicAm
|
|
|
89
91
|
return session;
|
|
90
92
|
}
|
|
91
93
|
|
|
92
|
-
/** Record that one
|
|
94
|
+
/** Record that one authorized word has been delivered. */
|
|
93
95
|
export function recordWordDelivery(session: SessionRecord): SessionRecord {
|
|
94
96
|
session.wordsDelivered += 1;
|
|
95
97
|
session.updatedAt = new Date();
|