@pear-protocol/hyperliquid-sdk 0.0.60-beta.1 → 0.0.60-beta.10

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.
@@ -9,4 +9,6 @@ export declare function useAuth(): {
9
9
  readonly loginWithPrivyToken: (address: string, appId: string, privyAccessToken: string) => Promise<void>;
10
10
  readonly refreshTokens: () => Promise<import("../types").RefreshTokenResponse>;
11
11
  readonly logout: () => Promise<void>;
12
+ readonly setAddress: (address: string | null) => void;
13
+ readonly address: string | null;
12
14
  };
package/dist/index.d.ts CHANGED
@@ -9,8 +9,6 @@ interface PearHyperliquidContextType {
9
9
  lastError: string | null;
10
10
  nativeIsConnected: boolean;
11
11
  nativeLastError: string | null;
12
- setAddress: (address: string) => void;
13
- address: string | null;
14
12
  }
15
13
  interface PearHyperliquidProviderProps {
16
14
  children: ReactNode;
@@ -1128,6 +1126,8 @@ declare function useAuth(): {
1128
1126
  readonly loginWithPrivyToken: (address: string, appId: string, privyAccessToken: string) => Promise<void>;
1129
1127
  readonly refreshTokens: () => Promise<RefreshTokenResponse>;
1130
1128
  readonly logout: () => Promise<void>;
1129
+ readonly setAddress: (address: string | null) => void;
1130
+ readonly address: string | null;
1131
1131
  };
1132
1132
 
1133
1133
  interface UseHyperliquidWebSocketProps {
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ const useUserData = create((set) => ({
55
55
  accessToken: null,
56
56
  refreshToken: null,
57
57
  isAuthenticated: false,
58
+ isReady: false,
58
59
  address: null,
59
60
  tradeHistories: null,
60
61
  rawOpenPositions: null,
@@ -66,17 +67,17 @@ const useUserData = create((set) => ({
66
67
  setAccessToken: (token) => set({ accessToken: token }),
67
68
  setRefreshToken: (token) => set({ refreshToken: token }),
68
69
  setIsAuthenticated: (value) => set({ isAuthenticated: value }),
69
- setAddress: (address) => set(() => {
70
- if (typeof window !== "undefined") {
71
- if (address) {
72
- window.localStorage.setItem("address", address);
73
- }
74
- else {
75
- window.localStorage.removeItem("address");
76
- }
77
- }
78
- return { address };
79
- }),
70
+ setIsReady: (value) => set({ isReady: value }),
71
+ setAddress: (address) => {
72
+ // if (typeof window !== "undefined") {
73
+ // if (address) {
74
+ // window.localStorage.setItem("address", address);
75
+ // } else {
76
+ // window.localStorage.removeItem("address");
77
+ // }
78
+ // }
79
+ set({ address });
80
+ },
80
81
  setTradeHistories: (value) => set({ tradeHistories: value }),
81
82
  setRawOpenPositions: (value) => set({ rawOpenPositions: value }),
82
83
  setOpenOrders: (value) => set({ openOrders: value }),
@@ -87,6 +88,7 @@ const useUserData = create((set) => ({
87
88
  accessToken: null,
88
89
  refreshToken: null,
89
90
  isAuthenticated: false,
91
+ isReady: false,
90
92
  address: null,
91
93
  tradeHistories: null,
92
94
  rawOpenPositions: null,
@@ -7029,56 +7031,47 @@ async function logout(baseUrl, refreshTokenVal) {
7029
7031
  function useAuth() {
7030
7032
  const context = useContext(PearHyperliquidContext);
7031
7033
  if (!context) {
7032
- throw new Error("usePortfolio must be used within a PearHyperliquidProvider");
7034
+ throw new Error("useAuth must be used within a PearHyperliquidProvider");
7033
7035
  }
7034
7036
  const { apiBaseUrl, clientId } = context;
7035
- const [isReady, setIsReady] = useState(false);
7036
7037
  const accessToken = useUserData((s) => s.accessToken);
7037
7038
  const refreshToken$1 = useUserData((s) => s.refreshToken);
7039
+ const isReady = useUserData((s) => s.isReady);
7040
+ const isAuthenticated = useUserData((s) => s.isAuthenticated);
7041
+ const address = useUserData((s) => s.address);
7038
7042
  const setAccessToken = useUserData((s) => s.setAccessToken);
7039
7043
  const setRefreshToken = useUserData((s) => s.setRefreshToken);
7040
- const isAuthenticated = useUserData((s) => s.isAuthenticated);
7044
+ const setIsReady = useUserData((s) => s.setIsReady);
7041
7045
  const setIsAuthenticated = useUserData((s) => s.setIsAuthenticated);
7042
- const address = useUserData((s) => s.address);
7043
7046
  const setAddress = useUserData((s) => s.setAddress);
7047
+ console.log("sdk", { sdkAddress: address });
7044
7048
  useEffect(() => {
7045
7049
  if (typeof window == "undefined") {
7046
7050
  return;
7047
7051
  }
7048
- // Get the current address from state if it exists
7049
- const currentAddress = address;
7050
- if (currentAddress) {
7052
+ if (address) {
7051
7053
  // If we already have an address in state, use it to load the session
7052
- const accessTokenKey = `${currentAddress}_accessToken`;
7053
- const refreshTokenKey = `${currentAddress}_refreshToken`;
7054
+ const accessTokenKey = `${address}_accessToken`;
7055
+ const refreshTokenKey = `${address}_refreshToken`;
7054
7056
  const storedAccessToken = localStorage.getItem(accessTokenKey);
7055
7057
  const storedRefreshToken = localStorage.getItem(refreshTokenKey);
7058
+ console.log({ storedAccessToken, storedRefreshToken });
7056
7059
  if (storedAccessToken && storedRefreshToken) {
7057
7060
  setAccessToken(storedAccessToken);
7058
7061
  setRefreshToken(storedRefreshToken);
7059
7062
  setIsAuthenticated(true);
7060
- setIsReady(true);
7061
- return;
7062
7063
  }
7063
7064
  }
7064
- }, [
7065
- setAccessToken,
7066
- setRefreshToken,
7067
- setIsAuthenticated,
7068
- setAddress,
7069
- address,
7070
- ]);
7065
+ setIsReady(true);
7066
+ }, [address]);
7071
7067
  useEffect(() => {
7072
7068
  const cleanup = addAuthInterceptors({
7073
7069
  apiBaseUrl,
7074
7070
  getAccessToken: () => {
7075
7071
  if (typeof window === "undefined")
7076
7072
  return null;
7077
- const currentAddress = useUserData.getState().address;
7078
- if (!currentAddress)
7079
- return null;
7080
- const accessTokenKey = `${currentAddress}_accessToken`;
7081
- return localStorage.getItem(accessTokenKey);
7073
+ // Read from Zustand state as single source of truth
7074
+ return useUserData.getState().accessToken;
7082
7075
  },
7083
7076
  refreshTokens: async () => {
7084
7077
  const data = await refreshTokens();
@@ -7110,7 +7103,7 @@ function useAuth() {
7110
7103
  window.localStorage.setItem(refreshTokenKey, data.refreshToken);
7111
7104
  setAccessToken(data.accessToken);
7112
7105
  setRefreshToken(data.refreshToken);
7113
- setAddress(address);
7106
+ // setAddress(address);
7114
7107
  setIsAuthenticated(true);
7115
7108
  }
7116
7109
  catch (e) {
@@ -7131,7 +7124,7 @@ function useAuth() {
7131
7124
  window.localStorage.setItem(refreshTokenKey, data.refreshToken);
7132
7125
  setAccessToken(data.accessToken);
7133
7126
  setRefreshToken(data.refreshToken);
7134
- setAddress(address);
7127
+ // setAddress(address);
7135
7128
  setIsAuthenticated(true);
7136
7129
  }
7137
7130
  catch (e) {
@@ -7173,7 +7166,7 @@ function useAuth() {
7173
7166
  }
7174
7167
  setAccessToken(null);
7175
7168
  setRefreshToken(null);
7176
- setAddress(null);
7169
+ // setAddress(null);
7177
7170
  setIsAuthenticated(false);
7178
7171
  }
7179
7172
  return {
@@ -7186,6 +7179,8 @@ function useAuth() {
7186
7179
  loginWithPrivyToken,
7187
7180
  refreshTokens,
7188
7181
  logout: logout$1,
7182
+ setAddress,
7183
+ address,
7189
7184
  };
7190
7185
  }
7191
7186
 
@@ -7195,7 +7190,6 @@ const PearHyperliquidContext = createContext(undefined);
7195
7190
  */
7196
7191
  const PearHyperliquidProvider = ({ children, apiBaseUrl = "https://hl-v2.pearprotocol.io", clientId = "PEARPROTOCOLUI", wsUrl = "wss://hl-v2.pearprotocol.io/ws", }) => {
7197
7192
  const address = useUserData((s) => s.address);
7198
- const setAddress = useUserData((s) => s.setAddress);
7199
7193
  const perpsMetaAssets = useHyperliquidData((state) => state.perpMetaAssets);
7200
7194
  const setPerpMetaAssets = useHyperliquidData((state) => state.setPerpMetaAssets);
7201
7195
  const setHip3DisplayToFull = useHyperliquidData((state) => state.setHip3DisplayToFull);
@@ -7254,14 +7248,9 @@ const PearHyperliquidProvider = ({ children, apiBaseUrl = "https://hl-v2.pearpro
7254
7248
  // HyperLiquid native WebSocket state
7255
7249
  nativeIsConnected,
7256
7250
  nativeLastError,
7257
- // Address utilities
7258
- address,
7259
- setAddress,
7260
7251
  }), [
7261
7252
  apiBaseUrl,
7262
7253
  wsUrl,
7263
- address,
7264
- setAddress,
7265
7254
  isConnected,
7266
7255
  lastError,
7267
7256
  nativeIsConnected,
@@ -7,8 +7,6 @@ export interface PearHyperliquidContextType {
7
7
  lastError: string | null;
8
8
  nativeIsConnected: boolean;
9
9
  nativeLastError: string | null;
10
- setAddress: (address: string) => void;
11
- address: string | null;
12
10
  }
13
11
  export declare const PearHyperliquidContext: React.Context<PearHyperliquidContextType | undefined>;
14
12
  interface PearHyperliquidProviderProps {
@@ -3,6 +3,7 @@ interface UserDataState {
3
3
  accessToken: string | null;
4
4
  refreshToken: string | null;
5
5
  isAuthenticated: boolean;
6
+ isReady: boolean;
6
7
  address: string | null;
7
8
  tradeHistories: TradeHistoryDataDto[] | null;
8
9
  rawOpenPositions: RawPositionDto[] | null;
@@ -14,6 +15,7 @@ interface UserDataState {
14
15
  setAccessToken: (token: string | null) => void;
15
16
  setRefreshToken: (token: string | null) => void;
16
17
  setIsAuthenticated: (value: boolean) => void;
18
+ setIsReady: (value: boolean) => void;
17
19
  setAddress: (address: string | null) => void;
18
20
  setTradeHistories: (value: TradeHistoryDataDto[] | null) => void;
19
21
  setRawOpenPositions: (value: RawPositionDto[] | null) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/hyperliquid-sdk",
3
- "version": "0.0.60-beta.1",
3
+ "version": "0.0.60-beta.10",
4
4
  "description": "React SDK for Pear Protocol Hyperliquid API integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",