@edge-protocol/sdk 0.4.6 → 0.5.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/DOCS.md ADDED
@@ -0,0 +1,777 @@
1
+ # @edge-protocol/sdk — Full Developer Reference
2
+
3
+ > Programmable trust infrastructure for autonomous AI agents on Sui.
4
+ > Give agents your rules, not your keys.
5
+
6
+ ```bash
7
+ pnpm add @edge-protocol/sdk
8
+ ```
9
+
10
+ ---
11
+
12
+ ## Table of Contents
13
+
14
+ - [Core Concepts](#core-concepts)
15
+ - [Installation](#installation)
16
+ - [EdgePass API](#edgepass-api)
17
+ - [Templates](#templates)
18
+ - [PolicyEngine](#policyengine)
19
+ - [Types](#types)
20
+ - [Constants](#constants)
21
+ - [Integration Examples](#integration-examples)
22
+ - [Error Handling](#error-handling)
23
+ - [Architecture](#architecture)
24
+ - [Move Contract](#move-contract)
25
+
26
+ ---
27
+
28
+ ## Core Concepts
29
+
30
+ ### The Problem
31
+
32
+ Every developer building an autonomous agent faces the same unsolved problem:
33
+
34
+ ```
35
+ Option A: Give the agent full wallet access → catastrophic risk
36
+ Option B: Human approves every transaction → defeats the purpose
37
+ Option C: Build custom policy logic → 6-8 weeks of work
38
+ ```
39
+
40
+ **EdgePass is Option D** — a programmable trust boundary enforced on-chain.
41
+
42
+ ### EdgePass
43
+
44
+ An EdgePass is a Sui Move object that encodes a complete trust policy. It lives in the user's wallet — not in a contract. An agent executes against it without ever taking ownership.
45
+
46
+ ```
47
+ budget: $300 · auto-approve: <$50 · escalate: >$100 · merchants: [...] · expiry: 48h
48
+ ```
49
+
50
+ ### Transaction Outcomes
51
+
52
+ Every `sdk.execute()` returns one of three outcomes:
53
+
54
+ ```
55
+ ✅ approved — executed on-chain, digest available
56
+ ⚠️ escalated — exceeds threshold, needs user approval
57
+ 🚫 blocked — policy rejected, reason provided
58
+ ```
59
+
60
+ ### MIST
61
+
62
+ All amounts are in MIST — Sui's base unit.
63
+
64
+ ```typescript
65
+ 1 SUI = 1_000_000_000 MIST
66
+
67
+ import { MIST_PER_SUI } from '@edge-protocol/sdk';
68
+
69
+ const budget = 300n * MIST_PER_SUI; // 300 SUI
70
+ const amount = 18_500_000_000n; // 18.5 SUI
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Installation
76
+
77
+ ```bash
78
+ npm install @edge-protocol/sdk
79
+ # or
80
+ pnpm add @edge-protocol/sdk
81
+ # or
82
+ yarn add @edge-protocol/sdk
83
+ ```
84
+
85
+ ### Requirements
86
+
87
+ - Node.js 18+
88
+ - TypeScript 5.0+ (recommended)
89
+ - A Sui network (testnet or mainnet)
90
+ - An Enoki API key for gas sponsorship
91
+
92
+ ---
93
+
94
+ ## EdgePass API
95
+
96
+ ### `new EdgePass(config)`
97
+
98
+ Initialize the SDK client.
99
+
100
+ ```typescript
101
+ import { EdgePass } from '@edge-protocol/sdk';
102
+
103
+ const sdk = new EdgePass({
104
+ network: 'mainnet', // 'mainnet' | 'testnet' | 'devnet'
105
+ enokiApiKey: 'YOUR_KEY',
106
+ });
107
+ ```
108
+
109
+ ---
110
+
111
+ ### `sdk.create(config, signer)` → `Promise<EdgePassObject>`
112
+
113
+ Mint a new EdgePass as a Move object on Sui.
114
+
115
+ ```typescript
116
+ import { EdgePass, MIST_PER_SUI } from '@edge-protocol/sdk';
117
+
118
+ const pass = await sdk.create({
119
+ budget: 300n * MIST_PER_SUI, // total spend limit
120
+ autoThreshold: 50n * MIST_PER_SUI, // auto-approve below this
121
+ escalateThreshold: 100n * MIST_PER_SUI, // escalate above this
122
+ maxPerTransaction: 200n * MIST_PER_SUI, // optional hard cap per tx
123
+ approvedMerchants: ['Shuttle Express', 'Hydra Bar'],
124
+ expiryMs: 48 * 60 * 60 * 1000, // 48 hours
125
+ owner: userAddress,
126
+ }, signer);
127
+
128
+ console.log(pass.id); // Sui object ID — verifiable on Suiscan
129
+ console.log(pass.expiresAt); // Unix timestamp
130
+ ```
131
+
132
+ **Parameters:**
133
+
134
+ | Field | Type | Required | Description |
135
+ |-------|------|----------|-------------|
136
+ | `budget` | `bigint` | ✅ | Total spend limit in MIST |
137
+ | `autoThreshold` | `bigint` | ✅ | Auto-approve below this amount |
138
+ | `escalateThreshold` | `bigint` | ✅ | Escalate above this amount |
139
+ | `maxPerTransaction` | `bigint` | ❌ | Hard cap per single transaction |
140
+ | `approvedMerchants` | `string[]` | ✅ | Allowlist of merchant identifiers |
141
+ | `expiryMs` | `number` | ✅ | Duration until expiry in milliseconds |
142
+ | `owner` | `string` | ✅ | Sui address of the pass owner |
143
+
144
+ **Constraint:** `autoThreshold < escalateThreshold < budget`
145
+
146
+ ---
147
+
148
+ ### `EdgePass.fromTemplate(template, overrides)` → `EdgePassConfig`
149
+
150
+ Create a config from a pre-built template. Override any field.
151
+
152
+ ```typescript
153
+ // Use a template as-is
154
+ const config = EdgePass.fromTemplate('festival', { owner: userAddress });
155
+
156
+ // Override specific fields
157
+ const config = EdgePass.fromTemplate('defi', {
158
+ budget: 25_000n * MIST_PER_SUI,
159
+ approvedMerchants: ['DeepBook', 'Cetus', 'Turbos'],
160
+ owner: userAddress,
161
+ });
162
+
163
+ const pass = await sdk.create(config, signer);
164
+ ```
165
+
166
+ ---
167
+
168
+ ### `sdk.execute(pass, request, signer)` → `Promise<TransactionOutcome>`
169
+
170
+ Execute a transaction against an EdgePass. Policy is validated before touching the chain — blocked and escalated transactions never reach Sui.
171
+
172
+ ```typescript
173
+ const outcome = await sdk.execute(pass, {
174
+ merchant: 'Shuttle Express',
175
+ amount: 18_500_000_000n, // 18.5 SUI in MIST
176
+ }, signer);
177
+
178
+ switch (outcome.status) {
179
+ case 'approved':
180
+ console.log('tx digest:', outcome.digest);
181
+ // audit receipt written to Walrus automatically
182
+ break;
183
+
184
+ case 'escalated':
185
+ // notify user — outcome.reason explains why
186
+ await sendPushNotification(outcome.reason);
187
+ // re-execute after user approves
188
+ break;
189
+
190
+ case 'blocked':
191
+ // policy rejected — outcome.reason explains why
192
+ console.log('blocked:', outcome.reason);
193
+ break;
194
+ }
195
+ ```
196
+
197
+ ---
198
+
199
+ ### `sdk.validate(pass, request)` → `PolicyValidation`
200
+
201
+ Preview the outcome without executing. Zero network calls. Sub-millisecond. Use for UI previews before execution.
202
+
203
+ ```typescript
204
+ const preview = sdk.validate(pass, {
205
+ merchant: 'Shuttle Express',
206
+ amount: 18_500_000_000n,
207
+ });
208
+
209
+ // { allowed: true, requiresEscalation: false, reason: 'Auto-approved' }
210
+ // { allowed: true, requiresEscalation: true, reason: 'Amount exceeds escalation threshold...' }
211
+ // { allowed: false, requiresEscalation: false, reason: 'Merchant "X" is not approved' }
212
+
213
+ if (!preview.allowed) {
214
+ showBlockedUI(preview.reason);
215
+ return;
216
+ }
217
+
218
+ if (preview.requiresEscalation) {
219
+ showEscalationUI(preview.reason);
220
+ return;
221
+ }
222
+
223
+ // Safe to execute
224
+ const outcome = await sdk.execute(pass, request, signer);
225
+ ```
226
+
227
+ ---
228
+
229
+ ### `sdk.revoke(pass, signer)` → `Promise<{ digest: string }>`
230
+
231
+ Revoke an EdgePass on-chain. All future `execute()` calls return `blocked` immediately.
232
+
233
+ ```typescript
234
+ const { digest } = await sdk.revoke(pass, signer);
235
+ console.log('revoked:', digest);
236
+ ```
237
+
238
+ ---
239
+
240
+ ### `sdk.fetch(objectId)` → `Promise<EdgePassObject | null>`
241
+
242
+ Fetch a live EdgePass from the Sui network.
243
+
244
+ ```typescript
245
+ const pass = await sdk.fetch('0x4e2f...8b91');
246
+
247
+ if (!pass) {
248
+ console.log('EdgePass not found');
249
+ return;
250
+ }
251
+
252
+ const remaining = sdk.remainingBudget(pass);
253
+ console.log('remaining:', remaining);
254
+ ```
255
+
256
+ ---
257
+
258
+ ### `sdk.remainingBudget(pass)` → `bigint`
259
+
260
+ Returns remaining budget in MIST.
261
+
262
+ ```typescript
263
+ const remaining = sdk.remainingBudget(pass);
264
+ const remainingSUI = Number(remaining) / Number(MIST_PER_SUI);
265
+ console.log(`$${remainingSUI.toFixed(2)} remaining`);
266
+ ```
267
+
268
+ ---
269
+
270
+ ### `sdk.isValid(pass)` → `boolean`
271
+
272
+ Returns `true` if the pass is active and not expired.
273
+
274
+ ```typescript
275
+ if (!sdk.isValid(pass)) {
276
+ // create a new pass
277
+ pass = await sdk.create(config, signer);
278
+ }
279
+ ```
280
+
281
+ ---
282
+
283
+ ## Templates
284
+
285
+ Pre-configured trust boundaries for common use cases. Every template is a starting point — override any field.
286
+
287
+ ```typescript
288
+ import { EdgePass, EDGE_TEMPLATES } from '@edge-protocol/sdk';
289
+
290
+ // Available templates
291
+ EdgePass.fromTemplate('festival', { owner }) // $300 / 48h
292
+ EdgePass.fromTemplate('gaming', { owner }) // $50 / 4h session
293
+ EdgePass.fromTemplate('subscription', { owner }) // $200 / 30 days
294
+ EdgePass.fromTemplate('defi', { owner }) // $10k / 7 days
295
+ EdgePass.fromTemplate('enterprise', { owner }) // $50k / 30 days
296
+ ```
297
+
298
+ ### Template defaults
299
+
300
+ | Template | Budget | Auto ≤ | Escalate ≥ | Max/tx | Expiry |
301
+ |----------|--------|--------|------------|--------|--------|
302
+ | `festival` | 300 SUI | 50 SUI | 100 SUI | 200 SUI | 48h |
303
+ | `gaming` | 50 SUI | 2 SUI | 10 SUI | 10 SUI | 4h |
304
+ | `subscription` | 200 SUI | 20 SUI | 50 SUI | 50 SUI | 30d |
305
+ | `defi` | 10,000 SUI | 500 SUI | 1,000 SUI | 2,000 SUI | 7d |
306
+ | `enterprise` | 50,000 SUI | 1,000 SUI | 5,000 SUI | 10,000 SUI | 30d |
307
+
308
+ ### Accessing raw template values
309
+
310
+ ```typescript
311
+ import { EDGE_TEMPLATES } from '@edge-protocol/sdk';
312
+
313
+ console.log(EDGE_TEMPLATES.festival.budget); // 300_000_000_000n
314
+ console.log(EDGE_TEMPLATES.defi.escalateThreshold); // 1_000_000_000_000n
315
+ ```
316
+
317
+ ---
318
+
319
+ ## PolicyEngine
320
+
321
+ Access the policy engine directly for custom validation flows.
322
+
323
+ ```typescript
324
+ import { PolicyEngine } from '@edge-protocol/sdk';
325
+ ```
326
+
327
+ ### `PolicyEngine.validate(pass, request)` → `PolicyValidation`
328
+
329
+ Validates a transaction request. Same logic used internally by `sdk.execute()`.
330
+
331
+ ```typescript
332
+ const validation = PolicyEngine.validate(pass, {
333
+ merchant: 'Shuttle Express',
334
+ amount: 18_500_000_000n,
335
+ });
336
+
337
+ // validation.allowed → boolean
338
+ // validation.requiresEscalation → boolean
339
+ // validation.reason → string
340
+ ```
341
+
342
+ **Validation rules (in order):**
343
+
344
+ 1. Pass must be active
345
+ 2. Pass must not be expired
346
+ 3. Merchant must be in `approvedMerchants`
347
+ 4. Amount must not exceed remaining budget
348
+ 5. Amount must not exceed `maxPerTransaction` (if set)
349
+ 6. If amount > `escalateThreshold` → escalate
350
+ 7. If amount ≤ `autoThreshold` → auto-approve
351
+
352
+ ### `PolicyEngine.isValid(pass)` → `boolean`
353
+
354
+ ```typescript
355
+ const valid = PolicyEngine.isValid(pass);
356
+ ```
357
+
358
+ ### `PolicyEngine.remainingBudget(pass)` → `bigint`
359
+
360
+ ```typescript
361
+ const remaining = PolicyEngine.remainingBudget(pass);
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Types
367
+
368
+ ```typescript
369
+ import type {
370
+ EdgePassConfig,
371
+ EdgePassObject,
372
+ TransactionRequest,
373
+ TransactionOutcome,
374
+ PolicyValidation,
375
+ Network,
376
+ EdgeSDKConfig,
377
+ EdgePassTemplate,
378
+ } from '@edge-protocol/sdk';
379
+ ```
380
+
381
+ ### `EdgePassConfig`
382
+
383
+ ```typescript
384
+ interface EdgePassConfig {
385
+ budget: bigint; // total spend limit in MIST
386
+ autoThreshold: bigint; // auto-approve below this
387
+ escalateThreshold: bigint; // escalate above this
388
+ maxPerTransaction?: bigint; // optional hard cap per tx
389
+ approvedMerchants: string[]; // merchant allowlist
390
+ expiryMs: number; // duration in milliseconds
391
+ owner: string; // Sui address
392
+ }
393
+ ```
394
+
395
+ ### `EdgePassObject`
396
+
397
+ ```typescript
398
+ interface EdgePassObject {
399
+ id: string; // Sui object ID
400
+ config: EdgePassConfig;
401
+ spent: bigint; // total spent so far in MIST
402
+ active: boolean;
403
+ createdAt: number; // Unix timestamp
404
+ expiresAt: number; // Unix timestamp
405
+ }
406
+ ```
407
+
408
+ ### `TransactionRequest`
409
+
410
+ ```typescript
411
+ interface TransactionRequest {
412
+ merchant: string; // merchant identifier
413
+ amount: bigint; // amount in MIST
414
+ metadata?: Record<string, string>; // optional metadata
415
+ }
416
+ ```
417
+
418
+ ### `TransactionOutcome`
419
+
420
+ ```typescript
421
+ type TransactionOutcome =
422
+ | { status: 'approved'; digest: string; objectId?: string; auto: true }
423
+ | { status: 'escalated'; reason: string; auto: false }
424
+ | { status: 'blocked'; reason: string; auto: false };
425
+ ```
426
+
427
+ ### `PolicyValidation`
428
+
429
+ ```typescript
430
+ interface PolicyValidation {
431
+ allowed: boolean;
432
+ requiresEscalation: boolean;
433
+ reason: string;
434
+ }
435
+ ```
436
+
437
+ ### `Network`
438
+
439
+ ```typescript
440
+ type Network = 'mainnet' | 'testnet' | 'devnet';
441
+ ```
442
+
443
+ ### `EdgePassTemplate`
444
+
445
+ ```typescript
446
+ type EdgePassTemplate = 'festival' | 'gaming' | 'subscription' | 'defi' | 'enterprise';
447
+ ```
448
+
449
+ ---
450
+
451
+ ## Constants
452
+
453
+ ```typescript
454
+ import {
455
+ MIST_PER_SUI, // 1_000_000_000n
456
+ NETWORK_URLS, // { mainnet, testnet, devnet }
457
+ EDGE_PACKAGE_ID, // { mainnet, testnet, devnet }
458
+ EDGE_TEMPLATES, // all 5 templates
459
+ DEFAULT_GAS_BUDGET // 10_000_000n
460
+ } from '@edge-protocol/sdk';
461
+ ```
462
+
463
+ ---
464
+
465
+ ## Integration Examples
466
+
467
+ ### AI Agent with EdgePass
468
+
469
+ A Claude LLM making autonomous festival purchases within an EdgePass.
470
+
471
+ ```typescript
472
+ import { EdgePass, MIST_PER_SUI } from '@edge-protocol/sdk';
473
+ import Anthropic from '@anthropic-ai/sdk';
474
+
475
+ const sdk = new EdgePass({ network: 'mainnet', enokiApiKey: KEY });
476
+ const claude = new Anthropic();
477
+
478
+ // 1. User creates EdgePass once
479
+ const pass = await sdk.create(
480
+ EdgePass.fromTemplate('festival', {
481
+ approvedMerchants: ['Shuttle Express', 'Hydra Bar', 'Stage Access VIP'],
482
+ owner: userAddress,
483
+ }),
484
+ signer
485
+ );
486
+
487
+ // 2. Agent loop — runs autonomously
488
+ async function agentLoop(scenario: string) {
489
+ const response = await claude.messages.create({
490
+ model: 'claude-sonnet-4-6',
491
+ max_tokens: 500,
492
+ messages: [{
493
+ role: 'user',
494
+ content: `Festival scenario: "${scenario}".
495
+ Decide what to purchase. Return JSON:
496
+ { merchant: string, amount: number }`
497
+ }]
498
+ });
499
+
500
+ const { merchant, amount } = JSON.parse(response.content[0].text);
501
+
502
+ const outcome = await sdk.execute(pass, {
503
+ merchant,
504
+ amount: BigInt(Math.floor(amount * 1e9)),
505
+ }, signer);
506
+
507
+ if (outcome.status === 'escalated') {
508
+ await notifyUser(`Approve $${amount} at ${merchant}?`);
509
+ }
510
+
511
+ return outcome;
512
+ }
513
+ ```
514
+
515
+ ---
516
+
517
+ ### DeFi Trading Agent
518
+
519
+ ```typescript
520
+ const pass = await sdk.create(
521
+ EdgePass.fromTemplate('defi', {
522
+ approvedMerchants: ['DeepBook', 'Cetus', 'Turbos'],
523
+ budget: 5_000n * MIST_PER_SUI,
524
+ owner: userAddress,
525
+ }),
526
+ signer
527
+ );
528
+
529
+ async function executeTrade(dex: string, amount: bigint) {
530
+ // validate before network call
531
+ const preview = sdk.validate(pass, { merchant: dex, amount });
532
+
533
+ if (!preview.allowed) {
534
+ logger.warn(`Trade blocked: ${preview.reason}`);
535
+ return;
536
+ }
537
+
538
+ if (preview.requiresEscalation) {
539
+ await riskTeam.requestApproval({ dex, amount, reason: preview.reason });
540
+ return;
541
+ }
542
+
543
+ const outcome = await sdk.execute(pass, { merchant: dex, amount }, signer);
544
+ // audit log written to Walrus automatically
545
+ logger.info(`Trade executed: ${outcome.digest}`);
546
+ }
547
+ ```
548
+
549
+ ---
550
+
551
+ ### Enterprise Payroll Agent
552
+
553
+ ```typescript
554
+ const pass = await sdk.create(
555
+ EdgePass.fromTemplate('enterprise', {
556
+ approvedMerchants: ['vendor-a.sui', 'vendor-b.sui'],
557
+ budget: 100_000n * MIST_PER_SUI,
558
+ escalateThreshold: 10_000n * MIST_PER_SUI,
559
+ owner: cfoAddress,
560
+ }),
561
+ signer
562
+ );
563
+
564
+ for (const payment of scheduledPayments) {
565
+ const outcome = await sdk.execute(pass, {
566
+ merchant: payment.vendor,
567
+ amount: payment.amount,
568
+ }, signer);
569
+
570
+ if (outcome.status === 'escalated') {
571
+ await cfo.requestApproval(payment); // new vendor or large amount
572
+ }
573
+ // every payment logged to Walrus for compliance audit
574
+ }
575
+ ```
576
+
577
+ ---
578
+
579
+ ### Subscription Manager
580
+
581
+ ```typescript
582
+ const pass = await sdk.create(
583
+ EdgePass.fromTemplate('subscription', {
584
+ approvedMerchants: ['netflix.sui', 'spotify.sui', 'github.sui'],
585
+ owner: userAddress,
586
+ }),
587
+ signer
588
+ );
589
+
590
+ // Runs monthly — agent handles all renewals
591
+ async function processRenewals(subscriptions: Subscription[]) {
592
+ for (const sub of subscriptions) {
593
+ if (!sdk.isValid(pass)) {
594
+ pass = await sdk.create(
595
+ EdgePass.fromTemplate('subscription', { owner: userAddress }),
596
+ signer
597
+ );
598
+ }
599
+
600
+ await sdk.execute(pass, {
601
+ merchant: sub.merchant,
602
+ amount: sub.amount,
603
+ }, signer);
604
+ }
605
+ }
606
+ ```
607
+
608
+ ---
609
+
610
+ ## Error Handling
611
+
612
+ ```typescript
613
+ try {
614
+ const outcome = await sdk.execute(pass, request, signer);
615
+
616
+ switch (outcome.status) {
617
+ case 'approved':
618
+ // success — outcome.digest is the Sui tx hash
619
+ break;
620
+ case 'escalated':
621
+ // needs human review — outcome.reason explains why
622
+ break;
623
+ case 'blocked':
624
+ // policy rejected — outcome.reason explains why
625
+ break;
626
+ }
627
+ } catch (error) {
628
+ // network error, signing failure, expired credentials, etc.
629
+ console.error('SDK error:', error);
630
+ }
631
+ ```
632
+
633
+ ### Common reasons
634
+
635
+ | Reason | Cause |
636
+ |--------|-------|
637
+ | `EdgePass is inactive` | Pass was revoked |
638
+ | `EdgePass has expired` | `expiresAt` timestamp passed |
639
+ | `Merchant "X" is not approved` | Merchant not in allowlist |
640
+ | `Insufficient budget` | Remaining budget < amount |
641
+ | `Amount exceeds per-transaction limit` | Amount > `maxPerTransaction` |
642
+ | `Amount exceeds escalation threshold` | Amount > `escalateThreshold` (not blocked — escalated) |
643
+
644
+ ---
645
+
646
+ ## Architecture
647
+
648
+ ```
649
+ User creates EdgePass (once)
650
+
651
+
652
+ Agent calls sdk.execute() — many times, autonomously
653
+
654
+ ├─▶ PolicyEngine.validate()
655
+ │ Pure TypeScript · no network · <1ms
656
+ │ 7 rules checked in order
657
+ │ blocked/escalated never touch Sui
658
+
659
+ ├─▶ ExecutionEngine.buildPTB()
660
+ │ Programmable Transaction Block
661
+ │ validate → execute → update spent → emit event
662
+ │ atomic — any failure reverts everything
663
+
664
+ └─▶ Walrus audit receipt
665
+ immutable · decentralized · permanent
666
+ ```
667
+
668
+ ### Why PTBs matter
669
+
670
+ PTBs (Programmable Transaction Blocks) are Sui's killer feature. The policy check and the spend update happen in one atomic block. If any step fails, everything reverts. No partial state. No race conditions. This is what makes EdgePass trustworthy at the protocol level — not just application code.
671
+
672
+ ### Why the object model matters
673
+
674
+ The EdgePass is a first-class owned object in the user's wallet. An agent can be passed the object to execute against — but the Sui protocol guarantees it can never take ownership. No contract upgrade, no admin key, no reentrancy attack can change that.
675
+
676
+ ---
677
+
678
+ ## Move Contract
679
+
680
+ ```
681
+ Package: 0x9f4065009494aa5acd92a5c72a6c22ce80939b2bddae3b34345459bc98d2501d
682
+ Network: Sui Testnet (Mainnet coming)
683
+ ```
684
+
685
+ [View on Sui Explorer →](https://suiscan.xyz/testnet/object/0x9f4065009494aa5acd92a5c72a6c22ce80939b2bddae3b34345459bc98d2501d)
686
+
687
+ ### Contract functions
688
+
689
+ ```move
690
+ // Create a new EdgePass
691
+ public entry fun create_pass(
692
+ budget: u64,
693
+ auto_threshold: u64,
694
+ escalate_threshold: u64,
695
+ expiry_ms: u64,
696
+ approved_merchants: vector<String>,
697
+ clock: &Clock,
698
+ ctx: &mut TxContext,
699
+ )
700
+
701
+ // Execute a transaction against an EdgePass
702
+ public entry fun execute_transaction(
703
+ pass: &mut EdgePass,
704
+ amount: u64,
705
+ merchant: String,
706
+ clock: &Clock,
707
+ ctx: &mut TxContext,
708
+ )
709
+
710
+ // Revoke an EdgePass
711
+ public entry fun revoke_pass(
712
+ pass: &mut EdgePass,
713
+ ctx: &mut TxContext,
714
+ )
715
+ ```
716
+
717
+ ---
718
+
719
+ ## Testing
720
+
721
+ ```bash
722
+ cd packages/sdk && pnpm test
723
+ ```
724
+
725
+ ```
726
+ 📋 PolicyEngine.validate()
727
+ ✓ auto-approves under $50
728
+ ✓ auto-approves at exactly $50
729
+ ✓ escalates above $100
730
+ ✓ escalates at exactly $101
731
+ ✓ blocks unlisted merchant
732
+ ✓ blocks when budget exceeded
733
+ ✓ blocks when expired
734
+ ✓ blocks when inactive
735
+ ✓ blocks when maxPerTransaction exceeded
736
+ ✓ allows when maxPerTransaction is undefined
737
+
738
+ 📋 PolicyEngine helpers
739
+ ✓ isValid returns true for active pass
740
+ ✓ isValid returns false for expired pass
741
+ ✓ isValid returns false for inactive pass
742
+ ✓ remainingBudget calculates correctly
743
+ ✓ remainingBudget returns full budget when nothing spent
744
+
745
+ 📋 EdgePass.fromTemplate()
746
+ ✓ festival template has correct defaults
747
+ ✓ gaming template has correct expiry
748
+ ✓ defi template has correct budget
749
+ ✓ enterprise template has correct budget
750
+ ✓ fromTemplate allows budget override
751
+ ✓ fromTemplate allows merchant override
752
+ ✓ fromTemplate preserves owner
753
+
754
+ 📋 Constants
755
+ ✓ MIST_PER_SUI is 1_000_000_000
756
+ ✓ all 5 templates exist
757
+ ✓ all templates have required fields
758
+ ✓ all templates have autoThreshold < escalateThreshold
759
+ ✓ all templates have escalateThreshold < budget
760
+
761
+ 27 passed · 0 failed ✅
762
+ ```
763
+
764
+ ---
765
+
766
+ ## Links
767
+
768
+ - **npm:** [npmjs.com/package/@edge-protocol/sdk](https://npmjs.com/package/@edge-protocol/sdk)
769
+ - **GitHub:** [github.com/fluturecode/edge](https://github.com/fluturecode/edge)
770
+ - **Live Demo:** [edge-web-cyan.vercel.app](https://edge-web-cyan.vercel.app)
771
+ - **Sui Explorer:** [Contract on Testnet](https://suiscan.xyz/testnet/object/0x9f4065009494aa5acd92a5c72a6c22ce80939b2bddae3b34345459bc98d2501d)
772
+
773
+ ---
774
+
775
+ *The best infrastructure is invisible.*
776
+
777
+ Built for [Sui Overflow 2026](https://overflow.sui.io) · MIT License
@@ -1,27 +1,109 @@
1
1
  import { Transaction } from "@mysten/sui/transactions";
2
2
  import { EdgePassConfig, EdgePassObject, TransactionRequest, TransactionOutcome, EdgeSDKConfig } from "../utils/types";
3
3
  import { EdgePassTemplate } from "../utils/constants";
4
+ export type EdgePassEventType = 'approved' | 'escalated' | 'blocked';
5
+ export type EdgePassEventPayload = {
6
+ type: 'approved';
7
+ outcome: TransactionOutcome & {
8
+ status: 'approved';
9
+ };
10
+ pass: EdgePassObject;
11
+ request: TransactionRequest;
12
+ } | {
13
+ type: 'escalated';
14
+ outcome: TransactionOutcome & {
15
+ status: 'escalated';
16
+ };
17
+ pass: EdgePassObject;
18
+ request: TransactionRequest;
19
+ } | {
20
+ type: 'blocked';
21
+ outcome: TransactionOutcome & {
22
+ status: 'blocked';
23
+ };
24
+ pass: EdgePassObject;
25
+ request: TransactionRequest;
26
+ };
27
+ type EventListener<T extends EdgePassEventType> = (payload: Extract<EdgePassEventPayload, {
28
+ type: T;
29
+ }>) => void | Promise<void>;
4
30
  export declare class EdgePass {
5
31
  private client;
6
32
  private engine;
7
33
  private config;
34
+ private listeners;
8
35
  constructor(config: EdgeSDKConfig);
36
+ /**
37
+ * Subscribe to transaction outcomes.
38
+ *
39
+ * @example
40
+ * sdk.on('approved', ({ outcome, pass }) => {
41
+ * console.log('executed:', outcome.digest);
42
+ * });
43
+ *
44
+ * sdk.on('escalated', ({ outcome, request }) => {
45
+ * notifyUser(`Approve $${request.amount} at ${request.merchant}?`);
46
+ * });
47
+ *
48
+ * sdk.on('blocked', ({ outcome }) => {
49
+ * logger.warn('blocked:', outcome.reason);
50
+ * });
51
+ */
52
+ on<T extends EdgePassEventType>(event: T, listener: EventListener<T>): this;
53
+ /**
54
+ * Unsubscribe a specific listener.
55
+ */
56
+ off<T extends EdgePassEventType>(event: T, listener: EventListener<T>): this;
57
+ /**
58
+ * Remove all listeners for an event (or all events if none specified).
59
+ */
60
+ removeAllListeners(event?: EdgePassEventType): this;
61
+ private emit;
62
+ /**
63
+ * Creates an EdgePassConfig from a template with optional overrides.
64
+ *
65
+ * @example
66
+ * const config = EdgePass.fromTemplate('festival', {
67
+ * approvedMerchants: ['Shuttle Express', 'Hydra Bar'],
68
+ * owner: userAddress,
69
+ * });
70
+ */
9
71
  static fromTemplate(template: EdgePassTemplate, overrides: Partial<EdgePassConfig> & {
10
72
  owner: string;
11
73
  }): EdgePassConfig;
74
+ /**
75
+ * Mint a new EdgePass on Sui.
76
+ */
12
77
  create(passConfig: EdgePassConfig, signer: {
13
78
  signAndExecute: (tx: Transaction, kindBytes: string) => Promise<{
14
79
  digest: string;
15
80
  objectId?: string | null;
16
81
  }>;
17
82
  }): Promise<EdgePassObject>;
83
+ /**
84
+ * Execute a transaction against an EdgePass.
85
+ * Fires 'approved', 'escalated', or 'blocked' events automatically.
86
+ *
87
+ * @example
88
+ * sdk.on('approved', ({ outcome }) => console.log('tx:', outcome.digest));
89
+ * const outcome = await sdk.execute(pass, { merchant, amount }, signer);
90
+ */
18
91
  execute(pass: EdgePassObject, request: TransactionRequest, signer: {
19
92
  signAndExecute: (tx: Transaction) => Promise<{
20
93
  digest: string;
21
94
  }>;
22
95
  }): Promise<TransactionOutcome>;
96
+ /**
97
+ * Preview outcome without executing. Zero network calls.
98
+ */
23
99
  validate(pass: EdgePassObject, request: TransactionRequest): import("../utils/types").PolicyValidation;
100
+ /**
101
+ * Fetch a live EdgePass from Sui.
102
+ */
24
103
  fetch(objectId: string): Promise<EdgePassObject | null>;
104
+ /**
105
+ * Revoke an EdgePass on-chain.
106
+ */
25
107
  revoke(pass: EdgePassObject, signer: {
26
108
  signAndExecute: (tx: Transaction) => Promise<{
27
109
  digest: string;
@@ -29,7 +111,14 @@ export declare class EdgePass {
29
111
  }): Promise<{
30
112
  digest: string;
31
113
  }>;
114
+ /**
115
+ * Returns remaining budget in MIST.
116
+ */
32
117
  remainingBudget(pass: EdgePassObject): bigint;
118
+ /**
119
+ * Returns true if the pass is active and not expired.
120
+ */
33
121
  isValid(pass: EdgePassObject): boolean;
34
122
  }
123
+ export {};
35
124
  //# sourceMappingURL=EdgePass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EdgePass.d.ts","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAKL,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAK5B,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAMjC,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GACrD,cAAc;IASX,MAAM,CACV,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE;QAAE,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAA;KAAE,GACxH,OAAO,CAAC,cAAc,CAAC;IAsCpB,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE;QAAE,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAC3E,OAAO,CAAC,kBAAkB,CAAC;IAI9B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB;IAIpD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIvD,MAAM,CACV,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;QAAE,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAC3E,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW9B,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAI7C,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;CAGvC"}
1
+ {"version":3,"file":"EdgePass.d.ts","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,80 @@ const ExecutionEngine_1 = require("./ExecutionEngine");
9
9
  const constants_1 = require("../utils/constants");
10
10
  // Sui Clock object ID — shared object, always the same address
11
11
  const SUI_CLOCK_OBJECT_ID = '0x0000000000000000000000000000000000000000000000000000000000000006';
12
+ // ── EdgePass class ────────────────────────────────────────────────────────────
12
13
  class EdgePass {
13
14
  constructor(config) {
15
+ this.listeners = new Map();
14
16
  this.config = config;
15
17
  this.client = new client_1.SuiClient({ url: constants_1.NETWORK_URLS[config.network] });
16
18
  this.engine = new ExecutionEngine_1.ExecutionEngine(config.network);
17
19
  }
20
+ // ── Event system ────────────────────────────────────────────────────────────
21
+ /**
22
+ * Subscribe to transaction outcomes.
23
+ *
24
+ * @example
25
+ * sdk.on('approved', ({ outcome, pass }) => {
26
+ * console.log('executed:', outcome.digest);
27
+ * });
28
+ *
29
+ * sdk.on('escalated', ({ outcome, request }) => {
30
+ * notifyUser(`Approve $${request.amount} at ${request.merchant}?`);
31
+ * });
32
+ *
33
+ * sdk.on('blocked', ({ outcome }) => {
34
+ * logger.warn('blocked:', outcome.reason);
35
+ * });
36
+ */
37
+ on(event, listener) {
38
+ if (!this.listeners.has(event)) {
39
+ this.listeners.set(event, new Set());
40
+ }
41
+ this.listeners.get(event).add(listener);
42
+ return this; // chainable
43
+ }
44
+ /**
45
+ * Unsubscribe a specific listener.
46
+ */
47
+ off(event, listener) {
48
+ this.listeners.get(event)?.delete(listener);
49
+ return this;
50
+ }
51
+ /**
52
+ * Remove all listeners for an event (or all events if none specified).
53
+ */
54
+ removeAllListeners(event) {
55
+ if (event) {
56
+ this.listeners.delete(event);
57
+ }
58
+ else {
59
+ this.listeners.clear();
60
+ }
61
+ return this;
62
+ }
63
+ emit(payload) {
64
+ const listeners = this.listeners.get(payload.type);
65
+ if (!listeners)
66
+ return;
67
+ for (const listener of listeners) {
68
+ try {
69
+ listener(payload);
70
+ }
71
+ catch (e) {
72
+ console.error(`EdgePass event listener error (${payload.type}):`, e);
73
+ }
74
+ }
75
+ }
76
+ // ── Static helpers ──────────────────────────────────────────────────────────
77
+ /**
78
+ * Creates an EdgePassConfig from a template with optional overrides.
79
+ *
80
+ * @example
81
+ * const config = EdgePass.fromTemplate('festival', {
82
+ * approvedMerchants: ['Shuttle Express', 'Hydra Bar'],
83
+ * owner: userAddress,
84
+ * });
85
+ */
18
86
  static fromTemplate(template, overrides) {
19
87
  const base = constants_1.EDGE_TEMPLATES[template];
20
88
  return {
@@ -23,6 +91,10 @@ class EdgePass {
23
91
  approvedMerchants: overrides.approvedMerchants ?? base.approvedMerchants,
24
92
  };
25
93
  }
94
+ // ── Core API ────────────────────────────────────────────────────────────────
95
+ /**
96
+ * Mint a new EdgePass on Sui.
97
+ */
26
98
  async create(passConfig, signer) {
27
99
  const tx = new transactions_1.Transaction();
28
100
  tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
@@ -42,7 +114,6 @@ class EdgePass {
42
114
  }),
43
115
  ],
44
116
  });
45
- // All arguments statically known — no RPC needed, instant build
46
117
  const kindBytes = (0, utils_1.toBase64)(await tx.build({ onlyTransactionKind: true }));
47
118
  const result = await signer.signAndExecute(tx, kindBytes);
48
119
  const now = Date.now();
@@ -55,15 +126,40 @@ class EdgePass {
55
126
  expiresAt: now + passConfig.expiryMs,
56
127
  };
57
128
  }
129
+ /**
130
+ * Execute a transaction against an EdgePass.
131
+ * Fires 'approved', 'escalated', or 'blocked' events automatically.
132
+ *
133
+ * @example
134
+ * sdk.on('approved', ({ outcome }) => console.log('tx:', outcome.digest));
135
+ * const outcome = await sdk.execute(pass, { merchant, amount }, signer);
136
+ */
58
137
  async execute(pass, request, signer) {
59
- return this.engine.execute(pass, request, signer);
138
+ const outcome = await this.engine.execute(pass, request, signer);
139
+ // Fire event listeners
140
+ this.emit({
141
+ type: outcome.status,
142
+ outcome: outcome,
143
+ pass,
144
+ request,
145
+ });
146
+ return outcome;
60
147
  }
148
+ /**
149
+ * Preview outcome without executing. Zero network calls.
150
+ */
61
151
  validate(pass, request) {
62
152
  return PolicyEngine_1.PolicyEngine.validate(pass, request);
63
153
  }
154
+ /**
155
+ * Fetch a live EdgePass from Sui.
156
+ */
64
157
  async fetch(objectId) {
65
158
  return this.engine.fetchPass(objectId);
66
159
  }
160
+ /**
161
+ * Revoke an EdgePass on-chain.
162
+ */
67
163
  async revoke(pass, signer) {
68
164
  const tx = new transactions_1.Transaction();
69
165
  tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
@@ -74,9 +170,15 @@ class EdgePass {
74
170
  });
75
171
  return signer.signAndExecute(tx);
76
172
  }
173
+ /**
174
+ * Returns remaining budget in MIST.
175
+ */
77
176
  remainingBudget(pass) {
78
177
  return PolicyEngine_1.PolicyEngine.remainingBudget(pass);
79
178
  }
179
+ /**
180
+ * Returns true if the pass is active and not expired.
181
+ */
80
182
  isValid(pass) {
81
183
  return PolicyEngine_1.PolicyEngine.isValid(pass);
82
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"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"}
package/dist/test.js CHANGED
@@ -200,4 +200,104 @@ if (failed > 0) {
200
200
  else {
201
201
  console.log(`\n ✅ All ${passed} tests passing`);
202
202
  }
203
+ // ── Events system ─────────────────────────────────────────────────────────────
204
+ console.log('\n📋 Events system');
205
+ test('on() returns sdk instance for chaining', () => {
206
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
207
+ const result = sdk.on('approved', () => { });
208
+ assert(result === sdk, 'should be chainable');
209
+ });
210
+ test('fires approved event on auto-approve', async () => {
211
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
212
+ let fired = false;
213
+ sdk.on('approved', ({ outcome, request }) => {
214
+ fired = true;
215
+ assertEqual(outcome.status, 'approved', 'event status');
216
+ assertEqual(request.merchant, 'Shuttle Express', 'event merchant');
217
+ });
218
+ const mockSigner = {
219
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
220
+ };
221
+ await sdk.execute(mockPass, {
222
+ merchant: 'Shuttle Express',
223
+ amount: BigInt(18) * constants_1.MIST_PER_SUI,
224
+ }, mockSigner);
225
+ assert(fired, 'approved event should have fired');
226
+ });
227
+ test('fires blocked event on policy rejection', async () => {
228
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
229
+ let fired = false;
230
+ sdk.on('blocked', ({ outcome }) => {
231
+ fired = true;
232
+ assertEqual(outcome.status, 'blocked', 'event status');
233
+ });
234
+ const mockSigner = {
235
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
236
+ };
237
+ await sdk.execute(mockPass, {
238
+ merchant: 'ShadyTokens.xyz',
239
+ amount: BigInt(1) * constants_1.MIST_PER_SUI,
240
+ }, mockSigner);
241
+ assert(fired, 'blocked event should have fired');
242
+ });
243
+ test('fires escalated event above threshold', async () => {
244
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
245
+ let fired = false;
246
+ sdk.on('escalated', ({ outcome }) => {
247
+ fired = true;
248
+ assertEqual(outcome.status, 'escalated', 'event status');
249
+ });
250
+ const mockSigner = {
251
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
252
+ };
253
+ await sdk.execute(mockPass, {
254
+ merchant: 'Shuttle Express',
255
+ amount: BigInt(149) * constants_1.MIST_PER_SUI,
256
+ }, mockSigner);
257
+ assert(fired, 'escalated event should have fired');
258
+ });
259
+ test('off() removes listener', async () => {
260
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
261
+ let count = 0;
262
+ const listener = () => { count++; };
263
+ sdk.on('blocked', listener);
264
+ sdk.off('blocked', listener);
265
+ const mockSigner = {
266
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
267
+ };
268
+ await sdk.execute(mockPass, {
269
+ merchant: 'ShadyTokens.xyz',
270
+ amount: BigInt(1) * constants_1.MIST_PER_SUI,
271
+ }, mockSigner);
272
+ assertEqual(count, 0, 'listener should not fire after off()');
273
+ });
274
+ test('removeAllListeners() clears all events', async () => {
275
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
276
+ let count = 0;
277
+ sdk.on('approved', () => { count++; });
278
+ sdk.on('blocked', () => { count++; });
279
+ sdk.removeAllListeners();
280
+ const mockSigner = {
281
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
282
+ };
283
+ await sdk.execute(mockPass, {
284
+ merchant: 'ShadyTokens.xyz',
285
+ amount: BigInt(1) * constants_1.MIST_PER_SUI,
286
+ }, mockSigner);
287
+ assertEqual(count, 0, 'no listeners should fire after removeAllListeners()');
288
+ });
289
+ test('multiple listeners fire for same event', async () => {
290
+ const sdk = new EdgePass_1.EdgePass({ network: 'testnet', enokiApiKey: 'test' });
291
+ let count = 0;
292
+ sdk.on('blocked', () => { count++; });
293
+ sdk.on('blocked', () => { count++; });
294
+ const mockSigner = {
295
+ signAndExecute: async () => ({ digest: '0xmock', objectId: null }),
296
+ };
297
+ await sdk.execute(mockPass, {
298
+ merchant: 'ShadyTokens.xyz',
299
+ amount: BigInt(1) * constants_1.MIST_PER_SUI,
300
+ }, mockSigner);
301
+ assertEqual(count, 2, 'both listeners should fire');
302
+ });
203
303
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,sDAAmD;AACnD,8CAA2C;AAE3C,iDAAiE;AAEjE,iFAAiF;AAEjF,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,SAAS,IAAI,CAAC,IAAY,EAAE,EAAc;IACxC,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB,EAAE,OAAe;IACjD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAAI,MAAS,EAAE,QAAW,EAAE,OAAe;IAC7D,IAAI,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,eAAe,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,iFAAiF;AAEjF,MAAM,QAAQ,GAAmB;IAC/B,EAAE,EAAE,OAAO;IACX,MAAM,EAAE;QACN,MAAM,EAAa,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY;QAC7C,aAAa,EAAM,MAAM,CAAC,EAAE,CAAC,GAAI,wBAAY;QAC7C,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY;QAC7C,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY;QAC7C,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,CAAC;QACvE,QAAQ,EAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACtC,KAAK,EAAc,OAAO;KAC3B;IACD,KAAK,EAAM,MAAM,CAAC,CAAC,CAAC;IACpB,MAAM,EAAK,IAAI;IACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC5C,CAAC;AAEF,iFAAiF;AAEjF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAE5C,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC9G,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACrD,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC9G,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC/G,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC/G,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACpC,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC7G,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,gCAAgC,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACvC,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC;IAChE,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC1G,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAC/B,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3D,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC1G,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC1G,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,gCAAgC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC/G,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,6CAA6C,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACtD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,CAAC;IAC3F,MAAM,CAAC,GAAG,2BAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC,CAAC;IAC3G,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;IACjE,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,kFAAkF;AAElF,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEzC,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,MAAM,CAAC,2BAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3D,MAAM,CAAC,CAAC,2BAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC5C,MAAM,CAAC,CAAC,2BAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,kBAAkB,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAClE,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzD,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,kFAAkF;AAElF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAE5C,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,0BAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrE,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,0BAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1F,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,0BAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IACtG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,4BAA4B,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,GAAG,wBAAY,EAAE,+BAA+B,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,GAAG,wBAAY,EAAE,qCAAqC,CAAC,CAAC;AACnG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;IAC/C,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,UAAU,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY;QAClC,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAY,EAAE,mBAAmB,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,UAAU,EAAE;QAC/C,iBAAiB,EAAE,SAAS;QAC5B,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAClE,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,MAAM,GAAG,mBAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE9B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACzC,WAAW,CAAC,wBAAY,EAAE,MAAM,CAAC,UAAa,CAAC,EAAE,cAAc,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/E,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,CAAC,IAAI,0BAAc,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,GAAG,IAAI,qBAAqB,CAAC,CAAC;QAC3D,MAAM,CAAC,eAAe,IAAI,QAAQ,EAAE,GAAG,IAAI,4BAA4B,CAAC,CAAC;QACzE,MAAM,CAAC,mBAAmB,IAAI,QAAQ,EAAE,GAAG,IAAI,gCAAgC,CAAC,CAAC;QACjF,MAAM,CAAC,UAAU,IAAI,QAAQ,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,CACJ,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,iBAAiB,EACnD,GAAG,IAAI,qDAAqD,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACzD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,CACJ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAC5C,GAAG,IAAI,8CAA8C,CACtD,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,aAAa,MAAM,SAAS,CAAC,CAAC;AACrD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,SAAS,MAAM,iBAAiB,CAAC,CAAC;IAC/C,OAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,gBAAgB,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edge-protocol/sdk",
3
- "version": "0.4.6",
3
+ "version": "0.5.0",
4
4
  "description": "Programmable trust infrastructure for autonomous AI agents on Sui. Give agents your rules, not your keys.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",