@n1xyz/wallet-widget 0.0.35-alpha.41 → 0.0.35-alpha.43

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 (26) hide show
  1. package/dist/features/onboarding-flow/bridge-assist/client.d.ts +3 -0
  2. package/dist/features/onboarding-flow/bridge-assist/client.js +26 -0
  3. package/dist/features/onboarding-flow/bridge-assist/client.js.map +1 -1
  4. package/dist/features/onboarding-flow/cctp/solanaClaim.d.ts +1 -6
  5. package/dist/features/onboarding-flow/cctp/solanaClaim.js +1 -10
  6. package/dist/features/onboarding-flow/cctp/solanaClaim.js.map +1 -1
  7. package/dist/features/onboarding-flow/hooks/usePendingDepositState.js +5 -3
  8. package/dist/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -1
  9. package/dist/features/onboarding-flow/hooks/useSolanaDeposit.js +20 -20
  10. package/dist/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -1
  11. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +53 -28
  12. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -1
  13. package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js +5 -1
  14. package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -1
  15. package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js +2 -1
  16. package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -1
  17. package/dist/features/onboarding-flow/utils/deposit/claimSubmission.js +59 -27
  18. package/dist/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -1
  19. package/dist/features/onboarding-flow/utils/withdrawal/bridgeFlowPhases.js +13 -5
  20. package/dist/features/onboarding-flow/utils/withdrawal/bridgeFlowPhases.js.map +1 -1
  21. package/dist/features/onboarding-flow/utils/withdrawal/solanaBurnUtils.js +50 -24
  22. package/dist/features/onboarding-flow/utils/withdrawal/solanaBurnUtils.js.map +1 -1
  23. package/dist/utils/nordApi.d.ts +6 -3
  24. package/dist/utils/nordApi.js +41 -12
  25. package/dist/utils/nordApi.js.map +1 -1
  26. package/package.json +1 -1
@@ -46,6 +46,7 @@ export declare const prepareBurnTx: (withdrawalId: string, params: {
46
46
  destinationAddress: string;
47
47
  }) => Promise<{
48
48
  tx: string;
49
+ canonicalParams?: any;
49
50
  blockhash: string;
50
51
  lastValidBlockHeight: number;
51
52
  }>;
@@ -64,6 +65,7 @@ export declare const prepareClaimTx: (depositId: string, params: {
64
65
  lookupTableAddress?: string;
65
66
  }) => Promise<{
66
67
  tx: string;
68
+ canonicalParams?: any;
67
69
  blockhash: string;
68
70
  lastValidBlockHeight: number;
69
71
  }>;
@@ -74,4 +76,5 @@ export declare const submitClaimTx: (depositId: string, params: {
74
76
  tx: string;
75
77
  stage?: string;
76
78
  }>;
79
+ export declare const reattestDeposit: (depositId: string) => Promise<boolean>;
77
80
  export declare const fetchServerFeePayer: () => Promise<string | null>;
@@ -360,6 +360,32 @@ export var submitClaimTx = function (depositId, params) { return __awaiter(void
360
360
  }
361
361
  });
362
362
  }); };
363
+ export var reattestDeposit = function (depositId) { return __awaiter(void 0, void 0, void 0, function () {
364
+ var config, response, _a;
365
+ return __generator(this, function (_b) {
366
+ switch (_b.label) {
367
+ case 0:
368
+ config = getBridgeAssistConfig();
369
+ if (!config)
370
+ return [2 /*return*/, false];
371
+ _b.label = 1;
372
+ case 1:
373
+ _b.trys.push([1, 3, , 4]);
374
+ return [4 /*yield*/, fetch("".concat(config.baseUrl, "/deposits/").concat(depositId, "/reattest"), {
375
+ method: 'POST',
376
+ headers: { 'Content-Type': 'application/json' },
377
+ body: JSON.stringify({ depositId: depositId }),
378
+ })];
379
+ case 2:
380
+ response = _b.sent();
381
+ return [2 /*return*/, response.ok];
382
+ case 3:
383
+ _a = _b.sent();
384
+ return [2 /*return*/, false];
385
+ case 4: return [2 /*return*/];
386
+ }
387
+ });
388
+ }); };
363
389
  export var fetchServerFeePayer = function () { return __awaiter(void 0, void 0, void 0, function () {
364
390
  var config, response, data, error_8;
365
391
  return __generator(this, function (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { BridgeAssistError } from './types';\nimport { getBridgeAssistConfig } from './config';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport type { PendingDepositStage } from '../utils/deposit/storage';\n\nexport interface BridgeAssistStatus {\n stage: PendingDepositStage;\n tx?: string | null;\n reason?: string | null;\n bridgeTx?: string | null;\n solanaTx?: string | null;\n mintTx?: string | null;\n attestationId?: string | null;\n depositId?: string | null;\n}\n\nconst mapStage = (stage: string | null | undefined): PendingDepositStage => {\n const s = (stage ?? '').toLowerCase();\n if (s === 'failed' || s === 'error') return 'failed';\n if (s === 'confirmed' || s === 'complete' || s === 'completed') return 'solana_confirmed';\n if (s === 'submitted' || s === 'processing' || s === 'pending') return 'solana_submitted';\n // Fallback to initiated if unknown\n return 'initiated';\n};\n\nconst handleResponse = async (response: Response): Promise<any> => {\n if (!response.ok) {\n let errorMessage = response.statusText;\n let retryAfter: number | undefined;\n\n const retryHeader = response.headers.get('Retry-After');\n if (retryHeader) {\n retryAfter = parseInt(retryHeader, 10);\n }\n\n try {\n const errorBody = await response.json();\n if (errorBody.message) {\n errorMessage = errorBody.message;\n } else if (errorBody.error) {\n errorMessage = errorBody.error;\n } else if (Array.isArray(errorBody.errors) && errorBody.errors.length) {\n errorMessage = errorBody.errors.join(', ');\n }\n } catch {\n // ignore json parse error\n }\n throw new BridgeAssistError(errorMessage, response.status, retryAfter);\n }\n return response.json();\n};\n\nexport const createBridgeDeposit = async (\n params: {\n wallet: string;\n chain: string;\n solanaAddress: string;\n amount: string;\n bridgeTx: string;\n depositId?: string;\n attestationId?: string | null;\n }\n): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params)\n });\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.tx ?? body?.solanaTx ?? null,\n bridgeTx: body?.bridgeTx ?? params.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? body?.tx ?? null,\n attestationId: body?.attestationId ?? params.attestationId ?? null,\n depositId: body?.depositId ?? params.depositId ?? null,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to create bridge deposit', {\n cause: error instanceof Error ? error : undefined,\n }));\n throw error;\n }\n}\n\nexport const fetchBridgeStatus = async (depositId: string): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n if (!depositId) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}`, {\n method: 'GET',\n });\n if (response.status === 404) {\n return null;\n }\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.solanaTx ?? body?.tx ?? null,\n bridgeTx: body?.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? null,\n mintTx: body?.mintTx ?? null,\n attestationId: body?.attestationId ?? null,\n depositId: body?.depositId ?? depositId,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch bridge status', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const submitBridgeClaim = async (\n depositId: string,\n params: {\n solanaTx?: string;\n message?: string;\n attestation?: string;\n sourceChain?: string;\n destinationAddress?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n userSignature?: string;\n txHash?: string;\n }\n): Promise<{\n tx?: string;\n requiresUserSignature?: boolean;\n stage?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n signedTx?: string;\n} | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n\n if (!depositId) throw new Error('Missing depositId for submitBridgeClaim');\n if (!params.message) throw new Error('Missing message for submitBridgeClaim');\n if (!params.attestation) throw new Error('Missing attestation for submitBridgeClaim');\n if (!params.sourceChain) throw new Error('Missing sourceChain for submitBridgeClaim');\n if (!params.destinationAddress) throw new Error('Missing destinationAddress for submitBridgeClaim');\n if (!params.userSignature) throw new Error('Missing userSignature for submitBridgeClaim');\n if (!params.txHash) throw new Error('Missing txHash (hash of signed tx) for submitBridgeClaim');\n\n try {\n // Single-request flow: always send full payload\n const payload = params;\n const url = `${config.baseUrl}/deposits/${depositId}/claim`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload)\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to submit bridge claim', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n}\n\nexport const prepareBurnTx = async (\n withdrawalId: string,\n params: {\n userAddress: string;\n amount: string;\n destinationChain: string;\n destinationAddress: string;\n }\n): Promise<{ tx: string; blockhash: string; lastValidBlockHeight: number }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!withdrawalId) throw new Error('Missing withdrawalId for prepareBurnTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/withdrawals/${withdrawalId}/prepare-burn`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to prepare burn transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { withdrawalId },\n }));\n throw error;\n }\n};\n\nexport const submitBurnTx = async (\n withdrawalId: string,\n params: {\n userSignature: string; // base64\n txHash: string; // hex\n }\n): Promise<{ burnTx: string; explorerUrl?: string }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!withdrawalId) throw new Error('Missing withdrawalId for submitBurnTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/withdrawals/${withdrawalId}/submit-burn`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to submit burn transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { withdrawalId },\n }));\n throw error;\n }\n};\n\nexport const prepareClaimTx = async (\n depositId: string,\n params: {\n message: string;\n attestation: string;\n sourceChain: string;\n destinationAddress: string;\n lookupTableAddress?: string;\n }\n): Promise<{ tx: string; blockhash: string; lastValidBlockHeight: number }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!depositId) throw new Error('Missing depositId for prepareClaimTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}/prepare-claim`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to prepare claim transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const submitClaimTx = async (\n depositId: string,\n params: {\n userSignature: string;\n txHash: string;\n }\n): Promise<{ tx: string; stage?: string }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!depositId) throw new Error('Missing depositId for submitClaimTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}/submit-claim`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to submit claim transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const fetchServerFeePayer = async (): Promise<string | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/health`, {\n method: 'GET',\n });\n const data = await handleResponse(response);\n return data.feePayer || null;\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch server fee payer', {\n cause: error instanceof Error ? error : undefined,\n }));\n // Surface a clear, typed error for callers so UI can show \"server not available\" and retry.\n // Network/CORS failures typically land here with no HTTP status.\n throw new BridgeAssistError('Bridge Assist server is not available', undefined);\n }\n}\n\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { BridgeAssistError } from './types';\nimport { getBridgeAssistConfig } from './config';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport type { PendingDepositStage } from '../utils/deposit/storage';\n\nexport interface BridgeAssistStatus {\n stage: PendingDepositStage;\n tx?: string | null;\n reason?: string | null;\n bridgeTx?: string | null;\n solanaTx?: string | null;\n mintTx?: string | null;\n attestationId?: string | null;\n depositId?: string | null;\n}\n\nconst mapStage = (stage: string | null | undefined): PendingDepositStage => {\n const s = (stage ?? '').toLowerCase();\n if (s === 'failed' || s === 'error') return 'failed';\n if (s === 'confirmed' || s === 'complete' || s === 'completed') return 'solana_confirmed';\n if (s === 'submitted' || s === 'processing' || s === 'pending') return 'solana_submitted';\n // Fallback to initiated if unknown\n return 'initiated';\n};\n\nconst handleResponse = async (response: Response): Promise<any> => {\n if (!response.ok) {\n let errorMessage = response.statusText;\n let retryAfter: number | undefined;\n\n const retryHeader = response.headers.get('Retry-After');\n if (retryHeader) {\n retryAfter = parseInt(retryHeader, 10);\n }\n\n try {\n const errorBody = await response.json();\n if (errorBody.message) {\n errorMessage = errorBody.message;\n } else if (errorBody.error) {\n errorMessage = errorBody.error;\n } else if (Array.isArray(errorBody.errors) && errorBody.errors.length) {\n errorMessage = errorBody.errors.join(', ');\n }\n } catch {\n // ignore json parse error\n }\n throw new BridgeAssistError(errorMessage, response.status, retryAfter);\n }\n return response.json();\n};\n\nexport const createBridgeDeposit = async (\n params: {\n wallet: string;\n chain: string;\n solanaAddress: string;\n amount: string;\n bridgeTx: string;\n depositId?: string;\n attestationId?: string | null;\n }\n): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params)\n });\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.tx ?? body?.solanaTx ?? null,\n bridgeTx: body?.bridgeTx ?? params.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? body?.tx ?? null,\n attestationId: body?.attestationId ?? params.attestationId ?? null,\n depositId: body?.depositId ?? params.depositId ?? null,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to create bridge deposit', {\n cause: error instanceof Error ? error : undefined,\n }));\n throw error;\n }\n}\n\nexport const fetchBridgeStatus = async (depositId: string): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n if (!depositId) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}`, {\n method: 'GET',\n });\n if (response.status === 404) {\n return null;\n }\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.solanaTx ?? body?.tx ?? null,\n bridgeTx: body?.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? null,\n mintTx: body?.mintTx ?? null,\n attestationId: body?.attestationId ?? null,\n depositId: body?.depositId ?? depositId,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch bridge status', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const submitBridgeClaim = async (\n depositId: string,\n params: {\n solanaTx?: string;\n message?: string;\n attestation?: string;\n sourceChain?: string;\n destinationAddress?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n userSignature?: string;\n txHash?: string;\n }\n): Promise<{\n tx?: string;\n requiresUserSignature?: boolean;\n stage?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n signedTx?: string;\n} | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n\n if (!depositId) throw new Error('Missing depositId for submitBridgeClaim');\n if (!params.message) throw new Error('Missing message for submitBridgeClaim');\n if (!params.attestation) throw new Error('Missing attestation for submitBridgeClaim');\n if (!params.sourceChain) throw new Error('Missing sourceChain for submitBridgeClaim');\n if (!params.destinationAddress) throw new Error('Missing destinationAddress for submitBridgeClaim');\n if (!params.userSignature) throw new Error('Missing userSignature for submitBridgeClaim');\n if (!params.txHash) throw new Error('Missing txHash (hash of signed tx) for submitBridgeClaim');\n\n try {\n // Single-request flow: always send full payload\n const payload = params;\n const url = `${config.baseUrl}/deposits/${depositId}/claim`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload)\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to submit bridge claim', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n}\n\nexport const prepareBurnTx = async (\n withdrawalId: string,\n params: {\n userAddress: string;\n amount: string;\n destinationChain: string;\n destinationAddress: string;\n }\n): Promise<{ tx: string; canonicalParams?: any; blockhash: string; lastValidBlockHeight: number }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!withdrawalId) throw new Error('Missing withdrawalId for prepareBurnTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/withdrawals/${withdrawalId}/prepare-burn`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to prepare burn transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { withdrawalId },\n }));\n throw error;\n }\n};\n\nexport const submitBurnTx = async (\n withdrawalId: string,\n params: {\n userSignature: string; // base64\n txHash: string; // hex\n }\n): Promise<{ burnTx: string; explorerUrl?: string }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!withdrawalId) throw new Error('Missing withdrawalId for submitBurnTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/withdrawals/${withdrawalId}/submit-burn`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to submit burn transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { withdrawalId },\n }));\n throw error;\n }\n};\n\nexport const prepareClaimTx = async (\n depositId: string,\n params: {\n message: string;\n attestation: string;\n sourceChain: string;\n destinationAddress: string;\n lookupTableAddress?: string;\n }\n): Promise<{ tx: string; canonicalParams?: any; blockhash: string; lastValidBlockHeight: number }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!depositId) throw new Error('Missing depositId for prepareClaimTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}/prepare-claim`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to prepare claim transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const submitClaimTx = async (\n depositId: string,\n params: {\n userSignature: string;\n txHash: string;\n }\n): Promise<{ tx: string; stage?: string }> => {\n const config = getBridgeAssistConfig();\n if (!config) throw new BridgeAssistError('Bridge Assist not configured');\n if (!depositId) throw new Error('Missing depositId for submitClaimTx');\n\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}/submit-claim`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(params),\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to submit claim transaction', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const reattestDeposit = async (depositId: string): Promise<boolean> => {\n const config = getBridgeAssistConfig();\n if (!config) return false;\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}/reattest`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ depositId }),\n });\n return response.ok;\n } catch {\n return false;\n }\n};\n\nexport const fetchServerFeePayer = async (): Promise<string | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/health`, {\n method: 'GET',\n });\n const data = await handleResponse(response);\n return data.feePayer || null;\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch server fee payer', {\n cause: error instanceof Error ? error : undefined,\n }));\n // Surface a clear, typed error for callers so UI can show \"server not available\" and retry.\n // Network/CORS failures typically land here with no HTTP status.\n throw new BridgeAssistError('Bridge Assist server is not available', undefined);\n }\n}\n\n"]}
@@ -1,6 +1 @@
1
- import type { VersionedTransaction } from '@solana/web3.js';
2
- /**
3
- * Hashes a VersionedTransaction for signature verification.
4
- * Local copy to avoid cross-package import that breaks tsc rootDir.
5
- */
6
- export declare const hashVersionedTransaction: (tx: VersionedTransaction) => string;
1
+ export { hashVersionedTransaction } from '@n1xyz/cctp-tx-builder';
@@ -1,11 +1,2 @@
1
- import { sha256 } from '@noble/hashes/sha2';
2
- import { bytesToHex } from '@noble/hashes/utils';
3
- /**
4
- * Hashes a VersionedTransaction for signature verification.
5
- * Local copy to avoid cross-package import that breaks tsc rootDir.
6
- */
7
- export var hashVersionedTransaction = function (tx) {
8
- var serialized = tx.serialize();
9
- return bytesToHex(sha256(serialized));
10
- };
1
+ export { hashVersionedTransaction } from '@n1xyz/cctp-tx-builder';
11
2
  //# sourceMappingURL=solanaClaim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solanaClaim.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/solanaClaim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,EAAwB;IAC/D,IAAM,UAAU,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;IAClC,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC","sourcesContent":["import type { VersionedTransaction } from '@solana/web3.js';\nimport { sha256 } from '@noble/hashes/sha2';\nimport { bytesToHex } from '@noble/hashes/utils';\n\n/**\n * Hashes a VersionedTransaction for signature verification.\n * Local copy to avoid cross-package import that breaks tsc rootDir.\n */\nexport const hashVersionedTransaction = (tx: VersionedTransaction): string => {\n const serialized = tx.serialize();\n return bytesToHex(sha256(serialized));\n};\n"]}
1
+ {"version":3,"file":"solanaClaim.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/solanaClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["export { hashVersionedTransaction } from '@n1xyz/cctp-tx-builder';\n"]}
@@ -21,8 +21,10 @@ export var usePendingDepositState = function () {
21
21
  var _b = useState(null), pendingDepositId = _b[0], setPendingDepositId = _b[1];
22
22
  var ensurePendingDraft = useCallback(function (draftAmount) {
23
23
  var _a, _b;
24
- // Use isEvmMode flag instead of checking context.entryNetwork
25
- var walletForDraft = isEvmMode
24
+ // Use entryNetwork (user's explicit selection) when available; fall back to isEvmMode.
25
+ // entryNetwork doesn't flip when Turnkey creates a Solana wallet, unlike isEvmMode.
26
+ var isEvmFlow = context.entryNetwork === 'evm' || (context.entryNetwork == null && isEvmMode);
27
+ var walletForDraft = isEvmFlow
26
28
  ? evmAddress || solanaAddress
27
29
  : solanaAddress;
28
30
  var chainForDraft = (_a = context.selectedChainId) !== null && _a !== void 0 ? _a : ((_b = context.selectedChain) !== null && _b !== void 0 ? _b : 'solana');
@@ -60,7 +62,7 @@ export var usePendingDepositState = function () {
60
62
  return updatedState;
61
63
  }
62
64
  return pendingState;
63
- }, [solanaAddress, context.selectedChainId, context.selectedChain, evmAddress, isEvmMode, pendingDepositId]);
65
+ }, [solanaAddress, context.selectedChainId, context.selectedChain, context.entryNetwork, evmAddress, isEvmMode, pendingDepositId]);
64
66
  return {
65
67
  pendingDepositId: pendingDepositId,
66
68
  setPendingDepositId: setPendingDepositId,
@@ -1 +1 @@
1
- {"version":3,"file":"usePendingDepositState.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/usePendingDepositState.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,IAAM,sBAAsB,GAAG;IAElC,IAAA,OAAO,GACL,kBAAkB,EAAE,QADf,CACgB;IAEzB,wDAAwD;IAClD,IAAA,KAA2C,UAAU,EAAE,EAArD,aAAa,mBAAA,EAAE,UAAU,gBAAA,EAAE,SAAS,eAAiB,CAAC;IAExD,IAAA,KAA0C,QAAQ,CAAgB,IAAI,CAAC,EAAtE,gBAAgB,QAAA,EAAE,mBAAmB,QAAiC,CAAC;IAE9E,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,WAAmB;;QAClB,8DAA8D;QAC9D,IAAM,cAAc,GAAG,SAAS;YAC9B,CAAC,CAAC,UAAU,IAAI,aAAa;YAC7B,CAAC,CAAC,aAAa,CAAC;QAClB,IAAM,aAAa,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,CAAC,MAAA,OAAO,CAAC,aAAa,mCAAI,QAAQ,CAAC,CAAC;QACrF,IAAI,YAAY,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,MAAK,QAAQ,EAAE,CAAC;YACrC,mBAAmB,EAAE,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,YAAY,IAAI,gBAAgB,IAAI,YAAY,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACpF,mBAAmB,EAAE,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAM,KAAK,GAAG,yBAAyB,CAAC;gBACtC,SAAS,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,cAAO,IAAI,CAAC,GAAG,EAAE,CAAE;gBAClD,MAAM,EAAE,cAAc,IAAI,EAAE;gBAC5B,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,mEAAmE;QACnE,+DAA+D;QAC/D,gFAAgF;QAChF,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,KAAK,WAAW,CAAC;QAC3D,IAAI,eAAe,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gBAClE,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B,CAAC,CAAC;YACH,IAAM,YAAY,GAAG,mBAAmB,uBACnC,YAAY,KACf,MAAM,EAAE,WAAW,IACnB,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CACzG,CAAC;IAEF,OAAO;QACL,gBAAgB,kBAAA;QAChB,mBAAmB,qBAAA;QACnB,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback, useState } from 'react';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\nimport {\n clearPendingDeposit,\n createPendingDepositDraft,\n readPendingDeposit,\n writePendingDeposit,\n} from '../utils/deposit/storage';\nimport { logger } from '../../../utils/logger';\n\nexport const usePendingDepositState = () => {\n const {\n context,\n } = useOnboardingState();\n\n // Use NetworkProvider instead of legacy N1WalletContext\n const { solanaAddress, evmAddress, isEvmMode } = useNetwork();\n\n const [pendingDepositId, setPendingDepositId] = useState<string | null>(null);\n\n const ensurePendingDraft = useCallback(\n (draftAmount: string): ReturnType<typeof createPendingDepositDraft> => {\n // Use isEvmMode flag instead of checking context.entryNetwork\n const walletForDraft = isEvmMode\n ? evmAddress || solanaAddress\n : solanaAddress;\n const chainForDraft = context.selectedChainId ?? (context.selectedChain ?? 'solana');\n let pendingState = readPendingDeposit();\n if (pendingState?.stage === 'failed') {\n clearPendingDeposit();\n pendingState = null;\n }\n if (pendingState && pendingDepositId && pendingState.depositId !== pendingDepositId) {\n clearPendingDeposit();\n pendingState = null;\n }\n if (!pendingState) {\n const draft = createPendingDepositDraft({\n depositId: pendingDepositId ?? `dep-${Date.now()}`,\n wallet: walletForDraft || '',\n chain: chainForDraft,\n amount: draftAmount,\n });\n setPendingDepositId(draft.depositId);\n return draft;\n }\n\n // If pending state exists but amount differs, update it.\n // This ensures the localStorage has the current user input amount,\n // preventing stale amounts from being used in success records.\n // Only update if we're still in early stages (before bridge/solana submission).\n const canUpdateAmount = pendingState.stage === 'initiated';\n if (canUpdateAmount && pendingState.amount !== draftAmount) {\n logger.debug('[PendingDepositState] Updating pending draft amount', {\n oldAmount: pendingState.amount,\n newAmount: draftAmount,\n stage: pendingState.stage,\n });\n const updatedState = writePendingDeposit({\n ...pendingState,\n amount: draftAmount,\n });\n return updatedState;\n }\n\n return pendingState;\n },\n [solanaAddress, context.selectedChainId, context.selectedChain, evmAddress, isEvmMode, pendingDepositId]\n );\n\n return {\n pendingDepositId,\n setPendingDepositId,\n ensurePendingDraft,\n };\n};\n\n"]}
1
+ {"version":3,"file":"usePendingDepositState.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/usePendingDepositState.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useState } from 'react';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\nimport {\n clearPendingDeposit,\n createPendingDepositDraft,\n readPendingDeposit,\n writePendingDeposit,\n} from '../utils/deposit/storage';\nimport { logger } from '../../../utils/logger';\n\nexport const usePendingDepositState = () => {\n const {\n context,\n } = useOnboardingState();\n\n // Use NetworkProvider instead of legacy N1WalletContext\n const { solanaAddress, evmAddress, isEvmMode } = useNetwork();\n\n const [pendingDepositId, setPendingDepositId] = useState<string | null>(null);\n\n const ensurePendingDraft = useCallback(\n (draftAmount: string): ReturnType<typeof createPendingDepositDraft> => {\n // Use entryNetwork (user's explicit selection) when available; fall back to isEvmMode.\n // entryNetwork doesn't flip when Turnkey creates a Solana wallet, unlike isEvmMode.\n const isEvmFlow = context.entryNetwork === 'evm' || (context.entryNetwork == null && isEvmMode);\n const walletForDraft = isEvmFlow\n ? evmAddress || solanaAddress\n : solanaAddress;\n const chainForDraft = context.selectedChainId ?? (context.selectedChain ?? 'solana');\n let pendingState = readPendingDeposit();\n if (pendingState?.stage === 'failed') {\n clearPendingDeposit();\n pendingState = null;\n }\n if (pendingState && pendingDepositId && pendingState.depositId !== pendingDepositId) {\n clearPendingDeposit();\n pendingState = null;\n }\n if (!pendingState) {\n const draft = createPendingDepositDraft({\n depositId: pendingDepositId ?? `dep-${Date.now()}`,\n wallet: walletForDraft || '',\n chain: chainForDraft,\n amount: draftAmount,\n });\n setPendingDepositId(draft.depositId);\n return draft;\n }\n\n // If pending state exists but amount differs, update it.\n // This ensures the localStorage has the current user input amount,\n // preventing stale amounts from being used in success records.\n // Only update if we're still in early stages (before bridge/solana submission).\n const canUpdateAmount = pendingState.stage === 'initiated';\n if (canUpdateAmount && pendingState.amount !== draftAmount) {\n logger.debug('[PendingDepositState] Updating pending draft amount', {\n oldAmount: pendingState.amount,\n newAmount: draftAmount,\n stage: pendingState.stage,\n });\n const updatedState = writePendingDeposit({\n ...pendingState,\n amount: draftAmount,\n });\n return updatedState;\n }\n\n return pendingState;\n },\n [solanaAddress, context.selectedChainId, context.selectedChain, context.entryNetwork, evmAddress, isEvmMode, pendingDepositId]\n );\n\n return {\n pendingDepositId,\n setPendingDepositId,\n ensurePendingDraft,\n };\n};\n\n"]}
@@ -55,9 +55,9 @@ export var useSolanaDeposit = function (_a) {
55
55
  var turnkeyAddress = useWalletConnection().turnkeyAddress;
56
56
  var runSolanaDeposit = useCallback(function (draftAmount, pendingState) { return __awaiter(void 0, void 0, void 0, function () {
57
57
  var workingState, normalizedAmount, txId, serializedTx, protonClient, solanaConnection, solanaRecipient, recipientKey, usdcToken, isBridgeFlow, depositResponse, depositError_1, splTx, splError_1, slot, eventIndex;
58
- var _a, _b, _c, _d, _e;
59
- return __generator(this, function (_f) {
60
- switch (_f.label) {
58
+ var _a, _b, _c, _d, _e, _f;
59
+ return __generator(this, function (_g) {
60
+ switch (_g.label) {
61
61
  case 0:
62
62
  logger.info("[SolanaDeposit] runSolanaDeposit called", {
63
63
  draftAmount: draftAmount,
@@ -85,17 +85,17 @@ export var useSolanaDeposit = function (_a) {
85
85
  }
86
86
  recipientKey = new PublicKey(solanaRecipient);
87
87
  usdcToken = Array.isArray(nord === null || nord === void 0 ? void 0 : nord.tokens)
88
- ? (nord === null || nord === void 0 ? void 0 : nord.tokens.find(function (t) { return t.tokenId === NORD_USDC_TOKEN_ID; })) || (nord === null || nord === void 0 ? void 0 : nord.tokens[0])
88
+ ? (_a = nord === null || nord === void 0 ? void 0 : nord.tokens.find(function (t) { return t.tokenId === NORD_USDC_TOKEN_ID; })) !== null && _a !== void 0 ? _a : null
89
89
  : null;
90
90
  if (!usdcToken) {
91
91
  throw new Error('Nord token configuration is missing USDC. Verify your Nord deployment.');
92
92
  }
93
93
  setDepositProgressPhase('solana');
94
- isBridgeFlow = (_b = (_a = workingState.tx) === null || _a === void 0 ? void 0 : _a.startsWith('0x')) !== null && _b !== void 0 ? _b : false;
94
+ isBridgeFlow = (_c = (_b = workingState.tx) === null || _b === void 0 ? void 0 : _b.startsWith('0x')) !== null && _c !== void 0 ? _c : false;
95
95
  workingState = advancePendingDeposit(workingState, {
96
96
  stage: 'solana_submitted',
97
97
  // For bridge flows, preserve the EVM tx hash; for native Solana, use the Solana txId
98
- tx: isBridgeFlow ? workingState.tx : ((_c = txId !== null && txId !== void 0 ? txId : workingState.tx) !== null && _c !== void 0 ? _c : null),
98
+ tx: isBridgeFlow ? workingState.tx : ((_d = txId !== null && txId !== void 0 ? txId : workingState.tx) !== null && _d !== void 0 ? _d : null),
99
99
  });
100
100
  logger.info("[SolanaDeposit] Calling nordUser.deposit...", {
101
101
  normalizedAmount: normalizedAmount,
@@ -106,16 +106,16 @@ export var useSolanaDeposit = function (_a) {
106
106
  hasDepositFunction: typeof (nordUser === null || nordUser === void 0 ? void 0 : nordUser.deposit) === 'function',
107
107
  });
108
108
  if (!(typeof (nordUser === null || nordUser === void 0 ? void 0 : nordUser.deposit) === 'function')) return [3 /*break*/, 5];
109
- _f.label = 1;
109
+ _g.label = 1;
110
110
  case 1:
111
- _f.trys.push([1, 3, , 4]);
111
+ _g.trys.push([1, 3, , 4]);
112
112
  logger.info("[SolanaDeposit] Executing nordUser.deposit()...");
113
113
  return [4 /*yield*/, nordUser.deposit({
114
114
  amount: normalizedAmount,
115
115
  tokenId: usdcToken.tokenId,
116
116
  })];
117
117
  case 2:
118
- depositResponse = _f.sent();
118
+ depositResponse = _g.sent();
119
119
  logger.info("[SolanaDeposit] nordUser.deposit() completed", {
120
120
  responseType: typeof depositResponse,
121
121
  isString: typeof depositResponse === 'string',
@@ -135,7 +135,7 @@ export var useSolanaDeposit = function (_a) {
135
135
  if ('rawTx' in depositResponse && typeof depositResponse.rawTx === 'string') {
136
136
  serializedTx = depositResponse.rawTx;
137
137
  logger.info("[SolanaDeposit] Got serialized transaction", {
138
- rawTxLength: (_d = serializedTx === null || serializedTx === void 0 ? void 0 : serializedTx.length) !== null && _d !== void 0 ? _d : 0
138
+ rawTxLength: (_e = serializedTx === null || serializedTx === void 0 ? void 0 : serializedTx.length) !== null && _e !== void 0 ? _e : 0
139
139
  });
140
140
  }
141
141
  }
@@ -145,7 +145,7 @@ export var useSolanaDeposit = function (_a) {
145
145
  }
146
146
  return [3 /*break*/, 4];
147
147
  case 3:
148
- depositError_1 = _f.sent();
148
+ depositError_1 = _g.sent();
149
149
  logger.error("[SolanaDeposit] nordUser.deposit() threw error", {
150
150
  error: depositError_1 instanceof Error ? depositError_1.message : String(depositError_1),
151
151
  errorName: depositError_1 instanceof Error ? depositError_1.name : typeof depositError_1,
@@ -162,18 +162,18 @@ export var useSolanaDeposit = function (_a) {
162
162
  case 4: return [3 /*break*/, 6];
163
163
  case 5:
164
164
  logger.warn("[SolanaDeposit] nordUser.deposit is not a function, skipping");
165
- _f.label = 6;
165
+ _g.label = 6;
166
166
  case 6:
167
167
  if (!!txId) return [3 /*break*/, 10];
168
168
  logger.info("[SolanaDeposit] No txId from deposit, trying depositSpl fallback...", {
169
169
  hasDepositSpl: typeof (nordUser === null || nordUser === void 0 ? void 0 : nordUser.depositSpl) === 'function',
170
170
  });
171
- _f.label = 7;
171
+ _g.label = 7;
172
172
  case 7:
173
- _f.trys.push([7, 9, , 10]);
173
+ _g.trys.push([7, 9, , 10]);
174
174
  return [4 /*yield*/, (nordUser === null || nordUser === void 0 ? void 0 : nordUser.depositSpl(normalizedAmount, usdcToken.tokenId))];
175
175
  case 8:
176
- splTx = _f.sent();
176
+ splTx = _g.sent();
177
177
  logger.info("[SolanaDeposit] depositSpl() completed", {
178
178
  responseType: typeof splTx,
179
179
  isString: typeof splTx === 'string',
@@ -189,13 +189,13 @@ export var useSolanaDeposit = function (_a) {
189
189
  if ('rawTx' in splTx && typeof splTx.rawTx === 'string') {
190
190
  serializedTx = splTx.rawTx;
191
191
  logger.info("[SolanaDeposit] Got serialized transaction from depositSpl", {
192
- rawTxLength: (_e = serializedTx === null || serializedTx === void 0 ? void 0 : serializedTx.length) !== null && _e !== void 0 ? _e : 0
192
+ rawTxLength: (_f = serializedTx === null || serializedTx === void 0 ? void 0 : serializedTx.length) !== null && _f !== void 0 ? _f : 0
193
193
  });
194
194
  }
195
195
  }
196
196
  return [3 /*break*/, 10];
197
197
  case 9:
198
- splError_1 = _f.sent();
198
+ splError_1 = _g.sent();
199
199
  logger.error("[SolanaDeposit] depositSpl() threw error", {
200
200
  error: splError_1 instanceof Error ? splError_1.message : String(splError_1),
201
201
  errorName: splError_1 instanceof Error ? splError_1.name : typeof splError_1,
@@ -228,7 +228,7 @@ export var useSolanaDeposit = function (_a) {
228
228
  logger.info("[SolanaDeposit] Waiting for transaction slot...", { txId: txId.slice(0, 16) + '...' });
229
229
  return [4 /*yield*/, waitForTransactionSlot(solanaConnection, txId)];
230
230
  case 11:
231
- slot = _f.sent();
231
+ slot = _g.sent();
232
232
  logger.info("[SolanaDeposit] Transaction slot confirmed", { slot: slot });
233
233
  logger.info("[SolanaDeposit] Waiting for deposit event index...", {
234
234
  recipient: recipientKey.toBase58().slice(0, 8) + '...',
@@ -236,7 +236,7 @@ export var useSolanaDeposit = function (_a) {
236
236
  });
237
237
  return [4 /*yield*/, waitForDepositEventIndex(protonClient, recipientKey, slot)];
238
238
  case 12:
239
- eventIndex = _f.sent();
239
+ eventIndex = _g.sent();
240
240
  logger.info("[SolanaDeposit] Deposit event index found", { eventIndex: eventIndex });
241
241
  setDepositProgressPhase('nord');
242
242
  workingState = advancePendingDeposit(workingState, {
@@ -248,7 +248,7 @@ export var useSolanaDeposit = function (_a) {
248
248
  logger.info("[SolanaDeposit] Waiting for Nord acknowledgement...", { eventIndex: eventIndex });
249
249
  return [4 /*yield*/, waitForNordAcknowledgement(nord, eventIndex)];
250
250
  case 13:
251
- _f.sent();
251
+ _g.sent();
252
252
  logger.info("[SolanaDeposit] Nord acknowledgement received successfully");
253
253
  return [2 /*return*/, { txId: txId, workingState: workingState, solanaTx: serializedTx }];
254
254
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useSolanaDeposit.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useSolanaDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback } from 'react';\nimport { PublicKey } from '@solana/web3.js';\nimport { useN1WalletContext } from '../../../hooks';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../../providers/N1WalletProvider/SessionProvider';\nimport { advancePendingDeposit, createPendingDepositDraft } from '../utils/deposit/storage';\nimport {\n waitForDepositEventIndex,\n waitForNordAcknowledgement,\n waitForTransactionSlot,\n} from '../utils/deposit/solanaUtils';\nimport { ProtonClientLike, SolanaConnectionLike } from '../types';\nimport { useWalletConnection } from '../providers/WalletConnectionProvider';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport { NORD_USDC_TOKEN_ID } from '../constants/withdrawal';\n\ninterface UseSolanaDepositProps {\n setDepositProgressPhase: (phase: 'bridge' | 'solana' | 'nord') => void;\n ensurePendingDraft: (amount: string) => ReturnType<typeof createPendingDepositDraft>;\n}\n\nexport const useSolanaDeposit = ({\n setDepositProgressPhase,\n ensurePendingDraft,\n}: UseSolanaDepositProps) => {\n // Use new providers for address and nordUser\n const { solanaAddress } = useNetwork();\n const { nordUser } = useSession();\n // nord client still comes from legacy context (passed as prop)\n const { nord } = useN1WalletContext();\n\n const { turnkeyAddress } = useWalletConnection();\n\n const runSolanaDeposit = useCallback(\n async (draftAmount: string, pendingState?: ReturnType<typeof createPendingDepositDraft> | null) => {\n logger.info(\"[SolanaDeposit] runSolanaDeposit called\", {\n draftAmount,\n hasPendingState: !!pendingState,\n });\n\n if (!nord || !nordUser) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Nord client/session not available'));\n throw new Error('Nord client/session not available for Solana deposit');\n }\n setDepositProgressPhase('solana');\n let workingState = pendingState ?? ensurePendingDraft(draftAmount);\n\n const normalizedAmount = parseFloat(draftAmount);\n let txId: string | null = null;\n let serializedTx: string | null = null;\n\n const protonClient = nord?.protonClient as ProtonClientLike | undefined;\n const solanaConnection = nord?.solanaConnection as SolanaConnectionLike | undefined;\n\n if (!protonClient || !solanaConnection) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Missing Solana or Proton configuration'));\n throw new Error('Nord client is missing Solana or Proton configuration. Verify your Nord deployment.');\n }\n\n const solanaRecipient = solanaAddress || turnkeyAddress;\n if (!solanaRecipient) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Solana recipient unavailable'));\n throw new Error('Solana recipient is unavailable. Wait for Turnkey to finish provisioning.');\n }\n const recipientKey = new PublicKey(solanaRecipient);\n\n const usdcToken = Array.isArray(nord?.tokens)\n ? nord?.tokens.find((t: any) => t.tokenId === NORD_USDC_TOKEN_ID) || nord?.tokens[0]\n : null;\n\n if (!usdcToken) {\n throw new Error('Nord token configuration is missing USDC. Verify your Nord deployment.');\n }\n\n setDepositProgressPhase('solana');\n // Check if this is a CCTP bridge flow (tx already has EVM hash starting with 0x)\n // If so, don't overwrite tx - only update mintTx later\n const isBridgeFlow = workingState.tx?.startsWith('0x') ?? false;\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash; for native Solana, use the Solana txId\n tx: isBridgeFlow ? workingState.tx : (txId ?? workingState.tx ?? null),\n });\n\n logger.info(\"[SolanaDeposit] Calling nordUser.deposit...\", {\n normalizedAmount,\n tokenId: usdcToken.tokenId,\n tokenSymbol: usdcToken.symbol,\n recipient: solanaRecipient.slice(0, 8) + '...',\n hasNordUser: !!nordUser,\n hasDepositFunction: typeof nordUser?.deposit === 'function',\n });\n\n // Try primary deposit method\n if (typeof nordUser?.deposit === 'function') {\n try {\n logger.info(\"[SolanaDeposit] Executing nordUser.deposit()...\");\n const depositResponse = await nordUser.deposit({\n amount: normalizedAmount,\n tokenId: usdcToken.tokenId,\n });\n\n logger.info(\"[SolanaDeposit] nordUser.deposit() completed\", {\n responseType: typeof depositResponse,\n isString: typeof depositResponse === 'string',\n isObject: typeof depositResponse === 'object',\n hasSignature: depositResponse && typeof depositResponse === 'object' && 'signature' in depositResponse,\n });\n\n if (depositResponse) {\n if (typeof depositResponse === 'string') {\n txId = depositResponse;\n logger.info(\"[SolanaDeposit] Got txId from deposit (string)\", { txId: txId.slice(0, 16) + '...' });\n } else if (\n typeof depositResponse === 'object' &&\n 'signature' in depositResponse &&\n typeof depositResponse.signature === 'string'\n ) {\n txId = depositResponse.signature;\n logger.info(\"[SolanaDeposit] Got txId from deposit (object.signature)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n if ('rawTx' in depositResponse && typeof depositResponse.rawTx === 'string') {\n serializedTx = depositResponse.rawTx;\n logger.info(\"[SolanaDeposit] Got serialized transaction\", {\n rawTxLength: serializedTx?.length ?? 0\n });\n }\n }\n } else {\n logger.warn(\"[SolanaDeposit] nordUser.deposit() returned empty response\");\n }\n } catch (depositError) {\n logger.error(\"[SolanaDeposit] nordUser.deposit() threw error\", {\n error: depositError instanceof Error ? depositError.message : String(depositError),\n errorName: depositError instanceof Error ? depositError.name : typeof depositError,\n stack: depositError instanceof Error ? depositError.stack : undefined,\n // Try to extract more details from NordError\n cause: (depositError as any)?.cause,\n code: (depositError as any)?.code,\n details: (depositError as any)?.details,\n originalError: (depositError as any)?.error,\n // Full error object for inspection\n fullError: JSON.stringify(depositError, Object.getOwnPropertyNames(depositError)),\n });\n throw depositError;\n }\n } else {\n logger.warn(\"[SolanaDeposit] nordUser.deposit is not a function, skipping\");\n }\n\n // Fallback to depositSpl if primary failed or returned nothing\n if (!txId) {\n logger.info(\"[SolanaDeposit] No txId from deposit, trying depositSpl fallback...\", {\n hasDepositSpl: typeof nordUser?.depositSpl === 'function',\n });\n\n try {\n const splTx = await nordUser?.depositSpl(normalizedAmount, usdcToken.tokenId);\n\n logger.info(\"[SolanaDeposit] depositSpl() completed\", {\n responseType: typeof splTx,\n isString: typeof splTx === 'string',\n isObject: typeof splTx === 'object',\n });\n\n if (typeof splTx === 'string') {\n txId = splTx;\n logger.info(\"[SolanaDeposit] Got txId from depositSpl (string)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n } else if (splTx && typeof splTx === 'object' && 'signature' in splTx && typeof splTx.signature === 'string') {\n txId = splTx.signature;\n logger.info(\"[SolanaDeposit] Got txId from depositSpl (object.signature)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n if ('rawTx' in splTx && typeof splTx.rawTx === 'string') {\n serializedTx = splTx.rawTx;\n logger.info(\"[SolanaDeposit] Got serialized transaction from depositSpl\", {\n rawTxLength: serializedTx?.length ?? 0\n });\n }\n }\n } catch (splError) {\n logger.error(\"[SolanaDeposit] depositSpl() threw error\", {\n error: splError instanceof Error ? splError.message : String(splError),\n errorName: splError instanceof Error ? splError.name : typeof splError,\n stack: splError instanceof Error ? splError.stack : undefined,\n // Try to extract more details from NordError\n cause: (splError as any)?.cause,\n code: (splError as any)?.code,\n details: (splError as any)?.details,\n originalError: (splError as any)?.error,\n // Full error object for inspection\n fullError: JSON.stringify(splError, Object.getOwnPropertyNames(splError)),\n });\n throw splError;\n }\n }\n\n if (!txId) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Failed to get transaction ID'));\n throw new Error('Failed to submit deposit transaction.');\n }\n\n logger.info(\"[SolanaDeposit] Transaction submitted successfully\", {\n txId: txId.slice(0, 16) + '...',\n isBridgeFlow,\n hasSerializedTx: !!serializedTx,\n });\n\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n logger.info(\"[SolanaDeposit] Waiting for transaction slot...\", { txId: txId.slice(0, 16) + '...' });\n const slot = await waitForTransactionSlot(solanaConnection, txId);\n logger.info(\"[SolanaDeposit] Transaction slot confirmed\", { slot });\n\n logger.info(\"[SolanaDeposit] Waiting for deposit event index...\", {\n recipient: recipientKey.toBase58().slice(0, 8) + '...',\n slot,\n });\n const eventIndex = await waitForDepositEventIndex(\n protonClient,\n recipientKey,\n slot\n );\n logger.info(\"[SolanaDeposit] Deposit event index found\", { eventIndex });\n\n setDepositProgressPhase('nord');\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_confirmed',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n logger.info(\"[SolanaDeposit] Waiting for Nord acknowledgement...\", { eventIndex });\n await waitForNordAcknowledgement(nord!, eventIndex);\n logger.info(\"[SolanaDeposit] Nord acknowledgement received successfully\");\n\n return { txId, workingState, solanaTx: serializedTx };\n },\n [solanaAddress, turnkeyAddress, ensurePendingDraft, nord, nordUser, setDepositProgressPhase]\n );\n\n return {\n runSolanaDeposit,\n };\n};\n\n"]}
1
+ {"version":3,"file":"useSolanaDeposit.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useSolanaDeposit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAA6B,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,EAGT;QAFtB,uBAAuB,6BAAA,EACvB,kBAAkB,wBAAA;IAElB,6CAA6C;IACrC,IAAA,aAAa,GAAK,UAAU,EAAE,cAAjB,CAAkB;IAC/B,IAAA,QAAQ,GAAK,UAAU,EAAE,SAAjB,CAAkB;IAClC,+DAA+D;IACvD,IAAA,IAAI,GAAK,kBAAkB,EAAE,KAAzB,CAA0B;IAE9B,IAAA,cAAc,GAAK,mBAAmB,EAAE,eAA1B,CAA2B;IAEjD,IAAM,gBAAgB,GAAG,WAAW,CAClC,UAAO,WAAmB,EAAE,YAAkE;;;;;;oBAC5F,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;wBACrD,WAAW,aAAA;wBACX,eAAe,EAAE,CAAC,CAAC,YAAY;qBAChC,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACvB,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC,CAAC;wBAC7F,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;oBAC1E,CAAC;oBACD,uBAAuB,CAAC,QAAQ,CAAC,CAAC;oBAC9B,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;oBAE7D,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;oBAC7C,IAAI,GAAkB,IAAI,CAAC;oBAC3B,YAAY,GAAkB,IAAI,CAAC;oBAEjC,YAAY,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAA4C,CAAC;oBAClE,gBAAgB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAoD,CAAC;oBAEpF,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACvC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAC,CAAC;wBAClG,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;oBACzG,CAAC;oBAEK,eAAe,GAAG,aAAa,IAAI,cAAc,CAAC;oBACxD,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,8BAA8B,CAAC,CAAC,CAAC;wBACxF,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;oBAC/F,CAAC;oBACK,YAAY,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;oBAE9C,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC;wBAC3C,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,IAAI,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,kBAAkB,EAAhC,CAAgC,CAAC,mCAAI,IAAI;wBACzE,CAAC,CAAC,IAAI,CAAC;oBAET,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;oBAC5F,CAAC;oBAED,uBAAuB,CAAC,QAAQ,CAAC,CAAC;oBAG5B,YAAY,GAAG,MAAA,MAAA,YAAY,CAAC,EAAE,0CAAE,UAAU,CAAC,IAAI,CAAC,mCAAI,KAAK,CAAC;oBAChE,YAAY,GAAG,qBAAqB,CAAC,YAAY,EAAE;wBACjD,KAAK,EAAE,kBAAkB;wBACzB,qFAAqF;wBACrF,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,YAAY,CAAC,EAAE,mCAAI,IAAI,CAAC;qBACvE,CAAC,CAAC;oBAEH,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;wBACzD,gBAAgB,kBAAA;wBAChB,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,WAAW,EAAE,SAAS,CAAC,MAAM;wBAC7B,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;wBAC9C,WAAW,EAAE,CAAC,CAAC,QAAQ;wBACvB,kBAAkB,EAAE,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,KAAK,UAAU;qBAC5D,CAAC,CAAC;yBAGC,CAAA,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,KAAK,UAAU,CAAA,EAAvC,wBAAuC;;;;oBAEvC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;oBACvC,qBAAM,QAAQ,CAAC,OAAO,CAAC;4BAC7C,MAAM,EAAE,gBAAgB;4BACxB,OAAO,EAAE,SAAS,CAAC,OAAO;yBAC3B,CAAC,EAAA;;oBAHI,eAAe,GAAG,SAGtB;oBAEF,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;wBAC1D,YAAY,EAAE,OAAO,eAAe;wBACpC,QAAQ,EAAE,OAAO,eAAe,KAAK,QAAQ;wBAC7C,QAAQ,EAAE,OAAO,eAAe,KAAK,QAAQ;wBAC7C,YAAY,EAAE,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,WAAW,IAAI,eAAe;qBACvG,CAAC,CAAC;oBAEH,IAAI,eAAe,EAAE,CAAC;wBACpB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;4BACxC,IAAI,GAAG,eAAe,CAAC;4BACvB,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;wBACrG,CAAC;6BAAM,IACL,OAAO,eAAe,KAAK,QAAQ;4BACnC,WAAW,IAAI,eAAe;4BAC9B,OAAO,eAAe,CAAC,SAAS,KAAK,QAAQ,EAC7C,CAAC;4BACD,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC;4BACjC,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE,EAAE,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;4BAC3H,IAAI,OAAO,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gCAC5E,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC;gCACrC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;oCACxD,WAAW,EAAE,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC;iCACvC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;oBAC5E,CAAC;;;;oBAED,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE;wBAC7D,KAAK,EAAE,cAAY,YAAY,KAAK,CAAC,CAAC,CAAC,cAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAY,CAAC;wBAClF,SAAS,EAAE,cAAY,YAAY,KAAK,CAAC,CAAC,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,cAAY;wBAClF,KAAK,EAAE,cAAY,YAAY,KAAK,CAAC,CAAC,CAAC,cAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;wBACrE,6CAA6C;wBAC7C,KAAK,EAAG,cAAoB,aAApB,cAAY,uBAAZ,cAAY,CAAU,KAAK;wBACnC,IAAI,EAAG,cAAoB,aAApB,cAAY,uBAAZ,cAAY,CAAU,IAAI;wBACjC,OAAO,EAAG,cAAoB,aAApB,cAAY,uBAAZ,cAAY,CAAU,OAAO;wBACvC,aAAa,EAAG,cAAoB,aAApB,cAAY,uBAAZ,cAAY,CAAU,KAAK;wBAC3C,mCAAmC;wBACnC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,cAAY,EAAE,MAAM,CAAC,mBAAmB,CAAC,cAAY,CAAC,CAAC;qBAClF,CAAC,CAAC;oBACH,MAAM,cAAY,CAAC;;;oBAGrB,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;;;yBAI1E,CAAC,IAAI,EAAL,yBAAK;oBACP,MAAM,CAAC,IAAI,CAAC,qEAAqE,EAAE;wBACjF,aAAa,EAAE,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAA,KAAK,UAAU;qBAC1D,CAAC,CAAC;;;;oBAGa,qBAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA,EAAA;;oBAAvE,KAAK,GAAG,SAA+D;oBAE7E,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;wBACpD,YAAY,EAAE,OAAO,KAAK;wBAC1B,QAAQ,EAAE,OAAO,KAAK,KAAK,QAAQ;wBACnC,QAAQ,EAAE,OAAO,KAAK,KAAK,QAAQ;qBACpC,CAAC,CAAC;oBAEH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,IAAI,GAAG,KAAK,CAAC;wBACb,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;oBACtH,CAAC;yBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC7G,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;wBACvB,MAAM,CAAC,IAAI,CAAC,6DAA6D,EAAE,EAAE,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;wBAC9H,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACxD,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;4BAC3B,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;gCACxE,WAAW,EAAE,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC;6BACvC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;;;;oBAED,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE;wBACvD,KAAK,EAAE,UAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,UAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAQ,CAAC;wBACtE,SAAS,EAAE,UAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,UAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,UAAQ;wBACtE,KAAK,EAAE,UAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;wBAC7D,6CAA6C;wBAC7C,KAAK,EAAG,UAAgB,aAAhB,UAAQ,uBAAR,UAAQ,CAAU,KAAK;wBAC/B,IAAI,EAAG,UAAgB,aAAhB,UAAQ,uBAAR,UAAQ,CAAU,IAAI;wBAC7B,OAAO,EAAG,UAAgB,aAAhB,UAAQ,uBAAR,UAAQ,CAAU,OAAO;wBACnC,aAAa,EAAG,UAAgB,aAAhB,UAAQ,uBAAR,UAAQ,CAAU,KAAK;wBACvC,mCAAmC;wBACnC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAQ,CAAC,CAAC;qBAC1E,CAAC,CAAC;oBACH,MAAM,UAAQ,CAAC;;oBAInB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,8BAA8B,CAAC,CAAC,CAAC;wBACxF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBAC3D,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;wBAChE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;wBAC/B,YAAY,cAAA;wBACZ,eAAe,EAAE,CAAC,CAAC,YAAY;qBAChC,CAAC,CAAC;oBAEH,YAAY,GAAG,qBAAqB,CAAC,YAAY,EAAE;wBACjD,KAAK,EAAE,kBAAkB;wBACzB,uFAAuF;wBACvF,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;wBACzC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBACxC,CAAC,CAAC;oBAEH,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;oBACvF,qBAAM,sBAAsB,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAA;;oBAA3D,IAAI,GAAG,SAAoD;oBACjE,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;oBAEpE,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;wBAChE,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;wBACtD,IAAI,MAAA;qBACL,CAAC,CAAC;oBACgB,qBAAM,wBAAwB,CAC/C,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,EAAA;;oBAJK,UAAU,GAAG,SAIlB;oBACD,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;oBAEzE,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBAChC,YAAY,GAAG,qBAAqB,CAAC,YAAY,EAAE;wBACjD,KAAK,EAAE,kBAAkB;wBACzB,uFAAuF;wBACvF,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;wBACzC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBACxC,CAAC,CAAC;oBAEH,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;oBACnF,qBAAM,0BAA0B,CAAC,IAAK,EAAE,UAAU,CAAC,EAAA;;oBAAnD,SAAmD,CAAC;oBACpD,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;oBAE1E,sBAAO,EAAE,IAAI,MAAA,EAAE,YAAY,cAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAC;;;SACvD,EACD,CAAC,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAC7F,CAAC;IAEF,OAAO;QACL,gBAAgB,kBAAA;KACjB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback } from 'react';\nimport { PublicKey } from '@solana/web3.js';\nimport { useN1WalletContext } from '../../../hooks';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../../providers/N1WalletProvider/SessionProvider';\nimport { advancePendingDeposit, createPendingDepositDraft } from '../utils/deposit/storage';\nimport {\n waitForDepositEventIndex,\n waitForNordAcknowledgement,\n waitForTransactionSlot,\n} from '../utils/deposit/solanaUtils';\nimport { ProtonClientLike, SolanaConnectionLike } from '../types';\nimport { useWalletConnection } from '../providers/WalletConnectionProvider';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport { NORD_USDC_TOKEN_ID } from '../constants/withdrawal';\n\ninterface UseSolanaDepositProps {\n setDepositProgressPhase: (phase: 'bridge' | 'solana' | 'nord') => void;\n ensurePendingDraft: (amount: string) => ReturnType<typeof createPendingDepositDraft>;\n}\n\nexport const useSolanaDeposit = ({\n setDepositProgressPhase,\n ensurePendingDraft,\n}: UseSolanaDepositProps) => {\n // Use new providers for address and nordUser\n const { solanaAddress } = useNetwork();\n const { nordUser } = useSession();\n // nord client still comes from legacy context (passed as prop)\n const { nord } = useN1WalletContext();\n\n const { turnkeyAddress } = useWalletConnection();\n\n const runSolanaDeposit = useCallback(\n async (draftAmount: string, pendingState?: ReturnType<typeof createPendingDepositDraft> | null) => {\n logger.info(\"[SolanaDeposit] runSolanaDeposit called\", {\n draftAmount,\n hasPendingState: !!pendingState,\n });\n\n if (!nord || !nordUser) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Nord client/session not available'));\n throw new Error('Nord client/session not available for Solana deposit');\n }\n setDepositProgressPhase('solana');\n let workingState = pendingState ?? ensurePendingDraft(draftAmount);\n\n const normalizedAmount = parseFloat(draftAmount);\n let txId: string | null = null;\n let serializedTx: string | null = null;\n\n const protonClient = nord?.protonClient as ProtonClientLike | undefined;\n const solanaConnection = nord?.solanaConnection as SolanaConnectionLike | undefined;\n\n if (!protonClient || !solanaConnection) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Missing Solana or Proton configuration'));\n throw new Error('Nord client is missing Solana or Proton configuration. Verify your Nord deployment.');\n }\n\n const solanaRecipient = solanaAddress || turnkeyAddress;\n if (!solanaRecipient) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Solana recipient unavailable'));\n throw new Error('Solana recipient is unavailable. Wait for Turnkey to finish provisioning.');\n }\n const recipientKey = new PublicKey(solanaRecipient);\n\n const usdcToken = Array.isArray(nord?.tokens)\n ? nord?.tokens.find((t: any) => t.tokenId === NORD_USDC_TOKEN_ID) ?? null\n : null;\n\n if (!usdcToken) {\n throw new Error('Nord token configuration is missing USDC. Verify your Nord deployment.');\n }\n\n setDepositProgressPhase('solana');\n // Check if this is a CCTP bridge flow (tx already has EVM hash starting with 0x)\n // If so, don't overwrite tx - only update mintTx later\n const isBridgeFlow = workingState.tx?.startsWith('0x') ?? false;\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash; for native Solana, use the Solana txId\n tx: isBridgeFlow ? workingState.tx : (txId ?? workingState.tx ?? null),\n });\n\n logger.info(\"[SolanaDeposit] Calling nordUser.deposit...\", {\n normalizedAmount,\n tokenId: usdcToken.tokenId,\n tokenSymbol: usdcToken.symbol,\n recipient: solanaRecipient.slice(0, 8) + '...',\n hasNordUser: !!nordUser,\n hasDepositFunction: typeof nordUser?.deposit === 'function',\n });\n\n // Try primary deposit method\n if (typeof nordUser?.deposit === 'function') {\n try {\n logger.info(\"[SolanaDeposit] Executing nordUser.deposit()...\");\n const depositResponse = await nordUser.deposit({\n amount: normalizedAmount,\n tokenId: usdcToken.tokenId,\n });\n\n logger.info(\"[SolanaDeposit] nordUser.deposit() completed\", {\n responseType: typeof depositResponse,\n isString: typeof depositResponse === 'string',\n isObject: typeof depositResponse === 'object',\n hasSignature: depositResponse && typeof depositResponse === 'object' && 'signature' in depositResponse,\n });\n\n if (depositResponse) {\n if (typeof depositResponse === 'string') {\n txId = depositResponse;\n logger.info(\"[SolanaDeposit] Got txId from deposit (string)\", { txId: txId.slice(0, 16) + '...' });\n } else if (\n typeof depositResponse === 'object' &&\n 'signature' in depositResponse &&\n typeof depositResponse.signature === 'string'\n ) {\n txId = depositResponse.signature;\n logger.info(\"[SolanaDeposit] Got txId from deposit (object.signature)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n if ('rawTx' in depositResponse && typeof depositResponse.rawTx === 'string') {\n serializedTx = depositResponse.rawTx;\n logger.info(\"[SolanaDeposit] Got serialized transaction\", {\n rawTxLength: serializedTx?.length ?? 0\n });\n }\n }\n } else {\n logger.warn(\"[SolanaDeposit] nordUser.deposit() returned empty response\");\n }\n } catch (depositError) {\n logger.error(\"[SolanaDeposit] nordUser.deposit() threw error\", {\n error: depositError instanceof Error ? depositError.message : String(depositError),\n errorName: depositError instanceof Error ? depositError.name : typeof depositError,\n stack: depositError instanceof Error ? depositError.stack : undefined,\n // Try to extract more details from NordError\n cause: (depositError as any)?.cause,\n code: (depositError as any)?.code,\n details: (depositError as any)?.details,\n originalError: (depositError as any)?.error,\n // Full error object for inspection\n fullError: JSON.stringify(depositError, Object.getOwnPropertyNames(depositError)),\n });\n throw depositError;\n }\n } else {\n logger.warn(\"[SolanaDeposit] nordUser.deposit is not a function, skipping\");\n }\n\n // Fallback to depositSpl if primary failed or returned nothing\n if (!txId) {\n logger.info(\"[SolanaDeposit] No txId from deposit, trying depositSpl fallback...\", {\n hasDepositSpl: typeof nordUser?.depositSpl === 'function',\n });\n\n try {\n const splTx = await nordUser?.depositSpl(normalizedAmount, usdcToken.tokenId);\n\n logger.info(\"[SolanaDeposit] depositSpl() completed\", {\n responseType: typeof splTx,\n isString: typeof splTx === 'string',\n isObject: typeof splTx === 'object',\n });\n\n if (typeof splTx === 'string') {\n txId = splTx;\n logger.info(\"[SolanaDeposit] Got txId from depositSpl (string)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n } else if (splTx && typeof splTx === 'object' && 'signature' in splTx && typeof splTx.signature === 'string') {\n txId = splTx.signature;\n logger.info(\"[SolanaDeposit] Got txId from depositSpl (object.signature)\", { txId: txId?.slice(0, 16) + '...' || 'unknown' });\n if ('rawTx' in splTx && typeof splTx.rawTx === 'string') {\n serializedTx = splTx.rawTx;\n logger.info(\"[SolanaDeposit] Got serialized transaction from depositSpl\", {\n rawTxLength: serializedTx?.length ?? 0\n });\n }\n }\n } catch (splError) {\n logger.error(\"[SolanaDeposit] depositSpl() threw error\", {\n error: splError instanceof Error ? splError.message : String(splError),\n errorName: splError instanceof Error ? splError.name : typeof splError,\n stack: splError instanceof Error ? splError.stack : undefined,\n // Try to extract more details from NordError\n cause: (splError as any)?.cause,\n code: (splError as any)?.code,\n details: (splError as any)?.details,\n originalError: (splError as any)?.error,\n // Full error object for inspection\n fullError: JSON.stringify(splError, Object.getOwnPropertyNames(splError)),\n });\n throw splError;\n }\n }\n\n if (!txId) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Failed to get transaction ID'));\n throw new Error('Failed to submit deposit transaction.');\n }\n\n logger.info(\"[SolanaDeposit] Transaction submitted successfully\", {\n txId: txId.slice(0, 16) + '...',\n isBridgeFlow,\n hasSerializedTx: !!serializedTx,\n });\n\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n logger.info(\"[SolanaDeposit] Waiting for transaction slot...\", { txId: txId.slice(0, 16) + '...' });\n const slot = await waitForTransactionSlot(solanaConnection, txId);\n logger.info(\"[SolanaDeposit] Transaction slot confirmed\", { slot });\n\n logger.info(\"[SolanaDeposit] Waiting for deposit event index...\", {\n recipient: recipientKey.toBase58().slice(0, 8) + '...',\n slot,\n });\n const eventIndex = await waitForDepositEventIndex(\n protonClient,\n recipientKey,\n slot\n );\n logger.info(\"[SolanaDeposit] Deposit event index found\", { eventIndex });\n\n setDepositProgressPhase('nord');\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_confirmed',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n logger.info(\"[SolanaDeposit] Waiting for Nord acknowledgement...\", { eventIndex });\n await waitForNordAcknowledgement(nord!, eventIndex);\n logger.info(\"[SolanaDeposit] Nord acknowledgement received successfully\");\n\n return { txId, workingState, solanaTx: serializedTx };\n },\n [solanaAddress, turnkeyAddress, ensurePendingDraft, nord, nordUser, setDepositProgressPhase]\n );\n\n return {\n runSolanaDeposit,\n };\n};\n\n"]}