import { AnyAction } from 'redux'; export type AnalyticsWithMiddleware = SegmentAnalytics.AnalyticsJS & { addSourceMiddleware?: (middleware: MiddlewareFunction) => void; _walletMiddlewareRegistered?: boolean; }; export interface AnalyticsWindow extends Window { analytics: AnalyticsWithMiddleware; } type SegmentPayload = { type: 'track' | 'identify' | 'page'; obj: { properties?: Record; traits?: Record; context?: Record; }; }; export type MiddlewareFunction = ({ payload, next }: { payload: SegmentPayload; next: (payload: SegmentPayload) => void; }) => void; export type ActionType = AnyAction['type']; export type EventName = string | ((action: AnyAction) => string); export type GetPayload = (action: AnyAction) => { [key: string]: any; } | string; export type TrackPayload = string | undefined | Record; export type TransformPayload = (payload: TrackPayload) => TrackPayload; export interface AnalyticsAction { actionType: ActionType; eventName?: EventName; getPayload?: GetPayload; } export interface WindowWithWallets extends Window { ethereum?: any & { isRabby?: boolean; isMetaMask?: boolean; isCoinbaseWallet?: boolean; }; solana?: { isPhantom?: boolean; isMathWallet?: boolean; }; sollet?: any; braveSolana?: { isBraveWallet?: boolean; }; solong?: any; exodus?: { solana?: any; }; glowSolana?: any; coin98?: any; coinbaseSolana?: any; clover_solana?: any; Slope?: any; huobiWallet?: { isHuobiWallet?: boolean; }; nightly?: { solana?: any; }; } export {};