@brninpay/sdk 0.1.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 (95) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/LICENSE +203 -0
  3. package/README.md +5 -0
  4. package/dist/actor-client.d.ts +13 -0
  5. package/dist/actor-client.d.ts.map +1 -0
  6. package/dist/actor-client.js +44 -0
  7. package/dist/actor-client.js.map +1 -0
  8. package/dist/bundler/client.d.ts +20 -0
  9. package/dist/bundler/client.d.ts.map +1 -0
  10. package/dist/bundler/client.js +228 -0
  11. package/dist/bundler/client.js.map +1 -0
  12. package/dist/bundler/providers/alchemy.d.ts +3 -0
  13. package/dist/bundler/providers/alchemy.d.ts.map +1 -0
  14. package/dist/bundler/providers/alchemy.js +15 -0
  15. package/dist/bundler/providers/alchemy.js.map +1 -0
  16. package/dist/bundler/providers/pimlico.d.ts +3 -0
  17. package/dist/bundler/providers/pimlico.d.ts.map +1 -0
  18. package/dist/bundler/providers/pimlico.js +12 -0
  19. package/dist/bundler/providers/pimlico.js.map +1 -0
  20. package/dist/client.d.ts +24 -0
  21. package/dist/client.d.ts.map +1 -0
  22. package/dist/client.js +352 -0
  23. package/dist/client.js.map +1 -0
  24. package/dist/conversion.d.ts +3 -0
  25. package/dist/conversion.d.ts.map +1 -0
  26. package/dist/conversion.js +27 -0
  27. package/dist/conversion.js.map +1 -0
  28. package/dist/erc4337/builder.d.ts +15 -0
  29. package/dist/erc4337/builder.d.ts.map +1 -0
  30. package/dist/erc4337/builder.js +144 -0
  31. package/dist/erc4337/builder.js.map +1 -0
  32. package/dist/erc4337/providers/kernel.d.ts +23 -0
  33. package/dist/erc4337/providers/kernel.d.ts.map +1 -0
  34. package/dist/erc4337/providers/kernel.js +120 -0
  35. package/dist/erc4337/providers/kernel.js.map +1 -0
  36. package/dist/erc4337/providers/safe.d.ts +23 -0
  37. package/dist/erc4337/providers/safe.d.ts.map +1 -0
  38. package/dist/erc4337/providers/safe.js +117 -0
  39. package/dist/erc4337/providers/safe.js.map +1 -0
  40. package/dist/erc4337/providers/types.d.ts +88 -0
  41. package/dist/erc4337/providers/types.d.ts.map +1 -0
  42. package/dist/erc4337/providers/types.js +35 -0
  43. package/dist/erc4337/providers/types.js.map +1 -0
  44. package/dist/erc4337/smart-wallet.d.ts +16 -0
  45. package/dist/erc4337/smart-wallet.d.ts.map +1 -0
  46. package/dist/erc4337/smart-wallet.js +86 -0
  47. package/dist/erc4337/smart-wallet.js.map +1 -0
  48. package/dist/index.d.ts +16 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +15 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/modules/payment-intents.d.ts +99 -0
  53. package/dist/modules/payment-intents.d.ts.map +1 -0
  54. package/dist/modules/payment-intents.js +118 -0
  55. package/dist/modules/payment-intents.js.map +1 -0
  56. package/dist/modules/policies.d.ts +87 -0
  57. package/dist/modules/policies.d.ts.map +1 -0
  58. package/dist/modules/policies.js +61 -0
  59. package/dist/modules/policies.js.map +1 -0
  60. package/dist/paymaster/client.d.ts +11 -0
  61. package/dist/paymaster/client.d.ts.map +1 -0
  62. package/dist/paymaster/client.js +119 -0
  63. package/dist/paymaster/client.js.map +1 -0
  64. package/dist/runtimee.d.ts +4 -0
  65. package/dist/runtimee.d.ts.map +1 -0
  66. package/dist/runtimee.js +4 -0
  67. package/dist/runtimee.js.map +1 -0
  68. package/dist/types.d.ts +389 -0
  69. package/dist/types.d.ts.map +1 -0
  70. package/dist/types.js +2 -0
  71. package/dist/types.js.map +1 -0
  72. package/package.json +29 -0
  73. package/src/actor-client.ts +57 -0
  74. package/src/bundler/client.ts +306 -0
  75. package/src/bundler/providers/alchemy.ts +21 -0
  76. package/src/bundler/providers/pimlico.ts +17 -0
  77. package/src/client.ts +472 -0
  78. package/src/conversion.ts +25 -0
  79. package/src/erc4337/builder.ts +181 -0
  80. package/src/erc4337/providers/kernel.ts +136 -0
  81. package/src/erc4337/providers/safe.ts +133 -0
  82. package/src/erc4337/providers/types.ts +73 -0
  83. package/src/erc4337/smart-wallet.ts +115 -0
  84. package/src/index.ts +60 -0
  85. package/src/modules/payment-intents.ts +156 -0
  86. package/src/modules/policies.ts +79 -0
  87. package/src/paymaster/client.ts +155 -0
  88. package/src/runtimee.ts +3 -0
  89. package/src/types.ts +469 -0
  90. package/test/architecture/architecture-invariants.test.ts +61 -0
  91. package/test/client.test.ts +180 -0
  92. package/test/conversion.test.ts +42 -0
  93. package/test/runtimee.test.ts +30 -0
  94. package/tsconfig.json +9 -0
  95. package/vitest.config.ts +8 -0
@@ -0,0 +1,389 @@
1
+ export type { Address, AggregatedPolicyDecision, EntryPointVersion, GasEstimate, Hex, PaymentIntent, PaymentIntentStatus, PolicyDefinition, PolicyEvaluationResult, PolicyReason, SmartWallet as CoreSmartWallet, UserOperation, UserOperationCall, } from '@brninpay/core';
2
+ import type { Address, AggregatedPolicyDecision, EntryPointVersion, GasEstimate, Hex, PaymentIntentStatus, PolicyDefinition, PolicyEvaluationResult, PolicyReason, SmartWallet as CoreSmartWallet, UserOperation, UserOperationCall } from '@brninpay/core';
3
+ export interface CreateActorParams {
4
+ name: string;
5
+ budget: {
6
+ amount: string;
7
+ currency: 'USDC';
8
+ period: 'monthly' | 'total';
9
+ };
10
+ policies: {
11
+ type: string;
12
+ version?: string;
13
+ config?: Record<string, unknown>;
14
+ }[];
15
+ }
16
+ export interface PayParams {
17
+ target: string;
18
+ amount: string;
19
+ purpose: {
20
+ type: string;
21
+ id: string;
22
+ description?: string;
23
+ };
24
+ idempotencyKey?: string;
25
+ }
26
+ export interface PreviewPayParams {
27
+ target: string;
28
+ amount: string;
29
+ purpose: {
30
+ type: string;
31
+ id: string;
32
+ description?: string;
33
+ };
34
+ }
35
+ export interface ActorStatus {
36
+ budget: {
37
+ total: string;
38
+ used: string;
39
+ remaining: string;
40
+ period: string;
41
+ currency: string;
42
+ };
43
+ txCount: number;
44
+ }
45
+ export interface ActorSummary {
46
+ id: string;
47
+ name: string;
48
+ status: 'active' | 'frozen' | 'depleted';
49
+ createdAt: string;
50
+ }
51
+ export interface ExecutionReceipt {
52
+ executionId: string;
53
+ status: 'pending' | 'confirmed' | 'failed';
54
+ txHash?: string;
55
+ }
56
+ export interface SdkLogger {
57
+ debug(message: string, context?: Record<string, unknown>): void;
58
+ info(message: string, context?: Record<string, unknown>): void;
59
+ warn(message: string, context?: Record<string, unknown>): void;
60
+ error(message: string, context?: Record<string, unknown>): void;
61
+ }
62
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
63
+ export interface RequestContext {
64
+ url: URL;
65
+ method: HttpMethod;
66
+ headers: Headers;
67
+ bodyText?: string;
68
+ timeoutMs: number;
69
+ attempt: number;
70
+ }
71
+ export interface ResponseContext<T = unknown> {
72
+ request: RequestContext;
73
+ response: Response;
74
+ data: T;
75
+ }
76
+ export type RequestInterceptor = (context: RequestContext) => Promise<RequestContext | void> | RequestContext | void;
77
+ export type ResponseInterceptor<T = unknown> = (context: ResponseContext<T>) => Promise<ResponseContext<T> | void> | ResponseContext<T> | void;
78
+ export interface RetryPolicy {
79
+ retries: number;
80
+ baseDelayMs: number;
81
+ maxDelayMs: number;
82
+ retryMethods: readonly HttpMethod[];
83
+ }
84
+ export interface RuntimeeConfig {
85
+ apiKey: string;
86
+ apiSecret?: string;
87
+ baseUrl?: string;
88
+ timeoutMs?: number;
89
+ retryPolicy?: Partial<RetryPolicy>;
90
+ headers?: Record<string, string>;
91
+ logger?: SdkLogger;
92
+ fetchImplementation?: typeof fetch;
93
+ requestInterceptors?: RequestInterceptor[];
94
+ responseInterceptors?: ResponseInterceptor[];
95
+ }
96
+ export interface PaginationParams {
97
+ cursor?: string;
98
+ limit?: number;
99
+ }
100
+ export interface PaginatedResult<T> {
101
+ items: T[];
102
+ nextCursor: string | null;
103
+ }
104
+ export interface PaymentIntentRecipientInput {
105
+ address: Address;
106
+ chainId: number;
107
+ ensName?: string | null;
108
+ }
109
+ export interface CreatePaymentIntentParams {
110
+ workspaceId: string;
111
+ actorId: string;
112
+ amount: {
113
+ currency: 'USDC';
114
+ value: bigint | string | number;
115
+ decimals?: number;
116
+ };
117
+ recipient: PaymentIntentRecipientInput;
118
+ description?: string;
119
+ reference?: string;
120
+ expiresAt?: string | null;
121
+ metadata?: Record<string, unknown>;
122
+ idempotencyKey?: string;
123
+ }
124
+ export interface PaymentIntentPreviewParams {
125
+ workspaceId: string;
126
+ actorId: string;
127
+ amount: {
128
+ currency: 'USDC';
129
+ value: bigint | string | number;
130
+ decimals?: number;
131
+ };
132
+ recipient: PaymentIntentRecipientInput;
133
+ metadata?: Record<string, unknown>;
134
+ }
135
+ export interface PaymentIntentPreview {
136
+ decision: AggregatedPolicyDecision['decision'];
137
+ policyResults: PolicyEvaluationResult[];
138
+ estimatedGas?: bigint;
139
+ estimatedTotalCost?: bigint;
140
+ }
141
+ export interface GetPaymentIntentOptions {
142
+ waitForTerminalState?: boolean;
143
+ pollIntervalMs?: number;
144
+ timeoutMs?: number;
145
+ }
146
+ export interface ListPaymentIntentsParams extends PaginationParams {
147
+ workspaceId?: string;
148
+ actorId?: string;
149
+ status?: PaymentIntentStatus;
150
+ }
151
+ export interface CancelPaymentIntentParams {
152
+ reason?: string;
153
+ }
154
+ export interface CreatePolicyParams {
155
+ workspaceId: string;
156
+ actorId?: string;
157
+ policy: PolicyDefinition;
158
+ }
159
+ export interface UpdatePolicyParams {
160
+ id: string;
161
+ patch: Partial<Omit<PolicyDefinition, 'kind'>> & {
162
+ enabled?: boolean;
163
+ };
164
+ }
165
+ export interface ListPoliciesParams extends PaginationParams {
166
+ workspaceId?: string;
167
+ actorId?: string;
168
+ enabled?: boolean;
169
+ kind?: PolicyDefinition['kind'];
170
+ }
171
+ export interface ClientRequestOptions {
172
+ path: string;
173
+ method?: HttpMethod;
174
+ query?: Record<string, string | number | boolean | null | undefined>;
175
+ headers?: Record<string, string>;
176
+ body?: unknown;
177
+ timeoutMs?: number;
178
+ signal?: AbortSignal;
179
+ retryPolicy?: Partial<RetryPolicy>;
180
+ }
181
+ export interface ClientTransport {
182
+ request<T>(options: ClientRequestOptions): Promise<T>;
183
+ }
184
+ export interface JsonRpcSuccess<T> {
185
+ jsonrpc: '2.0';
186
+ id: number | string | null;
187
+ result: T;
188
+ }
189
+ export interface JsonRpcErrorShape {
190
+ code: number;
191
+ message: string;
192
+ data?: unknown;
193
+ }
194
+ export interface JsonRpcFailure {
195
+ jsonrpc: '2.0';
196
+ id: number | string | null;
197
+ error: JsonRpcErrorShape;
198
+ }
199
+ export interface BundlerProviderConfig {
200
+ name: string;
201
+ url: string;
202
+ headers?: Record<string, string>;
203
+ }
204
+ export interface BundlerClientConfig {
205
+ entryPointAddress: Address;
206
+ entryPointVersion: EntryPointVersion;
207
+ primary: BundlerProviderConfig;
208
+ secondary?: BundlerProviderConfig;
209
+ timeoutMs?: number;
210
+ pollingIntervalMs?: number;
211
+ maxRetries?: number;
212
+ logger?: SdkLogger;
213
+ fetchImplementation?: typeof fetch;
214
+ }
215
+ export interface UserOperationReceipt {
216
+ userOpHash: Hex;
217
+ entryPoint: Address;
218
+ sender: Address;
219
+ nonce: bigint;
220
+ actualGasCost: bigint;
221
+ actualGasUsed: bigint;
222
+ success: boolean;
223
+ receipt: {
224
+ transactionHash: Hex;
225
+ blockNumber: bigint;
226
+ blockHash: Hex;
227
+ };
228
+ logs: readonly unknown[];
229
+ }
230
+ export interface UserOperationByHash {
231
+ blockHash: Hex;
232
+ blockNumber: bigint;
233
+ entryPoint: Address;
234
+ transactionHash: Hex;
235
+ userOperation: UserOperation;
236
+ }
237
+ export interface SponsorshipContext {
238
+ workspaceId?: string;
239
+ actorId?: string;
240
+ policyIds?: string[];
241
+ metadata?: Record<string, unknown>;
242
+ }
243
+ export type SponsorshipData = {
244
+ version: 'v0.6';
245
+ paymasterAndData: Hex;
246
+ } | {
247
+ version: 'v0.7';
248
+ paymaster: Address | Hex;
249
+ paymasterData: Hex;
250
+ paymasterVerificationGasLimit: bigint;
251
+ paymasterPostOpGasLimit: bigint;
252
+ };
253
+ export interface PaymasterClientConfig {
254
+ url: string;
255
+ apiKey?: string;
256
+ timeoutMs?: number;
257
+ maxRetries?: number;
258
+ headers?: Record<string, string>;
259
+ logger?: SdkLogger;
260
+ fetchImplementation?: typeof fetch;
261
+ }
262
+ export interface PublicClientLike {
263
+ readContract<T = unknown>(parameters: {
264
+ address: Address;
265
+ abi: readonly unknown[];
266
+ functionName: string;
267
+ args?: readonly unknown[];
268
+ }): Promise<T>;
269
+ getCode(parameters: {
270
+ address: Address;
271
+ }): Promise<Hex | undefined>;
272
+ estimateFeesPerGas?(): Promise<{
273
+ maxFeePerGas?: bigint;
274
+ maxPriorityFeePerGas?: bigint;
275
+ gasPrice?: bigint;
276
+ }>;
277
+ getGasPrice?(): Promise<bigint>;
278
+ }
279
+ export interface SmartAccountOwner {
280
+ address: Address;
281
+ signMessage(parameters: {
282
+ message: string | {
283
+ raw: Hex;
284
+ };
285
+ }): Promise<Hex>;
286
+ signTypedData?<T extends Record<string, unknown>>(parameters: T): Promise<Hex>;
287
+ }
288
+ export interface SmartWalletProviderConfig {
289
+ publicClient: PublicClientLike;
290
+ owner: SmartAccountOwner;
291
+ entryPointAddress: Address;
292
+ entryPointVersion: EntryPointVersion;
293
+ factoryAddress: Address;
294
+ chainId: number;
295
+ saltNonce?: bigint;
296
+ }
297
+ export interface PreparedUserOperationContext {
298
+ walletAddress: Address;
299
+ walletDeployed: boolean;
300
+ calls: readonly UserOperationCall[];
301
+ nonce?: bigint;
302
+ sponsorship?: SponsorshipData;
303
+ }
304
+ export interface SmartWalletAccountProvider {
305
+ readonly kind: CoreSmartWallet['provider'];
306
+ readonly chainId: number;
307
+ readonly owner: SmartAccountOwner;
308
+ readonly entryPointAddress: Address;
309
+ readonly entryPointVersion: EntryPointVersion;
310
+ readonly factoryAddress: Address;
311
+ readonly saltNonce: bigint;
312
+ getCounterfactualAddress(): Promise<Address>;
313
+ getFactoryArgs(): Promise<{
314
+ factory?: Address;
315
+ factoryData?: Hex;
316
+ }>;
317
+ encodeCalls(calls: readonly UserOperationCall[]): Promise<Hex>;
318
+ getNonce(address: Address, key?: bigint): Promise<bigint>;
319
+ getStubSignature(): Promise<Hex>;
320
+ signUserOperation(userOperation: UserOperation): Promise<Hex>;
321
+ isDeployed(address: Address): Promise<boolean>;
322
+ }
323
+ export interface UserOperationBuilderConfig {
324
+ chainId: number;
325
+ entryPointAddress: Address;
326
+ entryPointVersion: EntryPointVersion;
327
+ usdcAddress: Address;
328
+ bundlerClient?: {
329
+ estimateUserOperationGas(userOperation: UserOperation): Promise<GasEstimate>;
330
+ };
331
+ publicClient?: PublicClientLike;
332
+ }
333
+ export interface SmartWalletConfig {
334
+ chainId: number;
335
+ usdcAddress: Address;
336
+ provider: SmartWalletAccountProvider;
337
+ bundlerClient: {
338
+ sendUserOperation(userOperation: UserOperation): Promise<Hex>;
339
+ getUserOperationReceipt(hash: Hex, options?: {
340
+ pollingIntervalMs?: number;
341
+ timeoutMs?: number;
342
+ }): Promise<UserOperationReceipt>;
343
+ };
344
+ paymasterClient?: {
345
+ requestSponsorship(userOperation: UserOperation, context?: SponsorshipContext): Promise<SponsorshipData>;
346
+ };
347
+ builder: {
348
+ buildUSDCTransfer(parameters: {
349
+ recipient: Address;
350
+ amount: bigint;
351
+ }): UserOperationCall;
352
+ prepareUserOperation(provider: SmartWalletAccountProvider, context: PreparedUserOperationContext): Promise<UserOperation>;
353
+ };
354
+ }
355
+ export interface BatchOperationOptions {
356
+ waitForReceipt?: boolean;
357
+ pollingIntervalMs?: number;
358
+ timeoutMs?: number;
359
+ sponsorshipContext?: SponsorshipContext;
360
+ }
361
+ export interface SmartWalletSendResult {
362
+ wallet: CoreSmartWallet;
363
+ userOperation: UserOperation;
364
+ userOperationHash: Hex;
365
+ receipt?: UserOperationReceipt;
366
+ }
367
+ export type SmartWalletInstance = CoreSmartWallet;
368
+ export interface PimlicoBundlerProviderParams {
369
+ chainId: number;
370
+ apiKey: string;
371
+ url?: string;
372
+ }
373
+ export interface AlchemyBundlerProviderParams {
374
+ apiKey: string;
375
+ network?: string;
376
+ url?: string;
377
+ }
378
+ export interface ApiErrorPayload {
379
+ code?: string;
380
+ message?: string;
381
+ details?: unknown;
382
+ statusCode?: number;
383
+ error?: string;
384
+ }
385
+ export interface PolicyDecisionExplanation {
386
+ decision: AggregatedPolicyDecision['decision'];
387
+ reasons: PolicyReason[];
388
+ }
389
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@brninpay/sdk",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "dependencies": {
14
+ "viem": "^2.21.0",
15
+ "@brninpay/core": "0.1.0"
16
+ },
17
+ "devDependencies": {
18
+ "rimraf": "^6.0.0",
19
+ "typescript": "^5.5.0",
20
+ "vitest": "^2.0.0"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "clean": "rimraf dist tsconfig.tsbuildinfo",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest",
27
+ "typecheck": "tsc --noEmit"
28
+ }
29
+ }
@@ -0,0 +1,57 @@
1
+ import { parseUsdc } from './conversion.js'
2
+ import type {
3
+ ActorStatus,
4
+ ActorSummary,
5
+ ClientTransport,
6
+ CreateActorParams,
7
+ ExecutionReceipt,
8
+ PayParams,
9
+ PreviewPayParams,
10
+ } from './types.js'
11
+
12
+ export class ActorClient {
13
+ constructor(private readonly transport: ClientTransport) {}
14
+
15
+ async create(params: CreateActorParams): Promise<ActorSummary> {
16
+ return this.transport.request<ActorSummary>({
17
+ path: '/api/actors',
18
+ method: 'POST',
19
+ body: params,
20
+ })
21
+ }
22
+
23
+ async pay(actorId: string, params: PayParams): Promise<ExecutionReceipt> {
24
+ return this.transport.request<ExecutionReceipt>({
25
+ path: `/api/actors/${encodeURIComponent(actorId)}/pay`,
26
+ method: 'POST',
27
+ body: {
28
+ target: params.target,
29
+ amount: parseUsdc(params.amount).toString(),
30
+ purpose: params.purpose,
31
+ idempotencyKey: params.idempotencyKey,
32
+ },
33
+ })
34
+ }
35
+
36
+ async previewPay(
37
+ actorId: string,
38
+ params: PreviewPayParams
39
+ ): Promise<{ decision: string; policyResults: unknown[] }> {
40
+ return this.transport.request<{ decision: string; policyResults: unknown[] }>({
41
+ path: `/api/actors/${encodeURIComponent(actorId)}/preview-pay`,
42
+ method: 'POST',
43
+ body: {
44
+ target: params.target,
45
+ amount: parseUsdc(params.amount).toString(),
46
+ purpose: params.purpose,
47
+ },
48
+ })
49
+ }
50
+
51
+ async status(actorId: string): Promise<ActorStatus> {
52
+ return this.transport.request<ActorStatus>({
53
+ path: `/api/actors/${encodeURIComponent(actorId)}`,
54
+ method: 'GET',
55
+ })
56
+ }
57
+ }