@leashmarket/seller-kit 0.1.0 → 0.2.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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # @leashmarket/seller-kit
2
2
 
3
+ ## Install
4
+
5
+ ```bash
6
+ npm install @leashmarket/seller-kit
7
+ # or
8
+ pnpm add @leashmarket/seller-kit
9
+ ```
10
+
11
+ ---
12
+
3
13
  Hono integration for Leash sellers. Three responsibilities:
4
14
 
5
15
  1. **Real x402 middleware on Solana.** `createSeller` mounts
@@ -69,5 +79,8 @@ const server = createSvmResourceServer({
69
79
  });
70
80
  ```
71
81
 
72
- See the [`Real x402 on Solana`](../../apps/docs/standards/x402-on-solana.mdx)
73
- doc for the protocol-level walkthrough.
82
+ ## Docs
83
+
84
+ [docs.leash.market/sdk/seller-kit](https://docs.leash.market/sdk/seller-kit)
85
+
86
+ See also: [Real x402 on Solana](https://docs.leash.market/standards/x402-on-solana)
@@ -1,6 +1,6 @@
1
1
  import type { Hono } from 'hono';
2
2
  import type { Context as UmiContext } from '@metaplex-foundation/umi';
3
- import type { ReceiptV1 } from '@leashmarket/schemas';
3
+ import type { ReceiptAny, ReceiptV1 } from '@leashmarket/schemas';
4
4
  import { type KnownStableSymbol } from '@leashmarket/core';
5
5
  import type { FacilitatorClient } from '@x402/core/server';
6
6
  import { type LeashSellerNetwork } from '../x402/svm-server.js';
@@ -105,5 +105,5 @@ export declare function createSeller(app: Hono, opts: CreateSellerOptions): Sell
105
105
  * copy (instead of importing from buyer-kit) so the seller package stays
106
106
  * server-only and doesn't pull in the buyer's `@solana/kit` dependency.
107
107
  */
108
- export declare function resolveSellerReceiptSink(onReceipt: CreateSellerOptions['onReceipt'], forward: SellerReceiptForwardConfig | undefined): (receipt: ReceiptV1) => Promise<void>;
108
+ export declare function resolveSellerReceiptSink<R extends ReceiptAny = ReceiptAny>(onReceipt: ((receipt: R) => void | Promise<void>) | false | undefined, forward: SellerReceiptForwardConfig | undefined): (receipt: R) => Promise<void>;
109
109
  //# sourceMappingURL=create-seller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-seller.d.ts","sourceRoot":"","sources":["../../src/hono/create-seller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAUL,KAAK,iBAAiB,EAGvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGvF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IAC5C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACzC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACnE;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAwIzE;AA2ID;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAC3C,OAAO,EAAE,0BAA0B,GAAG,SAAS,GAC9C,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAmDvC"}
1
+ {"version":3,"file":"create-seller.d.ts","sourceRoot":"","sources":["../../src/hono/create-seller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAUL,KAAK,iBAAiB,EAGvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGvF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IAC5C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACzC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACnE;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAwIzE;AA2ID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EACxE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,EACrE,OAAO,EAAE,0BAA0B,GAAG,SAAS,GAC9C,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAmD/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-seller.js","sourceRoot":"","sources":["../../src/hono/create-seller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-seller.js","sourceRoot":"","sources":["../../src/hono/create-seller.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from './x402/svm-server.js';
3
3
  export * from './seller/agent-seller.js';
4
4
  export * from './receipts/store.js';
5
5
  export * from './receipts/price.js';
6
+ export * from './mpp/index.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ export * from './x402/svm-server.js';
3
3
  export * from './seller/agent-seller.js';
4
4
  export * from './receipts/store.js';
5
5
  export * from './receipts/price.js';
6
+ export * from './mpp/index.js';
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * In-memory store of issued MPP challenges with TTL.
3
+ *
4
+ * Sellers issue `MppChallengeV1.challengeId` on every 402 and must reject
5
+ * a settled credential whose challengeId is unknown or expired (replay
6
+ * protection). Production deployments should swap this for a shared store
7
+ * (Redis / KV) — the interface is intentionally tiny so that's a one-file
8
+ * change.
9
+ *
10
+ * The store is bounded; the oldest entries are evicted when capacity is
11
+ * exceeded so an attacker cannot exhaust seller memory by spamming probes.
12
+ */
13
+ import type { MppChallengeV1 } from '@leashmarket/schemas';
14
+ export type StoredChallenge = {
15
+ challenge: MppChallengeV1;
16
+ /** Route key (`'METHOD /path'`) the challenge was issued for. */
17
+ routeKey: string;
18
+ /** Issued-at, in milliseconds since epoch. */
19
+ issuedAt: number;
20
+ /** Set after a credential successfully settles — guards against double-spend. */
21
+ consumed: boolean;
22
+ };
23
+ export type ChallengeStore = {
24
+ put(challengeId: string, value: StoredChallenge): void;
25
+ get(challengeId: string): StoredChallenge | null;
26
+ consume(challengeId: string): StoredChallenge | null;
27
+ size(): number;
28
+ };
29
+ export type ChallengeStoreOptions = {
30
+ ttlMs?: number;
31
+ capacity?: number;
32
+ };
33
+ export declare function createInMemoryChallengeStore(opts?: ChallengeStoreOptions): ChallengeStore;
34
+ //# sourceMappingURL=challenge-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challenge-store.d.ts","sourceRoot":"","sources":["../../src/mpp/challenge-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,cAAc,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IACrD,IAAI,IAAI,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,qBAA0B,GAAG,cAAc,CA8C7F"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * In-memory store of issued MPP challenges with TTL.
3
+ *
4
+ * Sellers issue `MppChallengeV1.challengeId` on every 402 and must reject
5
+ * a settled credential whose challengeId is unknown or expired (replay
6
+ * protection). Production deployments should swap this for a shared store
7
+ * (Redis / KV) — the interface is intentionally tiny so that's a one-file
8
+ * change.
9
+ *
10
+ * The store is bounded; the oldest entries are evicted when capacity is
11
+ * exceeded so an attacker cannot exhaust seller memory by spamming probes.
12
+ */
13
+ const DEFAULT_TTL_MS = 5 * 60 * 1000;
14
+ const DEFAULT_CAPACITY = 10_000;
15
+ export function createInMemoryChallengeStore(opts = {}) {
16
+ const ttl = opts.ttlMs ?? DEFAULT_TTL_MS;
17
+ const capacity = opts.capacity ?? DEFAULT_CAPACITY;
18
+ const map = new Map();
19
+ function evictExpired(now) {
20
+ for (const [k, v] of map) {
21
+ if (now - v.issuedAt > ttl)
22
+ map.delete(k);
23
+ }
24
+ }
25
+ return {
26
+ put(challengeId, value) {
27
+ const now = Date.now();
28
+ evictExpired(now);
29
+ while (map.size >= capacity) {
30
+ const oldestKey = map.keys().next().value;
31
+ if (oldestKey == null)
32
+ break;
33
+ map.delete(oldestKey);
34
+ }
35
+ map.set(challengeId, value);
36
+ },
37
+ get(challengeId) {
38
+ const v = map.get(challengeId);
39
+ if (!v)
40
+ return null;
41
+ if (Date.now() - v.issuedAt > ttl) {
42
+ map.delete(challengeId);
43
+ return null;
44
+ }
45
+ return v;
46
+ },
47
+ consume(challengeId) {
48
+ const v = map.get(challengeId);
49
+ if (!v)
50
+ return null;
51
+ if (Date.now() - v.issuedAt > ttl) {
52
+ map.delete(challengeId);
53
+ return null;
54
+ }
55
+ if (v.consumed)
56
+ return null;
57
+ v.consumed = true;
58
+ return v;
59
+ },
60
+ size() {
61
+ return map.size;
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=challenge-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challenge-store.js","sourceRoot":"","sources":["../../src/mpp/challenge-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,UAAU,4BAA4B,CAAC,OAA8B,EAAE;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE/C,SAAS,YAAY,CAAC,GAAW;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG;gBAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,CAAC,WAAW,EAAE,KAAK;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAC1C,IAAI,SAAS,IAAI,IAAI;oBAAE,MAAM;gBAC7B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,GAAG,CAAC,WAAW;YACb,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,WAAW;YACjB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC5B,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI;YACF,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Hono middleware that turns a route into an MPP-protected resource.
3
+ *
4
+ * Mirrors the lifecycle of `createSeller` (x402) but speaks the MPP wire:
5
+ * - GET / POST without credential → 402 with `application/problem+json`
6
+ * body carrying an `MppChallengeV1`. The challengeId is stored with
7
+ * a TTL (replay protection).
8
+ * - GET / POST with `Authorization: PaymentScheme <b64>` → decode
9
+ * credential, forward `(challenge, signedTx)` to the MPP facilitator,
10
+ * stamp `x-payment-receipt` on success, run the route handler, emit
11
+ * a `ReceiptV02X402`-shaped earn receipt with `protocol: 'mpp'`.
12
+ *
13
+ * The MPP path uses the same `payTo` PDA as x402 — sellers never need
14
+ * a second on-chain identity for dual-protocol support.
15
+ */
16
+ import type { Context as UmiContext } from '@metaplex-foundation/umi';
17
+ import type { Hono } from 'hono';
18
+ import { type KnownStableSymbol } from '@leashmarket/core';
19
+ import type { ReceiptV02Mpp } from '@leashmarket/schemas';
20
+ import { type AgentSellerConfig } from '../seller/agent-seller.js';
21
+ import { type LeashSellerNetwork } from '../x402/svm-server.js';
22
+ import { type SellerReceiptForwardConfig } from '../hono/create-seller.js';
23
+ import { type ChallengeStore, type ChallengeStoreOptions } from './challenge-store.js';
24
+ import { type MppFacilitatorClient } from './facilitator-client.js';
25
+ export type MppSellerRouteConfig = {
26
+ description: string;
27
+ /** Display price like x402 routes — `"0.001"`, `"$0.01"`, `"0.5 USDC"`. */
28
+ price: string;
29
+ /** Settlement currency. Defaults to `'USDC'`. */
30
+ currency?: KnownStableSymbol;
31
+ mimeType?: string;
32
+ };
33
+ export type CreateMppSellerOptions = {
34
+ umi: Pick<UmiContext, 'eddsa' | 'programs'>;
35
+ sellerAgent: AgentSellerConfig;
36
+ routes: Record<string, MppSellerRouteConfig>;
37
+ network?: LeashSellerNetwork;
38
+ /**
39
+ * MPP facilitator URL or pre-built client. Defaults to
40
+ * `https://devnet-facilitator.leash.market` (which Phase 5 extends to
41
+ * speak the `/mpp/settle` endpoint alongside the x402 routes).
42
+ */
43
+ facilitator?: string | MppFacilitatorClient;
44
+ /**
45
+ * Wallet that pays Solana fees + signs the idempotent ATA creates on
46
+ * the buyer's signed transaction. Must match the address the buyer-kit
47
+ * embedded as `request.feePayer` in the challenge — sellers stamp this
48
+ * so the buyer can build a tx that the facilitator will co-sign.
49
+ */
50
+ feePayerAddress: string;
51
+ challengeStore?: ChallengeStore;
52
+ challengeStoreOptions?: ChallengeStoreOptions;
53
+ onReceipt?: ((receipt: ReceiptV02Mpp) => void | Promise<void>) | false;
54
+ receipts?: SellerReceiptForwardConfig;
55
+ policyVersion?: string;
56
+ };
57
+ export type MppSeller = {
58
+ payTo: string;
59
+ facilitatorUrl: string;
60
+ network: string;
61
+ };
62
+ export declare function createMppSeller(app: Hono, opts: CreateMppSellerOptions): MppSeller;
63
+ //# sourceMappingURL=create-mpp-seller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-mpp-seller.d.ts","sourceRoot":"","sources":["../../src/mpp/create-mpp-seller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1E,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEhG,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IAC5C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC5C;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvE,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AASF,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,GAAG,SAAS,CA0GlF"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Hono middleware that turns a route into an MPP-protected resource.
3
+ *
4
+ * Mirrors the lifecycle of `createSeller` (x402) but speaks the MPP wire:
5
+ * - GET / POST without credential → 402 with `application/problem+json`
6
+ * body carrying an `MppChallengeV1`. The challengeId is stored with
7
+ * a TTL (replay protection).
8
+ * - GET / POST with `Authorization: PaymentScheme <b64>` → decode
9
+ * credential, forward `(challenge, signedTx)` to the MPP facilitator,
10
+ * stamp `x-payment-receipt` on success, run the route handler, emit
11
+ * a `ReceiptV02X402`-shaped earn receipt with `protocol: 'mpp'`.
12
+ *
13
+ * The MPP path uses the same `payTo` PDA as x402 — sellers never need
14
+ * a second on-chain identity for dual-protocol support.
15
+ */
16
+ import { computeReceiptHash, MPP_AUTH_SCHEME, MPP_PROBLEM_TYPE, parseMppAuthorization, requestHash, } from '@leashmarket/core';
17
+ import { ReceiptV02MppSchema } from '@leashmarket/schemas';
18
+ import { resolveSellerPayTo } from '../seller/agent-seller.js';
19
+ import { parsePrice } from '../receipts/price.js';
20
+ import { caip2ForSellerNetwork } from '../x402/svm-server.js';
21
+ import { resolveSellerReceiptSink, } from '../hono/create-seller.js';
22
+ import { createInMemoryChallengeStore, } from './challenge-store.js';
23
+ import { createMppFacilitatorClient } from './facilitator-client.js';
24
+ const DEFAULT_MPP_FACILITATOR_URL = 'https://devnet-facilitator.leash.market';
25
+ export function createMppSeller(app, opts) {
26
+ const payTo = resolveSellerPayTo(opts.umi, opts.sellerAgent);
27
+ const agent = String(opts.sellerAgent.asset);
28
+ const policyVersion = opts.policyVersion ?? '0.1';
29
+ const sellerNetwork = opts.network ?? 'solana-devnet';
30
+ const networkCaip2 = caip2ForSellerNetwork(sellerNetwork);
31
+ const tokenNetwork = sellerNetwork === 'solana-mainnet' ? 'mainnet' : 'devnet';
32
+ const store = opts.challengeStore ?? createInMemoryChallengeStore(opts.challengeStoreOptions);
33
+ const facilitator = typeof opts.facilitator === 'string'
34
+ ? createMppFacilitatorClient({ url: opts.facilitator })
35
+ : (opts.facilitator ?? createMppFacilitatorClient({ url: DEFAULT_MPP_FACILITATOR_URL }));
36
+ const state = { nonce: 0, prevReceiptHash: null };
37
+ const sink = resolveSellerReceiptSink(opts.onReceipt, opts.receipts);
38
+ for (const [routeKey, cfg] of Object.entries(opts.routes)) {
39
+ const [methodRaw, path] = routeKey.split(/\s+/, 2);
40
+ if (!methodRaw || !path) {
41
+ throw new Error(`Invalid route key: ${routeKey}`);
42
+ }
43
+ const method = methodRaw.toUpperCase();
44
+ const parsedPrice = parsePrice(cfg.price, {
45
+ network: tokenNetwork,
46
+ defaultCurrency: cfg.currency ?? 'USDC',
47
+ });
48
+ if (!parsedPrice || !parsedPrice.asset) {
49
+ throw new Error(`Invalid price "${cfg.price}" for ${cfg.currency ?? 'USDC'}`);
50
+ }
51
+ app.on(method, path, async (c, next) => {
52
+ const auth = c.req.header('authorization') ?? c.req.header('Authorization') ?? null;
53
+ // No credential → issue a fresh challenge.
54
+ if (!auth || !auth.toLowerCase().startsWith(`${MPP_AUTH_SCHEME.toLowerCase()} `)) {
55
+ return issueChallenge({
56
+ routeKey: `${method} ${path}`,
57
+ description: cfg.description,
58
+ price: parsedPrice,
59
+ payTo,
60
+ /** Friendly slug (`solana-devnet`) — matches buyer-kit `networks[]` checks. */
61
+ networkSlug: sellerNetwork,
62
+ feePayerAddress: opts.feePayerAddress,
63
+ store,
64
+ });
65
+ }
66
+ // Credential present → decode, look up challenge, forward to facilitator.
67
+ let credential;
68
+ try {
69
+ credential = parseMppAuthorization(auth);
70
+ if (!credential)
71
+ throw new Error('missing credential');
72
+ }
73
+ catch (e) {
74
+ return c.json({ error: `mpp_credential_invalid: ${e.message}` }, 400);
75
+ }
76
+ const stored = store.get(credential.challengeId);
77
+ if (!stored) {
78
+ return c.json({ error: 'mpp_challenge_unknown_or_expired' }, 402);
79
+ }
80
+ if (stored.consumed) {
81
+ return c.json({ error: 'mpp_challenge_already_consumed' }, 402);
82
+ }
83
+ const settle = await facilitator.settle({
84
+ challenge: stored.challenge,
85
+ signedTx: credential.signedTx,
86
+ });
87
+ if (!settle.success) {
88
+ return c.json({ error: settle.error }, 402);
89
+ }
90
+ // Mark as consumed only after the facilitator confirms.
91
+ store.consume(credential.challengeId);
92
+ // Stamp settlement headers BEFORE handing off to the route handler so
93
+ // any downstream middleware can read them too.
94
+ c.header('x-payment-receipt', b64Json({ tx: settle.transaction, slot: settle.slot }));
95
+ // Run the actual route handler. Hono dispatches the next matching
96
+ // handler; we mounted on the same `(method, path)` tuple so the user's
97
+ // GET/POST route fires next. Hono allows multiple handlers on the
98
+ // same key — they run in registration order.
99
+ await next();
100
+ // Emit the earn receipt after the handler runs so we can capture
101
+ // the actual response status. Errors here are swallowed by the sink.
102
+ const responseStatus = c.res.status;
103
+ const receipt = buildMppEarnReceipt({
104
+ agent,
105
+ nonce: state.nonce,
106
+ prevReceiptHash: state.prevReceiptHash,
107
+ policyVersion,
108
+ method,
109
+ url: c.req.url,
110
+ responseStatus,
111
+ challenge: stored.challenge,
112
+ settlement: { transaction: settle.transaction, slot: settle.slot },
113
+ facilitator: facilitator.url,
114
+ });
115
+ state.nonce += 1;
116
+ state.prevReceiptHash = receipt.receipt_hash;
117
+ try {
118
+ await sink(receipt);
119
+ }
120
+ catch {
121
+ /* swallow — receipt forward errors must not break the buyer call */
122
+ }
123
+ });
124
+ }
125
+ return { payTo, facilitatorUrl: facilitator.url, network: networkCaip2 };
126
+ }
127
+ function issueChallenge(args) {
128
+ const challengeId = generateChallengeId();
129
+ const challenge = {
130
+ type: MPP_PROBLEM_TYPE,
131
+ title: 'Payment Required',
132
+ status: 402,
133
+ detail: args.description,
134
+ challengeId,
135
+ request: {
136
+ recipient: args.payTo,
137
+ amount: args.price.amount,
138
+ currency: args.price.currency,
139
+ network: args.networkSlug,
140
+ asset: args.price.asset,
141
+ feePayer: args.feePayerAddress,
142
+ },
143
+ };
144
+ args.store.put(challengeId, {
145
+ challenge,
146
+ routeKey: args.routeKey,
147
+ issuedAt: Date.now(),
148
+ consumed: false,
149
+ });
150
+ return new Response(JSON.stringify(challenge), {
151
+ status: 402,
152
+ headers: { 'content-type': 'application/problem+json' },
153
+ });
154
+ }
155
+ /**
156
+ * Generate a uniqueish challenge id. Prefers `crypto.randomUUID()` (Node
157
+ * 19+, all browsers) and falls back to a 16-byte random hex string —
158
+ * both are >= 122 bits of entropy, plenty for replay protection inside
159
+ * the seller's TTL window.
160
+ */
161
+ function generateChallengeId() {
162
+ const c = globalThis.crypto;
163
+ if (c?.randomUUID)
164
+ return c.randomUUID();
165
+ if (c?.getRandomValues) {
166
+ const buf = new Uint8Array(16);
167
+ c.getRandomValues(buf);
168
+ return Array.from(buf)
169
+ .map((b) => b.toString(16).padStart(2, '0'))
170
+ .join('');
171
+ }
172
+ // Cryptographically weak fallback (only Node <19 with no webcrypto).
173
+ return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;
174
+ }
175
+ function b64Json(value) {
176
+ const json = JSON.stringify(value);
177
+ if (typeof btoa === 'function')
178
+ return btoa(json);
179
+ return Buffer.from(json, 'utf8').toString('base64');
180
+ }
181
+ function buildMppEarnReceipt(args) {
182
+ const draft = {
183
+ v: '0.2',
184
+ protocol: 'mpp',
185
+ kind: 'earn',
186
+ agent: args.agent,
187
+ nonce: args.nonce,
188
+ ts: new Date().toISOString(),
189
+ policy_v: args.policyVersion,
190
+ request: {
191
+ method: args.method,
192
+ url: args.url,
193
+ body_hash: requestHash({ method: args.method, url: args.url, body: null }),
194
+ },
195
+ decision: 'allow',
196
+ reason: null,
197
+ price: {
198
+ amount: args.challenge.request.amount,
199
+ currency: args.challenge.request.currency,
200
+ network: args.challenge.request.network,
201
+ asset: args.challenge.request.asset,
202
+ },
203
+ facilitator: args.facilitator,
204
+ response: { status: args.responseStatus, body_hash: null },
205
+ prev_receipt_hash: args.prevReceiptHash,
206
+ mpp_challenge_id: args.challenge.challengeId,
207
+ mpp_credential_type: 'crypto',
208
+ mpp_settlement_tx: args.settlement.transaction,
209
+ mpp_settlement_slot: args.settlement.slot,
210
+ tx_sig: args.settlement.transaction,
211
+ };
212
+ const receipt_hash = computeReceiptHash(draft);
213
+ return ReceiptV02MppSchema.parse({ ...draft, receipt_hash });
214
+ }
215
+ //# sourceMappingURL=create-mpp-seller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-mpp-seller.js","sourceRoot":"","sources":["../../src/mpp/create-mpp-seller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Minimal client for the Leash MPP facilitator endpoint.
3
+ *
4
+ * The facilitator (`@leashmarket/facilitator`, Phase 5) exposes a JSON
5
+ * `POST /mpp/settle` that accepts `(challenge, signedTx)` and returns
6
+ * `(success, transaction, slot, error?)`. Sellers call this from their
7
+ * MPP middleware once a buyer has presented a credential — the seller
8
+ * never broadcasts on-chain itself.
9
+ */
10
+ import type { MppChallengeV1 } from '@leashmarket/schemas';
11
+ export type MppSettleResult = {
12
+ success: true;
13
+ /** Solana SPL transfer signature. */
14
+ transaction: string;
15
+ /** Confirmed slot. */
16
+ slot: string | number;
17
+ } | {
18
+ success: false;
19
+ error: string;
20
+ /** Optional Solana sig if the tx was broadcast but failed. */
21
+ transaction?: string;
22
+ };
23
+ export type MppFacilitatorClient = {
24
+ url: string;
25
+ settle(args: {
26
+ challenge: MppChallengeV1;
27
+ signedTx: string;
28
+ }): Promise<MppSettleResult>;
29
+ };
30
+ export type CreateMppFacilitatorClientOptions = {
31
+ url: string;
32
+ fetch?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
33
+ };
34
+ export declare function createMppFacilitatorClient(opts: CreateMppFacilitatorClientOptions): MppFacilitatorClient;
35
+ //# sourceMappingURL=facilitator-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator-client.d.ts","sourceRoot":"","sources":["../../src/mpp/facilitator-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,eAAe,GACvB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACzF,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClF,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,iCAAiC,GACtC,oBAAoB,CA4CtB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Minimal client for the Leash MPP facilitator endpoint.
3
+ *
4
+ * The facilitator (`@leashmarket/facilitator`, Phase 5) exposes a JSON
5
+ * `POST /mpp/settle` that accepts `(challenge, signedTx)` and returns
6
+ * `(success, transaction, slot, error?)`. Sellers call this from their
7
+ * MPP middleware once a buyer has presented a credential — the seller
8
+ * never broadcasts on-chain itself.
9
+ */
10
+ export function createMppFacilitatorClient(opts) {
11
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
12
+ const base = opts.url.replace(/\/+$/, '');
13
+ return {
14
+ url: base,
15
+ async settle({ challenge, signedTx }) {
16
+ let res;
17
+ try {
18
+ res = await fetchImpl(`${base}/mpp/settle`, {
19
+ method: 'POST',
20
+ headers: { 'content-type': 'application/json' },
21
+ body: JSON.stringify({ challenge, signedTx }),
22
+ });
23
+ }
24
+ catch (e) {
25
+ return { success: false, error: `mpp_facilitator_unreachable: ${e.message}` };
26
+ }
27
+ let parsed = null;
28
+ try {
29
+ parsed = (await res.json());
30
+ }
31
+ catch {
32
+ return { success: false, error: `mpp_facilitator_bad_json: HTTP ${res.status}` };
33
+ }
34
+ if (!res.ok || !parsed || typeof parsed !== 'object') {
35
+ const detail = parsed && typeof parsed === 'object' && 'error' in parsed
36
+ ? String(parsed.error)
37
+ : `HTTP ${res.status}`;
38
+ return { success: false, error: detail };
39
+ }
40
+ const obj = parsed;
41
+ if (obj.success === true && typeof obj.transaction === 'string') {
42
+ return {
43
+ success: true,
44
+ transaction: obj.transaction,
45
+ slot: obj.slot ?? '0',
46
+ };
47
+ }
48
+ return {
49
+ success: false,
50
+ error: typeof obj.error === 'string' ? obj.error : 'mpp_facilitator_failed',
51
+ ...(typeof obj.transaction === 'string' ? { transaction: obj.transaction } : {}),
52
+ };
53
+ },
54
+ };
55
+ }
56
+ //# sourceMappingURL=facilitator-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator-client.js","sourceRoot":"","sources":["../../src/mpp/facilitator-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6BH,MAAM,UAAU,0BAA0B,CACxC,IAAuC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO;QACL,GAAG,EAAE,IAAI;QACT,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;YAClC,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,aAAa,EAAE;oBAC1C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;iBAC9C,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAiC,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3F,CAAC;YACD,IAAI,MAAM,GAAY,IAAI,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACnF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,MAAM,GACV,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM;oBACvD,CAAC,CAAC,MAAM,CAAE,MAA6B,CAAC,KAAK,CAAC;oBAC9C,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC;YACD,MAAM,GAAG,GAAG,MAAiC,CAAC;YAC9C,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAChE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,IAAI,EAAG,GAAG,CAAC,IAAwB,IAAI,GAAG;iBAC3C,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB;gBAC3E,GAAG,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createMppSeller, type CreateMppSellerOptions, type MppSeller, type MppSellerRouteConfig, } from './create-mpp-seller.js';
2
+ export { createInMemoryChallengeStore, type ChallengeStore, type ChallengeStoreOptions, type StoredChallenge, } from './challenge-store.js';
3
+ export { createMppFacilitatorClient, type CreateMppFacilitatorClientOptions, type MppFacilitatorClient, type MppSettleResult, } from './facilitator-client.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mpp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createMppSeller, } from './create-mpp-seller.js';
2
+ export { createInMemoryChallengeStore, } from './challenge-store.js';
3
+ export { createMppFacilitatorClient, } from './facilitator-client.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mpp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,GAI7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0BAA0B,GAI3B,MAAM,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@leashmarket/seller-kit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
+ "license": "Apache-2.0",
4
5
  "private": false,
5
6
  "type": "module",
6
7
  "main": "./dist/index.js",
@@ -27,8 +28,8 @@
27
28
  "@x402/hono": "^2.10.0",
28
29
  "@x402/svm": "^2.10.0",
29
30
  "hono": "^4.6.14",
30
- "@leashmarket/core": "0.1.0",
31
- "@leashmarket/schemas": "0.1.0"
31
+ "@leashmarket/core": "0.2.0",
32
+ "@leashmarket/schemas": "0.2.0"
32
33
  },
33
34
  "devDependencies": {
34
35
  "typescript": "^5.7.2",
@@ -1,7 +0,0 @@
1
- import type { MiddlewareHandler } from 'hono';
2
- /**
3
- * Minimal x402-shaped gate: 402 without payment header, forwards when present.
4
- * Swap for `@x402/hono` `paymentMiddleware` + PayAI facilitator in production.
5
- */
6
- export declare function simpleX402Gate(): MiddlewareHandler;
7
- //# sourceMappingURL=simple-x402.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simple-x402.d.ts","sourceRoot":"","sources":["../../src/hono/simple-x402.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAI9C;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,CAOlD"}
@@ -1,14 +0,0 @@
1
- const HEADER = 'x-payment';
2
- /**
3
- * Minimal x402-shaped gate: 402 without payment header, forwards when present.
4
- * Swap for `@x402/hono` `paymentMiddleware` + PayAI facilitator in production.
5
- */
6
- export function simpleX402Gate() {
7
- return async (c, next) => {
8
- if (!c.req.header(HEADER)) {
9
- return c.json({ error: 'payment_required', protocol: 'x402-shaped' }, 402);
10
- }
11
- await next();
12
- };
13
- }
14
- //# sourceMappingURL=simple-x402.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simple-x402.js","sourceRoot":"","sources":["../../src/hono/simple-x402.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,WAAW,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}