@accesly/react 1.2.0 → 1.3.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/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { Environment, CognitoConfig, AuthClient, SessionStorage, DeviceStore, TelemetrySink, TokenManager, AccesslyEndpoints, AuthStatus, CredentialRecord, EncryptedEnvelope } from '@accesly/core';
1
+ import { Environment, CognitoConfig, AuthClient, SessionStorage, DeviceStore, TelemetrySink, TokenManager, AccesslyEndpoints, AuthStatus, CredentialRecord, EncryptedEnvelope, WalletHistoryItem } from '@accesly/core';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
4
 
@@ -736,12 +736,21 @@ interface WalletStreamBalancePayload {
736
736
  readonly xlm: string;
737
737
  }
738
738
  /**
739
- * Activity emitida por el backend ya **filtrada y tipada** — solo eventos
740
- * relevantes para una wallet de Accesly (rotación de signers + transfers
741
- * IN/OUT de XLM). Otros eventos on-chain (debug, errores host, eventos
742
- * irrelevantes) se descartan en el server.
739
+ * Activity tipada lista para renderizar. Cuatro variants:
740
+ *
741
+ * - `wallet-created` — deploy inicial del Smart Account.
742
+ * - `signer-rotated` — rotación de signer (recovery).
743
+ * - `transfer-in` — recibió XLM.
744
+ * - `transfer-out` — envió XLM.
745
+ *
746
+ * Otros eventos on-chain (signer_added/removed internos, ruido) se descartan.
743
747
  */
744
748
  type WalletActivityItem = {
749
+ readonly type: 'wallet-created';
750
+ readonly txHash: string;
751
+ readonly ledger: number;
752
+ readonly timestamp: string | null;
753
+ } | {
745
754
  readonly type: 'signer-rotated';
746
755
  readonly txHash: string;
747
756
  readonly ledger: number;
@@ -808,6 +817,52 @@ interface UseWalletActivityResult {
808
817
  }
809
818
  declare function useWalletActivity(walletAddress?: string | null, opts?: UseWalletActivityOptions): UseWalletActivityResult;
810
819
 
820
+ /**
821
+ * `useWalletHistory(walletAddress?, opts?)` — historial completo de la wallet
822
+ * pre-decodificado desde Stellar Expert (indexer free, full retention).
823
+ *
824
+ * El backend de Accesly **proxea** las requests a Stellar Expert porque SE
825
+ * bloquea CORS desde browsers (Cloudflare retorna 403 en cross-origin). El
826
+ * proxy hace el call server-side, decodea topics + amounts, y devuelve items
827
+ * tipados listos para renderizar.
828
+ *
829
+ * Features:
830
+ * - Cache en `localStorage` per-wallet con TTL 12h → render instantáneo en
831
+ * reloads + navegación.
832
+ * - Polling cada 30s para nuevos events. Pausa si tab oculta.
833
+ * - `BroadcastChannel` cross-tab para compartir fetches — solo UN tab hace
834
+ * el request, los demás escuchan el resultado vía canal.
835
+ * - Optimistic updates: el SDK inserta el item al instante cuando `tx.send`
836
+ * confirma, sin esperar el indexing de SE (~30-60s típico).
837
+ */
838
+
839
+ /**
840
+ * Inyecta un item de history "optimistically" — útil cuando acabás de hacer
841
+ * `tx.send` y querés que aparezca al instante sin esperar el indexing de SE.
842
+ * El item queda hasta que el próximo fetch confirma que ya está en el feed.
843
+ */
844
+ declare function historyOptimisticPush(walletAddress: string, item: WalletHistoryItem | WalletActivityItem): void;
845
+ declare function historyClearOptimistic(walletAddress: string): void;
846
+ interface UseWalletHistoryOptions {
847
+ /** Intervalo de poll para nuevos events (ms). Default 30s, 0 desactiva. */
848
+ readonly pollIntervalMs?: number;
849
+ /**
850
+ * Cuántos transfers del XLM_SAC scan-ear por fetch. Default 50, max 500
851
+ * (5 paginated calls). En testnet hay millones de transfers globalmente; si
852
+ * tu wallet tiene pocos transfers, sube este número para encontrarlos.
853
+ */
854
+ readonly transferScanLimit?: number;
855
+ }
856
+ interface UseWalletHistoryResult {
857
+ readonly events: readonly WalletHistoryItem[];
858
+ readonly isLoading: boolean;
859
+ readonly error: Error | null;
860
+ readonly hasMore: boolean;
861
+ loadMore(): Promise<void>;
862
+ refresh(): Promise<void>;
863
+ }
864
+ declare function useWalletHistory(walletAddress?: string | null, opts?: UseWalletHistoryOptions): UseWalletHistoryResult;
865
+
811
866
  /**
812
867
  * @accesly/react — React Provider + `useAccesly` hook.
813
868
  *
@@ -832,4 +887,4 @@ declare function useWalletActivity(walletAddress?: string | null, opts?: UseWall
832
887
  */
833
888
  declare const REACT_ADAPTER_VERSION = "0.0.0";
834
889
 
835
- export { AcceslyContext, type AcceslyContextValue, type AcceslyHook, AcceslyProvider, type AcceslyProviderProps, type AuthNamespace, type BootstrapWalletInput, type CreateWalletInput, type CreatedWalletInfo, ENVIRONMENT_DEFAULTS, type EnsureWalletResult, type EnvironmentDefaults, type FinalizeRecoveryInput, type FinalizeRecoveryResult, type KycNamespace, NotImplementedYetError, REACT_ADAPTER_VERSION, type ReconstructedSeed, type RecoveryNamespace, type RemoteWalletInfo, type RetryDeployResult, type SendXlmInput, type SendXlmResult, type SessionNamespace, type SettingsNamespace, type TxNamespace, type UnlockedSigningMaterial, type UseBalanceResult, type UseWalletActivityOptions, type UseWalletActivityResult, type UseWalletStatusResult, type WalletActivityItem, type WalletNamespace, type WalletStatus, type WalletStatusValue, type WalletStreamActivityPayload, type WalletStreamBalancePayload, type WalletStreamEventType, type WalletStreamStatusPayload, type YieldNamespace, closeAllWalletSubscriptions, subscribeToWalletEvent, useAccesly, useBalance, useWalletActivity, useWalletStatus };
890
+ export { AcceslyContext, type AcceslyContextValue, type AcceslyHook, AcceslyProvider, type AcceslyProviderProps, type AuthNamespace, type BootstrapWalletInput, type CreateWalletInput, type CreatedWalletInfo, ENVIRONMENT_DEFAULTS, type EnsureWalletResult, type EnvironmentDefaults, type FinalizeRecoveryInput, type FinalizeRecoveryResult, type KycNamespace, NotImplementedYetError, REACT_ADAPTER_VERSION, type ReconstructedSeed, type RecoveryNamespace, type RemoteWalletInfo, type RetryDeployResult, type SendXlmInput, type SendXlmResult, type SessionNamespace, type SettingsNamespace, type TxNamespace, type UnlockedSigningMaterial, type UseBalanceResult, type UseWalletActivityOptions, type UseWalletActivityResult, type UseWalletHistoryOptions, type UseWalletHistoryResult, type UseWalletStatusResult, type WalletActivityItem, type WalletNamespace, type WalletStatus, type WalletStatusValue, type WalletStreamActivityPayload, type WalletStreamBalancePayload, type WalletStreamEventType, type WalletStreamStatusPayload, type YieldNamespace, closeAllWalletSubscriptions, historyClearOptimistic, historyOptimisticPush, subscribeToWalletEvent, useAccesly, useBalance, useWalletActivity, useWalletHistory, useWalletStatus };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Environment, CognitoConfig, AuthClient, SessionStorage, DeviceStore, TelemetrySink, TokenManager, AccesslyEndpoints, AuthStatus, CredentialRecord, EncryptedEnvelope } from '@accesly/core';
1
+ import { Environment, CognitoConfig, AuthClient, SessionStorage, DeviceStore, TelemetrySink, TokenManager, AccesslyEndpoints, AuthStatus, CredentialRecord, EncryptedEnvelope, WalletHistoryItem } from '@accesly/core';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
4
 
@@ -736,12 +736,21 @@ interface WalletStreamBalancePayload {
736
736
  readonly xlm: string;
737
737
  }
738
738
  /**
739
- * Activity emitida por el backend ya **filtrada y tipada** — solo eventos
740
- * relevantes para una wallet de Accesly (rotación de signers + transfers
741
- * IN/OUT de XLM). Otros eventos on-chain (debug, errores host, eventos
742
- * irrelevantes) se descartan en el server.
739
+ * Activity tipada lista para renderizar. Cuatro variants:
740
+ *
741
+ * - `wallet-created` — deploy inicial del Smart Account.
742
+ * - `signer-rotated` — rotación de signer (recovery).
743
+ * - `transfer-in` — recibió XLM.
744
+ * - `transfer-out` — envió XLM.
745
+ *
746
+ * Otros eventos on-chain (signer_added/removed internos, ruido) se descartan.
743
747
  */
744
748
  type WalletActivityItem = {
749
+ readonly type: 'wallet-created';
750
+ readonly txHash: string;
751
+ readonly ledger: number;
752
+ readonly timestamp: string | null;
753
+ } | {
745
754
  readonly type: 'signer-rotated';
746
755
  readonly txHash: string;
747
756
  readonly ledger: number;
@@ -808,6 +817,52 @@ interface UseWalletActivityResult {
808
817
  }
809
818
  declare function useWalletActivity(walletAddress?: string | null, opts?: UseWalletActivityOptions): UseWalletActivityResult;
810
819
 
820
+ /**
821
+ * `useWalletHistory(walletAddress?, opts?)` — historial completo de la wallet
822
+ * pre-decodificado desde Stellar Expert (indexer free, full retention).
823
+ *
824
+ * El backend de Accesly **proxea** las requests a Stellar Expert porque SE
825
+ * bloquea CORS desde browsers (Cloudflare retorna 403 en cross-origin). El
826
+ * proxy hace el call server-side, decodea topics + amounts, y devuelve items
827
+ * tipados listos para renderizar.
828
+ *
829
+ * Features:
830
+ * - Cache en `localStorage` per-wallet con TTL 12h → render instantáneo en
831
+ * reloads + navegación.
832
+ * - Polling cada 30s para nuevos events. Pausa si tab oculta.
833
+ * - `BroadcastChannel` cross-tab para compartir fetches — solo UN tab hace
834
+ * el request, los demás escuchan el resultado vía canal.
835
+ * - Optimistic updates: el SDK inserta el item al instante cuando `tx.send`
836
+ * confirma, sin esperar el indexing de SE (~30-60s típico).
837
+ */
838
+
839
+ /**
840
+ * Inyecta un item de history "optimistically" — útil cuando acabás de hacer
841
+ * `tx.send` y querés que aparezca al instante sin esperar el indexing de SE.
842
+ * El item queda hasta que el próximo fetch confirma que ya está en el feed.
843
+ */
844
+ declare function historyOptimisticPush(walletAddress: string, item: WalletHistoryItem | WalletActivityItem): void;
845
+ declare function historyClearOptimistic(walletAddress: string): void;
846
+ interface UseWalletHistoryOptions {
847
+ /** Intervalo de poll para nuevos events (ms). Default 30s, 0 desactiva. */
848
+ readonly pollIntervalMs?: number;
849
+ /**
850
+ * Cuántos transfers del XLM_SAC scan-ear por fetch. Default 50, max 500
851
+ * (5 paginated calls). En testnet hay millones de transfers globalmente; si
852
+ * tu wallet tiene pocos transfers, sube este número para encontrarlos.
853
+ */
854
+ readonly transferScanLimit?: number;
855
+ }
856
+ interface UseWalletHistoryResult {
857
+ readonly events: readonly WalletHistoryItem[];
858
+ readonly isLoading: boolean;
859
+ readonly error: Error | null;
860
+ readonly hasMore: boolean;
861
+ loadMore(): Promise<void>;
862
+ refresh(): Promise<void>;
863
+ }
864
+ declare function useWalletHistory(walletAddress?: string | null, opts?: UseWalletHistoryOptions): UseWalletHistoryResult;
865
+
811
866
  /**
812
867
  * @accesly/react — React Provider + `useAccesly` hook.
813
868
  *
@@ -832,4 +887,4 @@ declare function useWalletActivity(walletAddress?: string | null, opts?: UseWall
832
887
  */
833
888
  declare const REACT_ADAPTER_VERSION = "0.0.0";
834
889
 
835
- export { AcceslyContext, type AcceslyContextValue, type AcceslyHook, AcceslyProvider, type AcceslyProviderProps, type AuthNamespace, type BootstrapWalletInput, type CreateWalletInput, type CreatedWalletInfo, ENVIRONMENT_DEFAULTS, type EnsureWalletResult, type EnvironmentDefaults, type FinalizeRecoveryInput, type FinalizeRecoveryResult, type KycNamespace, NotImplementedYetError, REACT_ADAPTER_VERSION, type ReconstructedSeed, type RecoveryNamespace, type RemoteWalletInfo, type RetryDeployResult, type SendXlmInput, type SendXlmResult, type SessionNamespace, type SettingsNamespace, type TxNamespace, type UnlockedSigningMaterial, type UseBalanceResult, type UseWalletActivityOptions, type UseWalletActivityResult, type UseWalletStatusResult, type WalletActivityItem, type WalletNamespace, type WalletStatus, type WalletStatusValue, type WalletStreamActivityPayload, type WalletStreamBalancePayload, type WalletStreamEventType, type WalletStreamStatusPayload, type YieldNamespace, closeAllWalletSubscriptions, subscribeToWalletEvent, useAccesly, useBalance, useWalletActivity, useWalletStatus };
890
+ export { AcceslyContext, type AcceslyContextValue, type AcceslyHook, AcceslyProvider, type AcceslyProviderProps, type AuthNamespace, type BootstrapWalletInput, type CreateWalletInput, type CreatedWalletInfo, ENVIRONMENT_DEFAULTS, type EnsureWalletResult, type EnvironmentDefaults, type FinalizeRecoveryInput, type FinalizeRecoveryResult, type KycNamespace, NotImplementedYetError, REACT_ADAPTER_VERSION, type ReconstructedSeed, type RecoveryNamespace, type RemoteWalletInfo, type RetryDeployResult, type SendXlmInput, type SendXlmResult, type SessionNamespace, type SettingsNamespace, type TxNamespace, type UnlockedSigningMaterial, type UseBalanceResult, type UseWalletActivityOptions, type UseWalletActivityResult, type UseWalletHistoryOptions, type UseWalletHistoryResult, type UseWalletStatusResult, type WalletActivityItem, type WalletNamespace, type WalletStatus, type WalletStatusValue, type WalletStreamActivityPayload, type WalletStreamBalancePayload, type WalletStreamEventType, type WalletStreamStatusPayload, type YieldNamespace, closeAllWalletSubscriptions, historyClearOptimistic, historyOptimisticPush, subscribeToWalletEvent, useAccesly, useBalance, useWalletActivity, useWalletHistory, useWalletStatus };