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.
- package/README.md +490 -81
- package/lib/module/ble.js +59 -4
- package/lib/module/ble.js.map +1 -1
- package/lib/module/client/BLETransactionHandler.js +277 -0
- package/lib/module/client/BLETransactionHandler.js.map +1 -0
- package/lib/module/client/NonceAccountManager.js +364 -0
- package/lib/module/client/NonceAccountManager.js.map +1 -0
- package/lib/module/client/TossClient.js +27 -44
- package/lib/module/client/TossClient.js.map +1 -1
- package/lib/module/contexts/WalletContext.js +4 -4
- package/lib/module/contexts/WalletContext.js.map +1 -1
- package/lib/module/discovery.js +35 -8
- package/lib/module/discovery.js.map +1 -1
- package/lib/module/examples/offlinePaymentFlow.js +27 -2
- package/lib/module/examples/offlinePaymentFlow.js.map +1 -1
- package/lib/module/hooks/useOfflineBLETransactions.js +314 -0
- package/lib/module/hooks/useOfflineBLETransactions.js.map +1 -0
- package/lib/module/index.js +13 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/intent.js +198 -0
- package/lib/module/intent.js.map +1 -1
- package/lib/module/nfc.js +1 -1
- package/lib/module/noise.js +176 -1
- package/lib/module/noise.js.map +1 -1
- package/lib/module/reconciliation.js +155 -0
- package/lib/module/reconciliation.js.map +1 -1
- package/lib/module/services/authService.js +164 -1
- package/lib/module/services/authService.js.map +1 -1
- package/lib/module/storage/secureStorage.js +102 -0
- package/lib/module/storage/secureStorage.js.map +1 -1
- package/lib/module/storage.js +4 -4
- package/lib/module/sync.js +25 -1
- package/lib/module/sync.js.map +1 -1
- package/lib/module/types/nonceAccount.js +2 -0
- package/lib/module/types/nonceAccount.js.map +1 -0
- package/lib/module/types/tossUser.js +16 -1
- package/lib/module/types/tossUser.js.map +1 -1
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts +8 -0
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts.map +1 -0
- package/lib/typescript/src/ble.d.ts +31 -2
- package/lib/typescript/src/ble.d.ts.map +1 -1
- package/lib/typescript/src/client/BLETransactionHandler.d.ts +98 -0
- package/lib/typescript/src/client/BLETransactionHandler.d.ts.map +1 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts +82 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts.map +1 -0
- package/lib/typescript/src/client/TossClient.d.ts +10 -12
- package/lib/typescript/src/client/TossClient.d.ts.map +1 -1
- package/lib/typescript/src/discovery.d.ts +8 -2
- package/lib/typescript/src/discovery.d.ts.map +1 -1
- package/lib/typescript/src/examples/offlinePaymentFlow.d.ts +9 -1
- package/lib/typescript/src/examples/offlinePaymentFlow.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts +91 -0
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/intent.d.ts +26 -0
- package/lib/typescript/src/intent.d.ts.map +1 -1
- package/lib/typescript/src/noise.d.ts +62 -0
- package/lib/typescript/src/noise.d.ts.map +1 -1
- package/lib/typescript/src/reconciliation.d.ts +6 -0
- package/lib/typescript/src/reconciliation.d.ts.map +1 -1
- package/lib/typescript/src/services/authService.d.ts +26 -1
- package/lib/typescript/src/services/authService.d.ts.map +1 -1
- package/lib/typescript/src/storage/secureStorage.d.ts +16 -0
- package/lib/typescript/src/storage/secureStorage.d.ts.map +1 -1
- package/lib/typescript/src/sync.d.ts +6 -1
- package/lib/typescript/src/sync.d.ts.map +1 -1
- package/lib/typescript/src/types/nonceAccount.d.ts +59 -0
- package/lib/typescript/src/types/nonceAccount.d.ts.map +1 -0
- package/lib/typescript/src/types/tossUser.d.ts +16 -0
- package/lib/typescript/src/types/tossUser.d.ts.map +1 -1
- package/package.json +12 -1
- package/src/__tests__/reconciliation.test.tsx +7 -1
- package/src/__tests__/solana-program-simple.test.ts +256 -0
- package/src/ble.ts +105 -4
- package/src/client/BLETransactionHandler.ts +364 -0
- package/src/client/NonceAccountManager.ts +444 -0
- package/src/client/TossClient.ts +36 -49
- package/src/contexts/WalletContext.tsx +4 -4
- package/src/discovery.ts +46 -8
- package/src/examples/offlinePaymentFlow.ts +48 -2
- package/src/hooks/useOfflineBLETransactions.ts +438 -0
- package/src/index.tsx +49 -7
- package/src/intent.ts +254 -0
- package/src/nfc.ts +4 -4
- package/src/noise.ts +239 -1
- package/src/reconciliation.ts +184 -0
- package/src/services/authService.ts +188 -1
- package/src/storage/secureStorage.ts +142 -4
- package/src/storage.ts +4 -4
- package/src/sync.ts +40 -0
- package/src/types/nonceAccount.ts +75 -0
- 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;
|
|
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
|
-
|
|
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
|
-
*
|
|
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;
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,GAAG,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAEhC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAiBpC;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAe9B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAW/C;;OAEG;IACH,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAY,GACrB,IAAI;IAYP;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,aAAa,CAAwC;
|
|
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,
|
|
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
|
-
|
|
9
|
-
export
|
|
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,
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMjE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAGjC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE
|
|
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":"
|
|
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
|
*/
|