@solana/mpp 0.0.0 → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/Methods.d.ts +272 -0
  4. package/dist/Methods.d.ts.map +1 -0
  5. package/dist/Methods.js +217 -0
  6. package/dist/Methods.js.map +1 -0
  7. package/dist/client/Charge.d.ts +112 -0
  8. package/dist/client/Charge.d.ts.map +1 -0
  9. package/dist/client/Charge.js +216 -0
  10. package/dist/client/Charge.js.map +1 -0
  11. package/dist/client/Methods.d.ts +27 -0
  12. package/dist/client/Methods.d.ts.map +1 -0
  13. package/dist/client/Methods.js +23 -0
  14. package/dist/client/Methods.js.map +1 -0
  15. package/dist/client/Session.d.ts +195 -0
  16. package/dist/client/Session.d.ts.map +1 -0
  17. package/dist/client/Session.js +411 -0
  18. package/dist/client/Session.js.map +1 -0
  19. package/dist/client/index.d.ts +5 -0
  20. package/dist/client/index.d.ts.map +1 -0
  21. package/dist/client/index.js +6 -0
  22. package/dist/client/index.js.map +1 -0
  23. package/dist/constants.d.ts +7 -0
  24. package/dist/constants.d.ts.map +1 -0
  25. package/dist/constants.js +14 -0
  26. package/dist/constants.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +8 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/server/Charge.d.ts +103 -0
  32. package/dist/server/Charge.d.ts.map +1 -0
  33. package/dist/server/Charge.js +318 -0
  34. package/dist/server/Charge.js.map +1 -0
  35. package/dist/server/Methods.d.ts +23 -0
  36. package/dist/server/Methods.d.ts.map +1 -0
  37. package/dist/server/Methods.js +19 -0
  38. package/dist/server/Methods.js.map +1 -0
  39. package/dist/server/Session.d.ts +171 -0
  40. package/dist/server/Session.d.ts.map +1 -0
  41. package/dist/server/Session.js +430 -0
  42. package/dist/server/Session.js.map +1 -0
  43. package/dist/server/index.d.ts +5 -0
  44. package/dist/server/index.d.ts.map +1 -0
  45. package/dist/server/index.js +6 -0
  46. package/dist/server/index.js.map +1 -0
  47. package/dist/session/ChannelStore.d.ts +12 -0
  48. package/dist/session/ChannelStore.d.ts.map +1 -0
  49. package/dist/session/ChannelStore.js +88 -0
  50. package/dist/session/ChannelStore.js.map +1 -0
  51. package/dist/session/Types.d.ts +179 -0
  52. package/dist/session/Types.d.ts.map +1 -0
  53. package/dist/session/Types.js +2 -0
  54. package/dist/session/Types.js.map +1 -0
  55. package/dist/session/Voucher.d.ts +7 -0
  56. package/dist/session/Voucher.d.ts.map +1 -0
  57. package/dist/session/Voucher.js +118 -0
  58. package/dist/session/Voucher.js.map +1 -0
  59. package/dist/session/authorizers/BudgetAuthorizer.d.ts +90 -0
  60. package/dist/session/authorizers/BudgetAuthorizer.d.ts.map +1 -0
  61. package/dist/session/authorizers/BudgetAuthorizer.js +398 -0
  62. package/dist/session/authorizers/BudgetAuthorizer.js.map +1 -0
  63. package/dist/session/authorizers/SwigSessionAuthorizer.d.ts +104 -0
  64. package/dist/session/authorizers/SwigSessionAuthorizer.d.ts.map +1 -0
  65. package/dist/session/authorizers/SwigSessionAuthorizer.js +522 -0
  66. package/dist/session/authorizers/SwigSessionAuthorizer.js.map +1 -0
  67. package/dist/session/authorizers/UnboundedAuthorizer.d.ts +36 -0
  68. package/dist/session/authorizers/UnboundedAuthorizer.d.ts.map +1 -0
  69. package/dist/session/authorizers/UnboundedAuthorizer.js +204 -0
  70. package/dist/session/authorizers/UnboundedAuthorizer.js.map +1 -0
  71. package/dist/session/authorizers/index.d.ts +5 -0
  72. package/dist/session/authorizers/index.d.ts.map +1 -0
  73. package/dist/session/authorizers/index.js +5 -0
  74. package/dist/session/authorizers/index.js.map +1 -0
  75. package/dist/session/authorizers/makeSessionAuthorizer.d.ts +19 -0
  76. package/dist/session/authorizers/makeSessionAuthorizer.d.ts.map +1 -0
  77. package/dist/session/authorizers/makeSessionAuthorizer.js +72 -0
  78. package/dist/session/authorizers/makeSessionAuthorizer.js.map +1 -0
  79. package/dist/session/index.d.ts +5 -0
  80. package/dist/session/index.d.ts.map +1 -0
  81. package/dist/session/index.js +5 -0
  82. package/dist/session/index.js.map +1 -0
  83. package/dist/utils/transactions.d.ts +11 -0
  84. package/dist/utils/transactions.d.ts.map +1 -0
  85. package/dist/utils/transactions.js +16 -0
  86. package/dist/utils/transactions.js.map +1 -0
  87. package/package.json +75 -8
  88. package/sdk/src/Methods.ts +230 -0
  89. package/sdk/src/client/Charge.ts +353 -0
  90. package/sdk/src/client/Methods.ts +31 -0
  91. package/sdk/src/client/Session.ts +630 -0
  92. package/sdk/src/client/index.ts +5 -0
  93. package/sdk/src/constants.ts +15 -0
  94. package/sdk/src/index.ts +35 -0
  95. package/sdk/src/server/Charge.ts +484 -0
  96. package/sdk/src/server/Methods.ts +27 -0
  97. package/sdk/src/server/Session.ts +687 -0
  98. package/sdk/src/server/index.ts +5 -0
  99. package/sdk/src/session/ChannelStore.ts +128 -0
  100. package/sdk/src/session/Types.ts +189 -0
  101. package/sdk/src/session/Voucher.ts +158 -0
  102. package/sdk/src/session/authorizers/BudgetAuthorizer.ts +574 -0
  103. package/sdk/src/session/authorizers/SwigSessionAuthorizer.ts +767 -0
  104. package/sdk/src/session/authorizers/UnboundedAuthorizer.ts +284 -0
  105. package/sdk/src/session/authorizers/index.ts +4 -0
  106. package/sdk/src/session/authorizers/makeSessionAuthorizer.ts +104 -0
  107. package/sdk/src/session/index.ts +4 -0
  108. package/sdk/src/utils/transactions.ts +26 -0
@@ -0,0 +1,195 @@
1
+ import type { TransactionSigner } from '@solana/kit';
2
+ import { Method, z } from 'mppx';
3
+ import type { SessionAuthorizer } from '../session/Types.js';
4
+ type SessionAsset = {
5
+ decimals: number;
6
+ kind: 'sol' | 'spl';
7
+ mint?: string;
8
+ symbol?: string;
9
+ };
10
+ export declare const sessionContextSchema: z.ZodMiniObject<{
11
+ action: z.ZodMiniOptional<z.ZodMiniEnum<{
12
+ open: "open";
13
+ update: "update";
14
+ topup: "topup";
15
+ close: "close";
16
+ }>>;
17
+ additionalAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
18
+ channelId: z.ZodMiniOptional<z.ZodMiniString<string>>;
19
+ cumulativeAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
20
+ depositAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
21
+ openTx: z.ZodMiniOptional<z.ZodMiniString<string>>;
22
+ sequence: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
23
+ topupTx: z.ZodMiniOptional<z.ZodMiniString<string>>;
24
+ }, z.core.$strip>;
25
+ export type SessionContext = z.infer<typeof sessionContextSchema>;
26
+ export declare function session(parameters: session.Parameters): Method.Client<{
27
+ readonly intent: "session";
28
+ readonly name: "solana";
29
+ readonly schema: {
30
+ readonly credential: {
31
+ readonly payload: z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
32
+ action: z.ZodMiniLiteral<"open">;
33
+ authorizationMode: z.ZodMiniString<string>;
34
+ capabilities: z.ZodMiniOptional<z.ZodMiniObject<{
35
+ allowedActions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
36
+ maxCumulativeAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
37
+ }, z.core.$strip>>;
38
+ channelId: z.ZodMiniString<string>;
39
+ depositAmount: z.ZodMiniString<string>;
40
+ expiresAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
41
+ openTx: z.ZodMiniString<string>;
42
+ payer: z.ZodMiniString<string>;
43
+ voucher: z.ZodMiniObject<{
44
+ signature: z.ZodMiniString<string>;
45
+ signatureType: z.ZodMiniString<string>;
46
+ signer: z.ZodMiniString<string>;
47
+ voucher: z.ZodMiniObject<{
48
+ chainId: z.ZodMiniString<string>;
49
+ channelId: z.ZodMiniString<string>;
50
+ channelProgram: z.ZodMiniString<string>;
51
+ cumulativeAmount: z.ZodMiniString<string>;
52
+ expiresAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
53
+ meter: z.ZodMiniString<string>;
54
+ payer: z.ZodMiniString<string>;
55
+ recipient: z.ZodMiniString<string>;
56
+ sequence: z.ZodMiniNumber<number>;
57
+ serverNonce: z.ZodMiniString<string>;
58
+ units: z.ZodMiniString<string>;
59
+ }, z.core.$strip>;
60
+ }, z.core.$strip>;
61
+ }, z.core.$strip>, z.ZodMiniObject<{
62
+ action: z.ZodMiniLiteral<"update">;
63
+ channelId: z.ZodMiniString<string>;
64
+ voucher: z.ZodMiniObject<{
65
+ signature: z.ZodMiniString<string>;
66
+ signatureType: z.ZodMiniString<string>;
67
+ signer: z.ZodMiniString<string>;
68
+ voucher: z.ZodMiniObject<{
69
+ chainId: z.ZodMiniString<string>;
70
+ channelId: z.ZodMiniString<string>;
71
+ channelProgram: z.ZodMiniString<string>;
72
+ cumulativeAmount: z.ZodMiniString<string>;
73
+ expiresAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
74
+ meter: z.ZodMiniString<string>;
75
+ payer: z.ZodMiniString<string>;
76
+ recipient: z.ZodMiniString<string>;
77
+ sequence: z.ZodMiniNumber<number>;
78
+ serverNonce: z.ZodMiniString<string>;
79
+ units: z.ZodMiniString<string>;
80
+ }, z.core.$strip>;
81
+ }, z.core.$strip>;
82
+ }, z.core.$strip>, z.ZodMiniObject<{
83
+ action: z.ZodMiniLiteral<"topup">;
84
+ additionalAmount: z.ZodMiniString<string>;
85
+ channelId: z.ZodMiniString<string>;
86
+ topupTx: z.ZodMiniString<string>;
87
+ }, z.core.$strip>, z.ZodMiniObject<{
88
+ action: z.ZodMiniLiteral<"close">;
89
+ channelId: z.ZodMiniString<string>;
90
+ closeTx: z.ZodMiniOptional<z.ZodMiniString<string>>;
91
+ voucher: z.ZodMiniObject<{
92
+ signature: z.ZodMiniString<string>;
93
+ signatureType: z.ZodMiniString<string>;
94
+ signer: z.ZodMiniString<string>;
95
+ voucher: z.ZodMiniObject<{
96
+ chainId: z.ZodMiniString<string>;
97
+ channelId: z.ZodMiniString<string>;
98
+ channelProgram: z.ZodMiniString<string>;
99
+ cumulativeAmount: z.ZodMiniString<string>;
100
+ expiresAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
101
+ meter: z.ZodMiniString<string>;
102
+ payer: z.ZodMiniString<string>;
103
+ recipient: z.ZodMiniString<string>;
104
+ sequence: z.ZodMiniNumber<number>;
105
+ serverNonce: z.ZodMiniString<string>;
106
+ units: z.ZodMiniString<string>;
107
+ }, z.core.$strip>;
108
+ }, z.core.$strip>;
109
+ }, z.core.$strip>], "action">;
110
+ };
111
+ readonly request: z.ZodMiniObject<{
112
+ asset: z.ZodMiniObject<{
113
+ decimals: z.ZodMiniNumber<number>;
114
+ kind: z.ZodMiniString<string>;
115
+ mint: z.ZodMiniOptional<z.ZodMiniString<string>>;
116
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
117
+ }, z.core.$strip>;
118
+ channelProgram: z.ZodMiniString<string>;
119
+ network: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
+ pricing: z.ZodMiniOptional<z.ZodMiniObject<{
121
+ amountPerUnit: z.ZodMiniString<string>;
122
+ meter: z.ZodMiniString<string>;
123
+ minDebit: z.ZodMiniOptional<z.ZodMiniString<string>>;
124
+ unit: z.ZodMiniString<string>;
125
+ }, z.core.$strip>>;
126
+ recipient: z.ZodMiniString<string>;
127
+ sessionDefaults: z.ZodMiniOptional<z.ZodMiniObject<{
128
+ closeBehavior: z.ZodMiniOptional<z.ZodMiniString<string>>;
129
+ settleInterval: z.ZodMiniOptional<z.ZodMiniObject<{
130
+ kind: z.ZodMiniString<string>;
131
+ minIncrement: z.ZodMiniOptional<z.ZodMiniString<string>>;
132
+ seconds: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
133
+ }, z.core.$strip>>;
134
+ suggestedDeposit: z.ZodMiniOptional<z.ZodMiniString<string>>;
135
+ ttlSeconds: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
136
+ }, z.core.$strip>>;
137
+ verifier: z.ZodMiniOptional<z.ZodMiniObject<{
138
+ acceptAuthorizationModes: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
139
+ maxClockSkewSeconds: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
140
+ }, z.core.$strip>>;
141
+ }, z.core.$strip>;
142
+ };
143
+ }, z.ZodMiniObject<{
144
+ action: z.ZodMiniOptional<z.ZodMiniEnum<{
145
+ open: "open";
146
+ update: "update";
147
+ topup: "topup";
148
+ close: "close";
149
+ }>>;
150
+ additionalAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
151
+ channelId: z.ZodMiniOptional<z.ZodMiniString<string>>;
152
+ cumulativeAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
+ depositAmount: z.ZodMiniOptional<z.ZodMiniString<string>>;
154
+ openTx: z.ZodMiniOptional<z.ZodMiniString<string>>;
155
+ sequence: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
156
+ topupTx: z.ZodMiniOptional<z.ZodMiniString<string>>;
157
+ }, z.core.$strip>>;
158
+ export declare namespace session {
159
+ type Parameters = {
160
+ authorizer: SessionAuthorizer;
161
+ autoOpen?: boolean;
162
+ autoTopup?: boolean;
163
+ onProgress?: (event: ProgressEvent) => void;
164
+ settleOnLimitHit?: boolean;
165
+ signer?: TransactionSigner;
166
+ };
167
+ type ProgressEvent = {
168
+ asset: SessionAsset;
169
+ network: string;
170
+ recipient: string;
171
+ type: 'challenge';
172
+ } | {
173
+ channelId: string;
174
+ cumulativeAmount: string;
175
+ type: 'updated';
176
+ } | {
177
+ channelId: string;
178
+ cumulativeAmount: string;
179
+ type: 'updating';
180
+ } | {
181
+ channelId: string;
182
+ type: 'closed';
183
+ } | {
184
+ channelId: string;
185
+ type: 'closing';
186
+ } | {
187
+ channelId: string;
188
+ type: 'opened';
189
+ } | {
190
+ channelId: string;
191
+ type: 'opening';
192
+ };
193
+ }
194
+ export {};
195
+ //# sourceMappingURL=Session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../sdk/src/client/Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAA8B,MAAM,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,qBAAqB,CAAC;AAEvF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAmCF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAS/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA2WrD;AA6LD,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC7B,KAAK,UAAU,GAAG;QACd,UAAU,EAAE,iBAAiB,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;QAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IAEF,KAAK,aAAa,GACZ;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,GAC9E;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAChE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GACjE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACrC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GACtC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACrC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAChD"}
@@ -0,0 +1,411 @@
1
+ import { Credential, Method, z } from 'mppx';
2
+ import * as Methods from '../Methods.js';
3
+ export const sessionContextSchema = z.object({
4
+ action: z.optional(z.enum(['open', 'update', 'topup', 'close'])),
5
+ additionalAmount: z.optional(z.string()),
6
+ channelId: z.optional(z.string()),
7
+ cumulativeAmount: z.optional(z.string()),
8
+ depositAmount: z.optional(z.string()),
9
+ openTx: z.optional(z.string()),
10
+ sequence: z.optional(z.number()),
11
+ topupTx: z.optional(z.string()),
12
+ });
13
+ export function session(parameters) {
14
+ const { signer, authorizer, autoOpen = true, autoTopup = false, settleOnLimitHit = false, onProgress } = parameters;
15
+ let activeChannel = null;
16
+ return Method.toClient(Methods.session, {
17
+ context: sessionContextSchema,
18
+ async createCredential({ challenge, context }) {
19
+ const request = challenge.request;
20
+ const recipient = request.recipient;
21
+ const network = request.network ?? 'mainnet-beta';
22
+ const asset = request.asset;
23
+ const channelProgram = request.channelProgram;
24
+ const pricing = request.pricing;
25
+ const sessionDefaults = request.sessionDefaults;
26
+ onProgress?.({
27
+ asset,
28
+ network,
29
+ recipient,
30
+ type: 'challenge',
31
+ });
32
+ if (context?.action === 'topup') {
33
+ return await handleTopupAction(challenge, context, authorizer, activeChannel, channelProgram, network);
34
+ }
35
+ if (context?.action === 'close') {
36
+ const credential = await handleCloseAction(challenge, context, authorizer, activeChannel, channelProgram, recipient, network, onProgress);
37
+ activeChannel = null;
38
+ return credential;
39
+ }
40
+ if (context?.action === 'open') {
41
+ if (!context.channelId) {
42
+ throw new Error('channelId is required for open action');
43
+ }
44
+ if (!context.depositAmount) {
45
+ throw new Error('depositAmount is required for open action');
46
+ }
47
+ const channelId = context.channelId;
48
+ const depositAmount = context.depositAmount;
49
+ const parsedDepositAmount = parseNonNegativeAmount(depositAmount, 'context.depositAmount');
50
+ const serverNonce = crypto.randomUUID();
51
+ onProgress?.({ channelId, type: 'opening' });
52
+ const openResult = await authorizer.authorizeOpen({
53
+ asset,
54
+ channelId,
55
+ channelProgram,
56
+ depositAmount,
57
+ network,
58
+ pricing,
59
+ recipient,
60
+ serverNonce,
61
+ });
62
+ const payer = resolveOpenPayer(openResult.voucher.voucher.payer, signer);
63
+ const payload = {
64
+ action: 'open',
65
+ authorizationMode: authorizer.getMode(),
66
+ channelId,
67
+ depositAmount,
68
+ openTx: context.openTx ?? openResult.openTx,
69
+ payer,
70
+ ...(openResult.expiresAt ? { expiresAt: openResult.expiresAt } : {}),
71
+ capabilities: {
72
+ ...(openResult.capabilities.maxCumulativeAmount
73
+ ? {
74
+ maxCumulativeAmount: openResult.capabilities.maxCumulativeAmount,
75
+ }
76
+ : {}),
77
+ ...(openResult.capabilities.allowedActions
78
+ ? { allowedActions: openResult.capabilities.allowedActions }
79
+ : {}),
80
+ },
81
+ voucher: openResult.voucher,
82
+ };
83
+ activeChannel = {
84
+ asset: normalizeAsset(asset),
85
+ channelId,
86
+ channelProgram,
87
+ cumulativeAmount: parseNonNegativeAmount(openResult.voucher.voucher.cumulativeAmount, 'voucher.cumulativeAmount'),
88
+ depositAmount: parsedDepositAmount,
89
+ network,
90
+ recipient,
91
+ sequence: assertNonNegativeSequence(openResult.voucher.voucher.sequence),
92
+ serverNonce: openResult.voucher.voucher.serverNonce,
93
+ };
94
+ onProgress?.({ channelId, type: 'opened' });
95
+ return Credential.serialize({
96
+ challenge,
97
+ payload,
98
+ });
99
+ }
100
+ if (context?.action === 'update') {
101
+ const channelId = context.channelId ?? activeChannel?.channelId;
102
+ if (!channelId) {
103
+ throw new Error('channelId is required for update action');
104
+ }
105
+ if (!activeChannel || activeChannel.channelId !== channelId) {
106
+ throw new Error('Cannot update a channel that is not active');
107
+ }
108
+ if (!context.cumulativeAmount) {
109
+ throw new Error('cumulativeAmount is required for update action');
110
+ }
111
+ if (context.sequence === undefined) {
112
+ throw new Error('sequence is required for update action');
113
+ }
114
+ const nextCumulativeAmount = parseNonNegativeAmount(context.cumulativeAmount, 'context.cumulativeAmount');
115
+ const nextSequence = assertNonNegativeSequence(context.sequence);
116
+ onProgress?.({
117
+ channelId,
118
+ cumulativeAmount: nextCumulativeAmount.toString(),
119
+ type: 'updating',
120
+ });
121
+ const updateResult = await authorizer.authorizeUpdate({
122
+ channelId,
123
+ channelProgram,
124
+ cumulativeAmount: nextCumulativeAmount.toString(),
125
+ meter: pricing?.meter ?? 'session',
126
+ network,
127
+ recipient,
128
+ sequence: nextSequence,
129
+ serverNonce: activeChannel.serverNonce,
130
+ units: pricing ? '1' : '0',
131
+ });
132
+ const payload = {
133
+ action: 'update',
134
+ channelId,
135
+ voucher: updateResult.voucher,
136
+ };
137
+ activeChannel.cumulativeAmount = parseNonNegativeAmount(updateResult.voucher.voucher.cumulativeAmount, 'voucher.cumulativeAmount');
138
+ activeChannel.sequence = assertNonNegativeSequence(updateResult.voucher.voucher.sequence);
139
+ activeChannel.serverNonce = updateResult.voucher.voucher.serverNonce;
140
+ onProgress?.({
141
+ channelId,
142
+ cumulativeAmount: activeChannel.cumulativeAmount.toString(),
143
+ type: 'updated',
144
+ });
145
+ return Credential.serialize({
146
+ challenge,
147
+ payload,
148
+ });
149
+ }
150
+ const scopedActiveChannel = activeChannel &&
151
+ matchesScope(activeChannel, {
152
+ asset,
153
+ channelProgram,
154
+ network,
155
+ recipient,
156
+ })
157
+ ? activeChannel
158
+ : null;
159
+ if (!scopedActiveChannel) {
160
+ if (!autoOpen) {
161
+ throw new Error('No active session channel for challenge scope and autoOpen is disabled');
162
+ }
163
+ const channelId = crypto.randomUUID();
164
+ const serverNonce = crypto.randomUUID();
165
+ const depositAmount = sessionDefaults?.suggestedDeposit ?? '0';
166
+ const parsedDepositAmount = parseNonNegativeAmount(depositAmount, 'sessionDefaults.suggestedDeposit');
167
+ onProgress?.({ channelId, type: 'opening' });
168
+ const openResult = await authorizer.authorizeOpen({
169
+ asset,
170
+ channelId,
171
+ channelProgram,
172
+ depositAmount,
173
+ network,
174
+ pricing,
175
+ recipient,
176
+ serverNonce,
177
+ });
178
+ const payer = resolveOpenPayer(openResult.voucher.voucher.payer, signer);
179
+ const payload = {
180
+ action: 'open',
181
+ authorizationMode: authorizer.getMode(),
182
+ channelId,
183
+ depositAmount,
184
+ openTx: openResult.openTx,
185
+ payer,
186
+ ...(openResult.expiresAt ? { expiresAt: openResult.expiresAt } : {}),
187
+ capabilities: {
188
+ ...(openResult.capabilities.maxCumulativeAmount
189
+ ? {
190
+ maxCumulativeAmount: openResult.capabilities.maxCumulativeAmount,
191
+ }
192
+ : {}),
193
+ ...(openResult.capabilities.allowedActions
194
+ ? { allowedActions: openResult.capabilities.allowedActions }
195
+ : {}),
196
+ },
197
+ voucher: openResult.voucher,
198
+ };
199
+ activeChannel = {
200
+ asset: normalizeAsset(asset),
201
+ channelId,
202
+ channelProgram,
203
+ cumulativeAmount: parseNonNegativeAmount(openResult.voucher.voucher.cumulativeAmount, 'voucher.cumulativeAmount'),
204
+ depositAmount: parsedDepositAmount,
205
+ network,
206
+ recipient,
207
+ sequence: assertNonNegativeSequence(openResult.voucher.voucher.sequence),
208
+ serverNonce: openResult.voucher.voucher.serverNonce,
209
+ };
210
+ onProgress?.({ channelId, type: 'opened' });
211
+ return Credential.serialize({
212
+ challenge,
213
+ payload,
214
+ });
215
+ }
216
+ const debitIncrement = resolveDebitIncrement(pricing);
217
+ const nextCumulativeAmount = scopedActiveChannel.cumulativeAmount + debitIncrement;
218
+ const nextSequence = scopedActiveChannel.sequence + 1;
219
+ if (nextCumulativeAmount > scopedActiveChannel.depositAmount) {
220
+ if (!autoTopup) {
221
+ if (!settleOnLimitHit) {
222
+ throw new Error('Voucher cumulative amount exceeds tracked deposit and autoTopup is disabled');
223
+ }
224
+ const closeCredential = await handleCloseAction(challenge, {
225
+ action: 'close',
226
+ channelId: scopedActiveChannel.channelId,
227
+ }, authorizer, scopedActiveChannel, channelProgram, recipient, network, onProgress);
228
+ activeChannel = null;
229
+ return closeCredential;
230
+ }
231
+ const additionalAmount = resolveAutoTopupAmount(sessionDefaults?.suggestedDeposit, nextCumulativeAmount, scopedActiveChannel.depositAmount);
232
+ const topupResult = await authorizer.authorizeTopup({
233
+ additionalAmount: additionalAmount.toString(),
234
+ channelId: scopedActiveChannel.channelId,
235
+ channelProgram,
236
+ network,
237
+ });
238
+ scopedActiveChannel.depositAmount += additionalAmount;
239
+ const payload = {
240
+ action: 'topup',
241
+ additionalAmount: additionalAmount.toString(),
242
+ channelId: scopedActiveChannel.channelId,
243
+ topupTx: topupResult.topupTx,
244
+ };
245
+ return Credential.serialize({
246
+ challenge,
247
+ payload,
248
+ });
249
+ }
250
+ onProgress?.({
251
+ channelId: scopedActiveChannel.channelId,
252
+ cumulativeAmount: nextCumulativeAmount.toString(),
253
+ type: 'updating',
254
+ });
255
+ const updateResult = await authorizer.authorizeUpdate({
256
+ channelId: scopedActiveChannel.channelId,
257
+ channelProgram,
258
+ cumulativeAmount: nextCumulativeAmount.toString(),
259
+ meter: pricing?.meter ?? 'session',
260
+ network,
261
+ recipient,
262
+ sequence: nextSequence,
263
+ serverNonce: scopedActiveChannel.serverNonce,
264
+ units: pricing ? '1' : '0',
265
+ });
266
+ const payload = {
267
+ action: 'update',
268
+ channelId: scopedActiveChannel.channelId,
269
+ voucher: updateResult.voucher,
270
+ };
271
+ scopedActiveChannel.cumulativeAmount = parseNonNegativeAmount(updateResult.voucher.voucher.cumulativeAmount, 'voucher.cumulativeAmount');
272
+ scopedActiveChannel.sequence = assertNonNegativeSequence(updateResult.voucher.voucher.sequence);
273
+ scopedActiveChannel.serverNonce = updateResult.voucher.voucher.serverNonce;
274
+ onProgress?.({
275
+ channelId: scopedActiveChannel.channelId,
276
+ cumulativeAmount: scopedActiveChannel.cumulativeAmount.toString(),
277
+ type: 'updated',
278
+ });
279
+ return Credential.serialize({
280
+ challenge,
281
+ payload,
282
+ });
283
+ },
284
+ });
285
+ }
286
+ async function handleTopupAction(challenge, context, authorizer, activeChannel, channelProgram, network) {
287
+ const channelId = context.channelId ?? activeChannel?.channelId;
288
+ if (!channelId) {
289
+ throw new Error('channelId is required for topup action');
290
+ }
291
+ if (!context.additionalAmount) {
292
+ throw new Error('additionalAmount is required for topup action');
293
+ }
294
+ const additionalAmount = parseNonNegativeAmount(context.additionalAmount, 'context.additionalAmount');
295
+ const topupResult = await authorizer.authorizeTopup({
296
+ additionalAmount: additionalAmount.toString(),
297
+ channelId,
298
+ channelProgram,
299
+ network,
300
+ });
301
+ if (activeChannel && activeChannel.channelId === channelId) {
302
+ activeChannel.depositAmount += additionalAmount;
303
+ }
304
+ const payload = {
305
+ action: 'topup',
306
+ additionalAmount: additionalAmount.toString(),
307
+ channelId,
308
+ topupTx: topupResult.topupTx,
309
+ };
310
+ return Credential.serialize({ challenge, payload });
311
+ }
312
+ async function handleCloseAction(challenge, context, authorizer, activeChannel, channelProgram, recipient, network, onProgress) {
313
+ const channelId = context.channelId ?? activeChannel?.channelId;
314
+ if (!channelId) {
315
+ throw new Error('channelId is required for close action');
316
+ }
317
+ if (!activeChannel || activeChannel.channelId !== channelId) {
318
+ throw new Error('Cannot close a channel that is not active');
319
+ }
320
+ const finalSequence = activeChannel.sequence + 1;
321
+ onProgress?.({ channelId, type: 'closing' });
322
+ const closeResult = await authorizer.authorizeClose({
323
+ channelId,
324
+ channelProgram,
325
+ finalCumulativeAmount: activeChannel.cumulativeAmount.toString(),
326
+ network,
327
+ recipient,
328
+ sequence: finalSequence,
329
+ serverNonce: activeChannel.serverNonce,
330
+ });
331
+ const payload = {
332
+ action: 'close',
333
+ channelId,
334
+ ...(closeResult.closeTx ? { closeTx: closeResult.closeTx } : {}),
335
+ voucher: closeResult.voucher,
336
+ };
337
+ onProgress?.({ channelId, type: 'closed' });
338
+ return Credential.serialize({ challenge, payload });
339
+ }
340
+ function resolveDebitIncrement(pricing) {
341
+ if (pricing?.minDebit !== undefined) {
342
+ return parseNonNegativeAmount(pricing.minDebit, 'pricing.minDebit');
343
+ }
344
+ if (pricing?.amountPerUnit !== undefined) {
345
+ return parseNonNegativeAmount(pricing.amountPerUnit, 'pricing.amountPerUnit');
346
+ }
347
+ return 0n;
348
+ }
349
+ function resolveAutoTopupAmount(suggestedDeposit, nextCumulativeAmount, depositAmount) {
350
+ const shortfall = nextCumulativeAmount - depositAmount;
351
+ if (shortfall <= 0n) {
352
+ return 0n;
353
+ }
354
+ if (suggestedDeposit === undefined) {
355
+ return shortfall;
356
+ }
357
+ const parsedSuggestedDeposit = parseNonNegativeAmount(suggestedDeposit, 'sessionDefaults.suggestedDeposit');
358
+ return parsedSuggestedDeposit > shortfall ? parsedSuggestedDeposit : shortfall;
359
+ }
360
+ function matchesScope(active, scope) {
361
+ if (active.recipient !== scope.recipient) {
362
+ return false;
363
+ }
364
+ if (active.network !== scope.network) {
365
+ return false;
366
+ }
367
+ if (active.channelProgram !== scope.channelProgram) {
368
+ return false;
369
+ }
370
+ return sameAsset(active.asset, scope.asset);
371
+ }
372
+ function sameAsset(left, right) {
373
+ return (left.kind === right.kind &&
374
+ left.decimals === right.decimals &&
375
+ (left.mint ?? '') === (right.mint ?? '') &&
376
+ (left.symbol ?? '') === (right.symbol ?? ''));
377
+ }
378
+ function normalizeAsset(asset) {
379
+ return {
380
+ decimals: asset.decimals,
381
+ kind: asset.kind,
382
+ ...(asset.mint ? { mint: asset.mint } : {}),
383
+ ...(asset.symbol ? { symbol: asset.symbol } : {}),
384
+ };
385
+ }
386
+ function assertNonNegativeSequence(value) {
387
+ if (!Number.isInteger(value) || value < 0) {
388
+ throw new Error('voucher.sequence must be a non-negative integer');
389
+ }
390
+ return value;
391
+ }
392
+ function parseNonNegativeAmount(value, field) {
393
+ let amount;
394
+ try {
395
+ amount = BigInt(value);
396
+ }
397
+ catch {
398
+ throw new Error(`${field} must be a valid integer string`);
399
+ }
400
+ if (amount < 0n) {
401
+ throw new Error(`${field} must be non-negative`);
402
+ }
403
+ return amount;
404
+ }
405
+ function resolveOpenPayer(voucherPayer, signer) {
406
+ if (signer && signer.address !== voucherPayer) {
407
+ throw new Error(`Open voucher payer ${voucherPayer} does not match signer address ${signer.address}`);
408
+ }
409
+ return voucherPayer;
410
+ }
411
+ //# sourceMappingURL=Session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../../sdk/src/client/Session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { charge } from './Charge.js';
2
+ export { session } from './Session.js';
3
+ export { solana } from './Methods.js';
4
+ export { Mppx } from 'mppx/client';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sdk/src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { charge } from './Charge.js';
2
+ export { session } from './Session.js';
3
+ export { solana } from './Methods.js';
4
+ // Re-export Mppx so consumers can do: import { Mppx, solana } from 'solana-mpp-sdk/client'
5
+ export { Mppx } from 'mppx/client';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../sdk/src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,2FAA2F;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const TOKEN_PROGRAM = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
2
+ export declare const TOKEN_2022_PROGRAM = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
3
+ export declare const ASSOCIATED_TOKEN_PROGRAM = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
4
+ export declare const SYSTEM_PROGRAM = "11111111111111111111111111111111";
5
+ export declare const USDC: Record<string, string>;
6
+ export declare const DEFAULT_RPC_URLS: Record<string, string>;
7
+ //# sourceMappingURL=constants.d.ts.map