toss-expo-sdk 0.1.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +490 -81
  2. package/lib/module/ble.js +59 -4
  3. package/lib/module/ble.js.map +1 -1
  4. package/lib/module/client/BLETransactionHandler.js +277 -0
  5. package/lib/module/client/BLETransactionHandler.js.map +1 -0
  6. package/lib/module/client/NonceAccountManager.js +364 -0
  7. package/lib/module/client/NonceAccountManager.js.map +1 -0
  8. package/lib/module/client/TossClient.js +27 -44
  9. package/lib/module/client/TossClient.js.map +1 -1
  10. package/lib/module/contexts/WalletContext.js +4 -4
  11. package/lib/module/contexts/WalletContext.js.map +1 -1
  12. package/lib/module/discovery.js +35 -8
  13. package/lib/module/discovery.js.map +1 -1
  14. package/lib/module/examples/offlinePaymentFlow.js +27 -2
  15. package/lib/module/examples/offlinePaymentFlow.js.map +1 -1
  16. package/lib/module/hooks/useOfflineBLETransactions.js +314 -0
  17. package/lib/module/hooks/useOfflineBLETransactions.js.map +1 -0
  18. package/lib/module/index.js +13 -8
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/intent.js +198 -0
  21. package/lib/module/intent.js.map +1 -1
  22. package/lib/module/nfc.js +1 -1
  23. package/lib/module/noise.js +176 -1
  24. package/lib/module/noise.js.map +1 -1
  25. package/lib/module/reconciliation.js +155 -0
  26. package/lib/module/reconciliation.js.map +1 -1
  27. package/lib/module/services/authService.js +164 -1
  28. package/lib/module/services/authService.js.map +1 -1
  29. package/lib/module/storage/secureStorage.js +102 -0
  30. package/lib/module/storage/secureStorage.js.map +1 -1
  31. package/lib/module/storage.js +4 -4
  32. package/lib/module/sync.js +25 -1
  33. package/lib/module/sync.js.map +1 -1
  34. package/lib/module/types/nonceAccount.js +2 -0
  35. package/lib/module/types/nonceAccount.js.map +1 -0
  36. package/lib/module/types/tossUser.js +16 -1
  37. package/lib/module/types/tossUser.js.map +1 -1
  38. package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts +8 -0
  39. package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts.map +1 -0
  40. package/lib/typescript/src/ble.d.ts +31 -2
  41. package/lib/typescript/src/ble.d.ts.map +1 -1
  42. package/lib/typescript/src/client/BLETransactionHandler.d.ts +98 -0
  43. package/lib/typescript/src/client/BLETransactionHandler.d.ts.map +1 -0
  44. package/lib/typescript/src/client/NonceAccountManager.d.ts +82 -0
  45. package/lib/typescript/src/client/NonceAccountManager.d.ts.map +1 -0
  46. package/lib/typescript/src/client/TossClient.d.ts +10 -12
  47. package/lib/typescript/src/client/TossClient.d.ts.map +1 -1
  48. package/lib/typescript/src/discovery.d.ts +8 -2
  49. package/lib/typescript/src/discovery.d.ts.map +1 -1
  50. package/lib/typescript/src/examples/offlinePaymentFlow.d.ts +9 -1
  51. package/lib/typescript/src/examples/offlinePaymentFlow.d.ts.map +1 -1
  52. package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts +91 -0
  53. package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts.map +1 -0
  54. package/lib/typescript/src/index.d.ts +11 -4
  55. package/lib/typescript/src/index.d.ts.map +1 -1
  56. package/lib/typescript/src/intent.d.ts +26 -0
  57. package/lib/typescript/src/intent.d.ts.map +1 -1
  58. package/lib/typescript/src/noise.d.ts +62 -0
  59. package/lib/typescript/src/noise.d.ts.map +1 -1
  60. package/lib/typescript/src/reconciliation.d.ts +6 -0
  61. package/lib/typescript/src/reconciliation.d.ts.map +1 -1
  62. package/lib/typescript/src/services/authService.d.ts +26 -1
  63. package/lib/typescript/src/services/authService.d.ts.map +1 -1
  64. package/lib/typescript/src/storage/secureStorage.d.ts +16 -0
  65. package/lib/typescript/src/storage/secureStorage.d.ts.map +1 -1
  66. package/lib/typescript/src/sync.d.ts +6 -1
  67. package/lib/typescript/src/sync.d.ts.map +1 -1
  68. package/lib/typescript/src/types/nonceAccount.d.ts +59 -0
  69. package/lib/typescript/src/types/nonceAccount.d.ts.map +1 -0
  70. package/lib/typescript/src/types/tossUser.d.ts +16 -0
  71. package/lib/typescript/src/types/tossUser.d.ts.map +1 -1
  72. package/package.json +12 -1
  73. package/src/__tests__/reconciliation.test.tsx +7 -1
  74. package/src/__tests__/solana-program-simple.test.ts +256 -0
  75. package/src/ble.ts +105 -4
  76. package/src/client/BLETransactionHandler.ts +364 -0
  77. package/src/client/NonceAccountManager.ts +444 -0
  78. package/src/client/TossClient.ts +36 -49
  79. package/src/contexts/WalletContext.tsx +4 -4
  80. package/src/discovery.ts +46 -8
  81. package/src/examples/offlinePaymentFlow.ts +48 -2
  82. package/src/hooks/useOfflineBLETransactions.ts +438 -0
  83. package/src/index.tsx +49 -7
  84. package/src/intent.ts +254 -0
  85. package/src/nfc.ts +4 -4
  86. package/src/noise.ts +239 -1
  87. package/src/reconciliation.ts +184 -0
  88. package/src/services/authService.ts +188 -1
  89. package/src/storage/secureStorage.ts +142 -4
  90. package/src/storage.ts +4 -4
  91. package/src/sync.ts +40 -0
  92. package/src/types/nonceAccount.ts +75 -0
  93. package/src/types/tossUser.ts +35 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ble.d.ts","sourceRoot":"","sources":["../../../src/ble.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAQ7C,wBAAsB,qBAAqB,kBAQ1C;AAUD,wBAAgB,aAAa,CAC3B,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EACrD,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,QA0C9D;AAKD,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,iBAuBjD;AAED,wBAAsB,eAAe,kBASpC;AAGD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,iBAcrB;AAGD,wBAAgB,QAAQ,SAEvB"}
1
+ {"version":3,"file":"ble.d.ts","sourceRoot":"","sources":["../../../src/ble.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa/D,wBAAsB,qBAAqB,kBAQ1C;AAUD,wBAAgB,aAAa,CAC3B,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EACrD,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAC7D,yBAAyB,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,QA6D7E;AAKD,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,iBAuBjD;AAED,wBAAsB,eAAe,kBASpC;AAGD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,iBAcrB;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAAG,YAAY,EAC9C,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,EACnD,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAiCD;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACrD,QAAQ,EAAE,GAAG,EACb,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,GACvD,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC;IAChD,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC,CAKD;AAED;;GAEG;AACH,wBAAgB,eAAe,6BAE9B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAEnD"}
@@ -0,0 +1,98 @@
1
+ import { Device } from 'react-native-ble-plx';
2
+ import type { SolanaIntent } from '../intent';
3
+ import type { OfflineTransaction } from '../types/nonceAccount';
4
+ /**
5
+ * BLE MTU Configuration for different device types
6
+ */
7
+ export interface BLEMTUConfig {
8
+ maxPayloadSize: number;
9
+ chunkSize: number;
10
+ maxRetries: number;
11
+ timeout: number;
12
+ }
13
+ /**
14
+ * Represents a fragmented message with header information
15
+ */
16
+ export interface BLEFragment {
17
+ messageId: string;
18
+ sequenceNumber: number;
19
+ totalFragments: number;
20
+ checksumValue: number;
21
+ payload: Uint8Array;
22
+ }
23
+ /**
24
+ * Represents a Noise-encrypted BLE message
25
+ */
26
+ export interface EncryptedBLEMessage {
27
+ version: number;
28
+ ciphertext: Uint8Array;
29
+ nonce: Uint8Array;
30
+ tag: Uint8Array;
31
+ }
32
+ /**
33
+ * BLETransactionHandler
34
+ * Manages secure, fragmented BLE transmission of offline transactions
35
+ * with Noise Protocol encryption
36
+ */
37
+ export declare class BLETransactionHandler {
38
+ private mtuConfig;
39
+ private fragmentCache;
40
+ private messageIdMap;
41
+ constructor(platform?: 'android' | 'ios');
42
+ /**
43
+ * Fragment a large transaction/intent into BLE-safe chunks
44
+ * Respects MTU limitations and adds framing information
45
+ */
46
+ fragmentTransaction(transaction: OfflineTransaction | SolanaIntent, isIntent?: boolean): BLEFragment[];
47
+ /**
48
+ * Prepare encrypted BLE message for transmission
49
+ * Uses Noise Protocol for end-to-end encryption
50
+ */
51
+ prepareEncryptedMessage(fragment: BLEFragment, noiseEncryptFn: (data: Uint8Array) => Promise<EncryptedBLEMessage>): Promise<EncryptedBLEMessage>;
52
+ /**
53
+ * Send fragmented transaction over BLE with encryption
54
+ * Handles retries and verification
55
+ */
56
+ sendFragmentedTransactionBLE(device: Device, transaction: OfflineTransaction | SolanaIntent, sendFn: (deviceId: string, characteristicUUID: string, data: Buffer) => Promise<void>, noiseEncryptFn?: (data: Uint8Array) => Promise<EncryptedBLEMessage>, isIntent?: boolean): Promise<{
57
+ success: boolean;
58
+ sentFragments: number;
59
+ failedFragments: number[];
60
+ messageId: string;
61
+ }>;
62
+ /**
63
+ * Receive and reassemble fragmented messages
64
+ */
65
+ receiveFragmentedMessage(fragment: BLEFragment, _noiseDecryptFn?: (encrypted: EncryptedBLEMessage) => Promise<Uint8Array>): Promise<{
66
+ complete: boolean;
67
+ transaction?: OfflineTransaction | SolanaIntent;
68
+ progress: {
69
+ received: number;
70
+ total: number;
71
+ };
72
+ }>;
73
+ /**
74
+ * Reassemble fragments into original message
75
+ */
76
+ private reassembleMessage;
77
+ /**
78
+ * Serialize BLE fragment for transmission
79
+ */
80
+ private serializeFragment;
81
+ /**
82
+ * Calculate CRC32 checksum for fragment verification
83
+ */
84
+ private calculateCRC32;
85
+ /**
86
+ * Delay utility for retries
87
+ */
88
+ private delay;
89
+ /**
90
+ * Get MTU configuration
91
+ */
92
+ getMTUConfig(): BLEMTUConfig;
93
+ /**
94
+ * Set custom MTU configuration
95
+ */
96
+ setMTUConfig(config: Partial<BLEMTUConfig>): void;
97
+ }
98
+ //# sourceMappingURL=BLETransactionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BLETransactionHandler.d.ts","sourceRoot":"","sources":["../../../../src/client/BLETransactionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,UAAU,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,YAAY,CACR;gBAEA,QAAQ,GAAE,SAAS,GAAG,KAAiB;IAKnD;;;OAGG;IACH,mBAAmB,CACjB,WAAW,EAAE,kBAAkB,GAAG,YAAY,EAC9C,QAAQ,GAAE,OAAe,GACxB,WAAW,EAAE;IAkChB;;;OAGG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,WAAW,EACrB,cAAc,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,mBAAmB,CAAC,GACjE,OAAO,CAAC,mBAAmB,CAAC;IAU/B;;;OAGG;IACG,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAAG,YAAY,EAC9C,MAAM,EAAE,CACN,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,mBAAmB,CAAC,EACnE,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA4DF;;OAEG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,WAAW,EACrB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,OAAO,CAAC,UAAU,CAAC,GACxE,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IAyDF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,YAAY,IAAI,YAAY;IAI5B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;CAMlD"}
@@ -0,0 +1,82 @@
1
+ import { PublicKey, Keypair, Connection, TransactionInstruction } from '@solana/web3.js';
2
+ import type { NonceAccountInfo, NonceAccountCacheEntry, CreateNonceAccountOptions, OfflineTransaction } from '../types/nonceAccount';
3
+ import type { TossUser } from '../types/tossUser';
4
+ /**
5
+ * NonceAccountManager
6
+ * Manages durable nonce accounts for secure offline transactions
7
+ * with biometric protection and encrypted storage
8
+ */
9
+ export declare class NonceAccountManager {
10
+ private cache;
11
+ private connection;
12
+ constructor(connection: Connection);
13
+ /**
14
+ * Create a new durable nonce account for a user
15
+ * Securely stores the nonce account with biometric protection
16
+ */
17
+ createNonceAccount(user: TossUser, nonceAuthorityKeypair: Keypair, owner: PublicKey, options?: CreateNonceAccountOptions): Promise<NonceAccountInfo>;
18
+ /**
19
+ * Store nonce account securely in device's secure enclave
20
+ * Encrypted and protected by biometric authentication
21
+ */
22
+ private storeNonceAccountSecurely;
23
+ /**
24
+ * Retrieve nonce account from secure storage
25
+ * Requires biometric verification
26
+ */
27
+ getNonceAccountSecure(userId: string, authenticator?: () => Promise<void>): Promise<NonceAccountInfo | null>;
28
+ /**
29
+ * Cache nonce account info for quick access
30
+ */
31
+ private cacheNonceAccount;
32
+ /**
33
+ * Get cached nonce account info
34
+ */
35
+ getCachedNonceAccount(userId: string): NonceAccountCacheEntry | null;
36
+ /**
37
+ * Prepare offline transaction using nonce account
38
+ * Creates a transaction that can be signed and executed offline
39
+ */
40
+ prepareOfflineTransaction(user: TossUser, _instructions: TransactionInstruction[], nonceAccountInfo: NonceAccountInfo): Promise<OfflineTransaction>;
41
+ /**
42
+ * Renew nonce account (refresh blockhash and nonce state)
43
+ */
44
+ renewNonceAccount(userId: string, _nonceAccountAddress: PublicKey): Promise<NonceAccountInfo | null>;
45
+ /**
46
+ * Revoke nonce account (mark as unusable)
47
+ */
48
+ revokeNonceAccount(userId: string, _nonceAccountAddress: PublicKey): Promise<void>;
49
+ /**
50
+ * Clean up expired nonce accounts from cache
51
+ */
52
+ cleanupExpiredCache(): void;
53
+ /**
54
+ * Validate nonce account status
55
+ */
56
+ isNonceAccountValid(nonceAccountInfo: NonceAccountInfo): boolean;
57
+ /**
58
+ * GAP #6 FIX: Initialize a durable nonce account onchain
59
+ * Per TOSS Paper Section 4.2: "Replay-protected" nonces
60
+ * This creates the actual SystemProgram nonce account on the blockchain
61
+ */
62
+ initializeDurableNonceAccountOnchain(authority: PublicKey, nonceAccountKeypair: Keypair, payer: PublicKey, minRentLamports: number): Promise<string>;
63
+ /**
64
+ * GAP #6 FIX: Consume (advance) a nonce account after successful transaction
65
+ * Per TOSS Paper Section 9: Nonce advancement for replay protection
66
+ */
67
+ consumeNonceAccount(nonceAccountAddress: PublicKey, nonceAuthority: PublicKey): Promise<TransactionInstruction>;
68
+ /**
69
+ * GAP #6 FIX: Validate nonce account state on chain
70
+ * Checks that nonce account exists and is properly configured
71
+ */
72
+ validateNonceAccountOnchain(nonceAccountAddress: PublicKey, _expectedAuthority?: PublicKey): Promise<{
73
+ valid: boolean;
74
+ error?: string;
75
+ }>;
76
+ /**
77
+ * GAP #6 FIX: Get current nonce value from blockchain
78
+ * Reads the actual nonce state from the nonce account
79
+ */
80
+ getCurrentNonceFromChain(nonceAccountAddress: PublicKey): Promise<number>;
81
+ }
82
+ //# sourceMappingURL=NonceAccountManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NonceAccountManager.d.ts","sourceRoot":"","sources":["../../../../src/client/NonceAccountManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,UAAU,EAIV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IAIlC;;;OAGG;IACG,kBAAkB,CACtB,IAAI,EAAE,QAAQ,EACd,qBAAqB,EAAE,OAAO,EAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,gBAAgB,CAAC;IAoD5B;;;OAGG;YACW,yBAAyB;IAqBvC;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAsBnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAWpE;;;OAGG;IACG,yBAAyB,CAC7B,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,sBAAsB,EAAE,EACvC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,kBAAkB,CAAC;IA4B9B;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,SAAS,GAC9B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA8CnC;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAS3B;;OAEG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO;IAahE;;;;OAIG;IACG,oCAAoC,CACxC,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,OAAO,EAC5B,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAwClB;;;OAGG;IACG,mBAAmB,CACvB,mBAAmB,EAAE,SAAS,EAC9B,cAAc,EAAE,SAAS,GACxB,OAAO,CAAC,sBAAsB,CAAC;IAQlC;;;OAGG;IACG,2BAA2B,CAC/B,mBAAmB,EAAE,SAAS,EAC9B,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC9C;;;OAGG;IACG,wBAAwB,CAC5B,mBAAmB,EAAE,SAAS,GAC7B,OAAO,CAAC,MAAM,CAAC;CAiBnB"}
@@ -20,7 +20,6 @@ export declare class TossClient {
20
20
  private config;
21
21
  private nonceAccount?;
22
22
  private nonceAuth?;
23
- private walletContext;
24
23
  static createClient(config: TossConfig): TossClient;
25
24
  private constructor();
26
25
  private getDefaultRpcUrl;
@@ -86,25 +85,24 @@ export declare class TossClient {
86
85
  /**
87
86
  * Create an intent from the current user's wallet
88
87
  */
89
- createUserIntent(recipient: PublicKey | string, amount: number, options?: {
88
+ /**
89
+ * Create an intent using an explicit Keypair for the sender.
90
+ * Use this method from non-React contexts. For React apps, use
91
+ * WalletProvider.createUserIntent helper wrappers that call
92
+ * TossClient.createIntent with the unlocked keypair.
93
+ */
94
+ createUserIntent(senderKeypair: Keypair, recipient: PublicKey | string, amount: number, options?: {
90
95
  memo?: string;
91
96
  useDurableNonce?: boolean;
92
97
  }): Promise<SolanaIntent>;
93
98
  /**
94
- * Get the current user's wallet address
99
+ * The following helper methods require a WalletProvider (React) context.
100
+ * TossClient is framework-agnostic; if you need these features from a
101
+ * React app, use the WalletProvider utilities instead.
95
102
  */
96
103
  getCurrentUserAddress(): string | null;
97
- /**
98
- * Check if the wallet is currently unlocked
99
- */
100
104
  isWalletUnlocked(): boolean;
101
- /**
102
- * Lock the wallet
103
- */
104
105
  lockWallet(): Promise<void>;
105
- /**
106
- * Sign out the current user
107
- */
108
106
  signOut(): Promise<void>;
109
107
  }
110
108
  //# sourceMappingURL=TossClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TossClient.d.ts","sourceRoot":"","sources":["../../../../src/client/TossClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAW5D,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAGxE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAOF,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAGZ;IACF,OAAO,CAAC,YAAY,CAAC,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,aAAa,CAA+B;IAEpD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAInD,OAAO;IAoBP,OAAO,CAAC,gBAAgB;YASV,SAAS;IAgCvB;;;;OAIG;IACG,sBAAsB,CAC1B,MAAM,SAAI,GACT,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBvD;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IASlC,YAAY,CAChB,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,EAC7B,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;KACV,GACL,OAAO,CAAC,YAAY,CAAC;IAmElB,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAWrC,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA6BzB,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA4BrC;;;;;;;;;OASG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAcrC;;;;;OAKG;IACG,eAAe;IAMrB;;;;;OAKG;IACG,qBAAqB;;;;IAM3B;;;;;OAKG;IACG,uBAAuB;IAM7B;;OAEG;IACG,gBAAgB,CACpB,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,OAAO,CAAC;KACtB,GACL,OAAO,CAAC,YAAY,CAAC;IAkCxB;;OAEG;IACH,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAItC;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"TossClient.d.ts","sourceRoot":"","sources":["../../../../src/client/TossClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAW5D,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAGxE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAOF,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAGZ;IACF,OAAO,CAAC,YAAY,CAAC,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAY;IAE9B,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAInD,OAAO;IAeP,OAAO,CAAC,gBAAgB;YASV,SAAS;IAgCvB;;;;OAIG;IACG,sBAAsB,CAC1B,MAAM,SAAI,GACT,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBvD;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IASlC,YAAY,CAChB,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,EAC7B,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;KACV,GACL,OAAO,CAAC,YAAY,CAAC;IA0ElB,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAWrC,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA6BzB,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA4BrC;;;;;;;;;OASG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAcrC;;;;;OAKG;IACG,eAAe;IAMrB;;;;;OAKG;IACG,qBAAqB;;;;IAM3B;;;;;OAKG;IACG,uBAAuB;IAM7B;;OAEG;IACH;;;;;OAKG;IACG,gBAAgB,CACpB,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,OAAO,CAAC;KACtB,GACL,OAAO,CAAC,YAAY,CAAC;IAgBxB;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAMtC,gBAAgB,IAAI,OAAO;IAMrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -84,6 +84,8 @@ export declare class DeviceDiscoveryService {
84
84
  export declare class IntentExchangeProtocol {
85
85
  private pendingRequests;
86
86
  private noiseSessions;
87
+ private requestTimeouts;
88
+ private sessionTimeouts;
87
89
  private deviceStaticKey;
88
90
  private readonly REQUEST_TIMEOUT;
89
91
  private readonly SESSION_TIMEOUT;
@@ -123,13 +125,17 @@ export declare class IntentExchangeProtocol {
123
125
  */
124
126
  getDeviceStaticKey(): Uint8Array;
125
127
  /**
126
- * Clear all pending requests
128
+ * Clear all pending requests and their timers
127
129
  */
128
130
  clearRequests(): void;
129
131
  /**
130
- * Clear all Noise sessions
132
+ * Clear all Noise sessions and their timers
131
133
  */
132
134
  clearSessions(): void;
135
+ /**
136
+ * Dispose of the protocol, clearing internal state and timers
137
+ */
138
+ dispose(): void;
133
139
  }
134
140
  /**
135
141
  * Device and intent routing service for multi-hop scenarios
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/discovery.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,17 @@
10
10
  */
11
11
  import { Connection, Keypair } from '@solana/web3.js';
12
12
  import { type SolanaIntent } from '../intent';
13
+ import type { TossUser } from '../types/tossUser';
13
14
  import { type PeerDevice } from '../discovery';
14
15
  /**
15
- * Example: Sender initiates offline payment
16
+ * Example: Sender initiates offline payment using TOSS users
17
+ *
18
+ * User-centric approach: sender and recipient are TossUser objects
19
+ * Intent creation validates user features and transaction limits
20
+ */
21
+ export declare function exampleInitiateUserPayment(senderUser: TossUser, senderKeypair: Keypair, recipientUser: TossUser, amountLamports: number, connection: Connection): Promise<SolanaIntent>;
22
+ /**
23
+ * Example: Sender initiates offline payment using addresses (legacy)
16
24
  *
17
25
  * This simulates a sender who wants to send lamports to a recipient
18
26
  * while offline. The intent is created, signed, and stored locally.
@@ -1 +1 @@
1
- {"version":3,"file":"offlinePaymentFlow.d.ts","sourceRoot":"","sources":["../../../../src/examples/offlinePaymentFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAa,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAgB,KAAK,YAAY,EAAgB,MAAM,WAAW,CAAC;AAK1E,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAItB;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA4Gf;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
1
+ {"version":3,"file":"offlinePaymentFlow.d.ts","sourceRoot":"","sources":["../../../../src/examples/offlinePaymentFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAa,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAItB;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,QAAQ,EACvB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA4Gf;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
@@ -0,0 +1,91 @@
1
+ import { Device } from 'react-native-ble-plx';
2
+ import { Connection } from '@solana/web3.js';
3
+ import type { SolanaIntent } from '../intent';
4
+ import type { OfflineTransaction } from '../types/nonceAccount';
5
+ import type { TossUser } from '../types/tossUser';
6
+ import { NonceAccountManager } from '../client/NonceAccountManager';
7
+ /**
8
+ * State for BLE transaction transmission
9
+ */
10
+ export interface BLETransmissionState {
11
+ isTransmitting: boolean;
12
+ progress: {
13
+ sentFragments: number;
14
+ totalFragments: number;
15
+ messageId?: string;
16
+ };
17
+ error?: string;
18
+ lastSent?: {
19
+ messageId: string;
20
+ timestamp: number;
21
+ };
22
+ }
23
+ /**
24
+ * State for offline transaction preparation
25
+ */
26
+ export interface OfflineTransactionState {
27
+ isPreparing: boolean;
28
+ transaction?: OfflineTransaction;
29
+ error?: string;
30
+ isReady: boolean;
31
+ }
32
+ /**
33
+ * useOfflineTransaction Hook
34
+ * Manages offline transaction creation with nonce accounts
35
+ * Handles biometric protection and secure storage
36
+ */
37
+ export declare function useOfflineTransaction(user: TossUser, connection: Connection): {
38
+ createOfflineTransaction: (instructions: any[], metadata?: {
39
+ description?: string;
40
+ tags?: string[];
41
+ }) => Promise<OfflineTransaction | null>;
42
+ clearTransaction: () => void;
43
+ nonceManager: NonceAccountManager | null;
44
+ isPreparing: boolean;
45
+ transaction?: OfflineTransaction;
46
+ error?: string;
47
+ isReady: boolean;
48
+ };
49
+ /**
50
+ * useBLETransactionTransmission Hook
51
+ * Handles secure BLE transmission of fragmented transactions
52
+ * with Noise Protocol encryption
53
+ */
54
+ export declare function useBLETransactionTransmission(platform?: 'android' | 'ios'): {
55
+ sendTransactionBLE: (device: Device, transaction: OfflineTransaction | SolanaIntent, sendFn: (deviceId: string, characteristicUUID: string, data: Buffer) => Promise<void>, noiseEncryptFn?: (data: Uint8Array) => Promise<any>, isIntent?: boolean) => Promise<boolean>;
56
+ receiveTransactionFragment: (fragment: any, noiseDecryptFn?: (encrypted: any) => Promise<Uint8Array>) => Promise<{
57
+ complete: boolean;
58
+ transaction?: OfflineTransaction | SolanaIntent;
59
+ progress: {
60
+ received: number;
61
+ total: number;
62
+ };
63
+ }>;
64
+ getMTUConfig: () => import("..").BLEMTUConfig;
65
+ setMTUConfig: (config: Partial<any>) => void;
66
+ isTransmitting: boolean;
67
+ progress: {
68
+ sentFragments: number;
69
+ totalFragments: number;
70
+ messageId?: string;
71
+ };
72
+ error?: string;
73
+ lastSent?: {
74
+ messageId: string;
75
+ timestamp: number;
76
+ };
77
+ };
78
+ /**
79
+ * useNonceAccountManagement Hook
80
+ * Manages nonce account lifecycle: creation, renewal, revocation
81
+ */
82
+ export declare function useNonceAccountManagement(user: TossUser, connection: Connection): {
83
+ isLoading: boolean;
84
+ error: string | undefined;
85
+ createNonceAccount: (userKeypair: any) => Promise<TossUser | null>;
86
+ renewNonceAccount: () => Promise<import("..").NonceAccountInfo | null>;
87
+ revokeNonceAccount: () => Promise<TossUser | null>;
88
+ isNonceAccountValid: () => boolean;
89
+ hasNonceAccount: boolean;
90
+ };
91
+ //# sourceMappingURL=useOfflineBLETransactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOfflineBLETransactions.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useOfflineBLETransactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;6CA4BxD,GAAG,EAAE,aACR;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KACnD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;;;iBAzC1B,OAAO;kBACN,kBAAkB;YACxB,MAAM;aACL,OAAO;EAyIjB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,SAAS,GAAG,KAAiB;iCAiB3B,MAAM,eACD,kBAAkB,GAAG,YAAY,UACtC,CACN,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,mBACD,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,aACzC,OAAO,KAChB,OAAO,CAAC,OAAO,CAAC;2CA2DP,GAAG,mBACI,CAAC,SAAS,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,KACvD,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC;QAChD,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;;2BAuCsC,OAAO,CAAC,GAAG,CAAC;oBAvStC,OAAO;cACb;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;YACO,MAAM;eACH;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;EAwSF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU;;;sCAUA,GAAG;;;;;EAgG1B"}
@@ -1,12 +1,19 @@
1
- export { createIntent, type SolanaIntent, type IntentStatus } from './intent';
1
+ export { createIntent, createUserIntent, createSignedIntent, createOfflineIntent, type SolanaIntent, type IntentStatus, } from './intent';
2
+ export { NonceAccountManager } from './client/NonceAccountManager';
3
+ export type { NonceAccountInfo, NonceAccountCacheEntry, CreateNonceAccountOptions, OfflineTransaction, } from './types/nonceAccount';
4
+ export { BLETransactionHandler } from './client/BLETransactionHandler';
5
+ export type { BLEFragment, EncryptedBLEMessage, BLEMTUConfig, } from './client/BLETransactionHandler';
6
+ export { useOfflineTransaction, useBLETransactionTransmission, useNonceAccountManagement, } from './hooks/useOfflineBLETransactions';
7
+ export type { BLETransmissionState, OfflineTransactionState, } from './hooks/useOfflineBLETransactions';
2
8
  export { verifyIntentSignature, isIntentExpired, updateIntentStatus, validateIntent, processIntentsForSync, filterExpiredIntents, } from './intentManager';
3
9
  export { storePendingIntent, getPendingIntents, clearPendingIntents, } from './storage';
4
- export { startTossScan, requestBLEPermissions } from './ble';
10
+ export { startTossScan, requestBLEPermissions, sendOfflineTransactionFragmented, receiveOfflineTransactionFragment, getBLEMTUConfig, setBLEMTUConfig, } from './ble';
5
11
  export { initNFC, readNFCUser, writeUserToNFC, writeIntentToNFC } from './nfc';
6
12
  export { QRScanner } from './qr';
7
13
  export { TossClient, type TossConfig } from './client/TossClient';
8
- import { TossClient } from './client/TossClient';
9
- export declare const createClient: typeof TossClient.createClient;
14
+ export type { TossUser } from './types/tossUser';
15
+ export { WalletProvider, useWallet } from './contexts/WalletContext';
16
+ export { AuthService } from './services/authService';
10
17
  export { syncToChain, checkSyncStatus, type SyncResult } from './sync';
11
18
  export { reconcilePendingIntents, settleIntent, validateIntentOnchain, buildTransactionFromIntent, submitTransactionToChain, detectConflicts, getReconciliationState, type SettlementResult, type ReconciliationState, } from './reconciliation';
12
19
  export { DeviceDiscoveryService, IntentExchangeProtocol, IntentRoutingService, MultiDeviceConflictResolver, deviceDiscovery, intentExchange, intentRouting, type PeerDevice, type IntentExchangeRequest, type IntentExchangeResponse, } from './discovery';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAG9E,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,eAAO,MAAM,YAAY,gCAA0B,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGvE,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,eAAe,EACf,cAAc,EACd,aAAa,EACb,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,iCAAiC,EACjC,eAAe,EACf,eAAe,GAChB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGvE,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,eAAe,EACf,cAAc,EACd,aAAa,EACb,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { PublicKey, Keypair, Connection } from '@solana/web3.js';
2
+ import type { TossUser, TossUserContext } from './types/tossUser';
3
+ import type { OfflineTransaction } from './types/nonceAccount';
2
4
  import { type ArciumEncryptedOutput } from './internal/arciumHelper';
3
5
  /**
4
6
  * Status of an intent in its lifecycle
@@ -6,11 +8,14 @@ import { type ArciumEncryptedOutput } from './internal/arciumHelper';
6
8
  export type IntentStatus = 'pending' | 'settled' | 'failed' | 'expired';
7
9
  /**
8
10
  * Core type for an offline intent following TOSS specification
11
+ * Enhanced with durable nonce account support
9
12
  */
10
13
  export interface SolanaIntent {
11
14
  id: string;
12
15
  from: string;
13
16
  to: string;
17
+ fromUser?: TossUserContext;
18
+ toUser?: TossUserContext;
14
19
  amount: number;
15
20
  nonce: number;
16
21
  expiry: number;
@@ -25,6 +30,10 @@ export interface SolanaIntent {
25
30
  serialized?: string;
26
31
  nonceAccount?: string;
27
32
  nonceAuth?: string;
33
+ nonceAccountAddress?: string;
34
+ nonceAccountAuth?: string;
35
+ offlineTransaction?: OfflineTransaction;
36
+ requiresBiometric?: boolean;
28
37
  encrypted?: ArciumEncryptedOutput;
29
38
  }
30
39
  /**
@@ -47,6 +56,9 @@ export interface CreateIntentOptions {
47
56
  nonceAuth?: PublicKey;
48
57
  /** Fee payer for the transaction (defaults to sender) */
49
58
  feePayer?: PublicKey | string;
59
+ /** Optional minimal user contexts for sender and recipient */
60
+ fromUser?: TossUserContext;
61
+ toUser?: TossUserContext;
50
62
  }
51
63
  /**
52
64
  * Manages nonce values for transaction replay protection
@@ -59,6 +71,13 @@ declare class NonceManager {
59
71
  private cleanupNonces;
60
72
  }
61
73
  export declare const nonceManager: NonceManager;
74
+ /**
75
+ * Creates a signed intent between two TOSS users (User-centric API)
76
+ * Recommended for application developers - validates user wallets
77
+ *
78
+ * GAP #8 FIX: Requires biometric authentication for sensitive transactions
79
+ */
80
+ export declare function createUserIntent(senderUser: TossUser, senderKeypair: Keypair, recipientUser: TossUser, amount: number, connection: Connection, options?: CreateIntentOptions): Promise<SolanaIntent>;
62
81
  /**
63
82
  * Creates a signed intent that can be verified offline
64
83
  */
@@ -80,5 +99,12 @@ export declare function isIntentExpired(intent: SolanaIntent): boolean;
80
99
  * Updates the status of an intent
81
100
  */
82
101
  export declare function updateIntentStatus(intent: SolanaIntent, status: IntentStatus, error?: string): SolanaIntent;
102
+ /**
103
+ * Creates an offline intent with durable nonce account support
104
+ * Enables replay-protected offline transactions using nonce accounts
105
+ * Requires biometric authentication for enhanced security
106
+ */
107
+ export declare function createOfflineIntent(senderUser: TossUser, senderKeypair: Keypair, recipientUser: TossUser, amount: number, nonceAccountInfo: any, // NonceAccountInfo from NonceAccountManager
108
+ connection: Connection, options?: CreateIntentOptions): Promise<SolanaIntent>;
83
109
  export {};
84
110
  //# sourceMappingURL=intent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/intent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/intent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,67 @@
1
+ /**
2
+ * Noise Protocol Implementation for TOSS
3
+ * Per Section 5: "Transport reliability is explicitly not trusted.
4
+ * All security guarantees enforced at the cryptographic layer."
5
+ *
6
+ * GAP #4 FIX: Full Noise Protocol session lifecycle
7
+ */
8
+ /**
9
+ * Noise session state
10
+ */
11
+ export interface NoiseSession {
12
+ peerId: string;
13
+ sessionKey: Uint8Array;
14
+ encryptionCipher: any;
15
+ decryptionCipher: any;
16
+ createdAt: number;
17
+ expiresAt: number;
18
+ initiator: boolean;
19
+ }
1
20
  /**
2
21
  * Initialize Noise secure session with a static key.
22
+ * @deprecated Use performNoiseHandshake instead
3
23
  */
4
24
  export declare function initNoiseSession(staticKey: Uint8Array): (components: import("@chainsafe/libp2p-noise").NoiseComponents) => import("@libp2p/interface").ConnectionEncrypter<import("@chainsafe/libp2p-noise").NoiseExtensions>;
25
+ /**
26
+ * GAP #4 FIX: Generate static keypair for long-term identity
27
+ */
28
+ export declare function generateNoiseStaticKey(): {
29
+ publicKey: Uint8Array;
30
+ secretKey: Uint8Array;
31
+ };
32
+ /**
33
+ * GAP #4 FIX: Perform Noise Protocol handshake
34
+ * Implements NN (no-pre-shared-knowledge) pattern for TOSS
35
+ */
36
+ /**
37
+ * Perform Noise Protocol handshake between two peers
38
+ * Establishes encrypted session for device-to-device communication
39
+ *
40
+ * Security: Uses X25519 ECDH for key agreement, ChaCha20-Poly1305 for AEAD
41
+ */
42
+ export declare function performNoiseHandshake(peerId: string, peerStaticKey: Uint8Array, _localStaticKey: Uint8Array, _localSecretKey: Uint8Array, initiator: boolean): Promise<NoiseSession>;
43
+ /**
44
+ * GAP #4 FIX: Encrypt message with Noise session
45
+ */
46
+ export declare function noiseEncrypt(session: NoiseSession, plaintext: Uint8Array): Promise<Uint8Array>;
47
+ /**
48
+ * GAP #4 FIX: Decrypt message with Noise session
49
+ */
50
+ export declare function noiseDecrypt(session: NoiseSession, ciphertext: Uint8Array): Promise<Uint8Array>;
51
+ /**
52
+ * GAP #4 FIX: Get active session or return null
53
+ */
54
+ export declare function getNoiseSession(peerId: string): NoiseSession | null;
55
+ /**
56
+ * GAP #4 FIX: Rotate session key for forward secrecy
57
+ */
58
+ export declare function rotateNoiseSessionKey(session: NoiseSession): Promise<void>;
59
+ /**
60
+ * GAP #4 FIX: Cleanup expired sessions
61
+ */
62
+ export declare function cleanupExpiredNoiseSessions(): number;
63
+ /**
64
+ * GAP #4 FIX: Get all active sessions
65
+ */
66
+ export declare function getActiveNoiseSessions(): NoiseSession[];
5
67
  //# sourceMappingURL=noise.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../../src/noise.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,UAAU,yKAGrD"}
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../../src/noise.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,UAAU,yKAGrD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB,CAMA;AAED;;;GAGG;AACH;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,UAAU,EACzB,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAUnE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAYpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,EAAE,CAIvD"}
@@ -43,6 +43,12 @@ export declare function buildTransactionFromIntent(intent: SolanaIntent, connect
43
43
  * Submits a transaction to the network with confirmation
44
44
  */
45
45
  export declare function submitTransactionToChain(transaction: Transaction, connection: Connection, maxRetries?: number): Promise<string>;
46
+ /**
47
+ * GAP #7 FIX: Submit transaction to Arcium MXE program for confidential execution
48
+ * Per TOSS Paper Section 7: "Arcium operates strictly before onchain execution"
49
+ */
50
+ export declare function submitTransactionToArciumMXE(intent: SolanaIntent, connection: Connection, mxeProgramId: PublicKey, provider: any, // AnchorProvider
51
+ maxRetries?: number): Promise<string>;
46
52
  /**
47
53
  * Attempts to settle a single intent and returns the result
48
54
  */