@pear-protocol/symmio-client 0.1.1 → 0.1.3

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.
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as viem from 'viem';
2
3
  import { Address, Hex, PublicClient, WalletClient } from 'viem';
3
4
  import * as _pear_protocol_symm_core from '@pear-protocol/symm-core';
4
5
  import { SymmSDK, OpenBasketPositionRequest, ClosePositionRequest, CancelOpenRequest, UpdatePositionRequest, SetTpslRequest, CancelTpslRequest } from '@pear-protocol/symm-core';
@@ -17,8 +18,6 @@ type SymmioSDKConfig = {
17
18
  signatureStoreAddress?: Address;
18
19
  muonBaseUrls?: string[];
19
20
  muonAppName?: string;
20
- /** Base URL for the hedger API (required for instant trading). */
21
- hedgerBaseUrl?: string;
22
21
  };
23
22
  declare enum PositionType {
24
23
  LONG = 0,
@@ -287,7 +286,6 @@ declare class SymmioSDK {
287
286
  private _collateral;
288
287
  private _clearingHouse?;
289
288
  private _signatureStore?;
290
- private _hedgerBaseUrl?;
291
289
  constructor(options: {
292
290
  chainId: number;
293
291
  publicClient: PublicClient;
@@ -375,7 +373,6 @@ declare class SymmioSDK {
375
373
  grantRole: (role: Hex, grantee: Address) => Promise<`0x${string}`>;
376
374
  revokeRole: (role: Hex, revokee: Address) => Promise<`0x${string}`>;
377
375
  };
378
- private _requireHedgerUrl;
379
376
  get instant(): {
380
377
  /** Creates a SIWE message for instant trading authentication. */
381
378
  createSiweMessage: (params: CreateSiweMessageParams) => SiweMessageResult;
@@ -401,9 +398,10 @@ type SymmContextValue = {
401
398
  symmCoreClient: SymmSDK | null;
402
399
  chainId: number;
403
400
  address?: `0x${string}`;
401
+ accessToken: string | null;
404
402
  authToken: string | null;
405
403
  isReady: boolean;
406
- refreshAuth: () => Promise<string | null>;
404
+ refreshAuth: (accountAddress?: Address) => Promise<string | null>;
407
405
  };
408
406
  declare function useSymmContext(): SymmContextValue;
409
407
 
@@ -412,9 +410,10 @@ declare function useSymmioClient(): SymmioSDK | null;
412
410
  declare function useSymmCoreClient(): SymmSDK | null;
413
411
 
414
412
  declare function useSymmAuth(): {
413
+ accessToken: string | null;
415
414
  authToken: string | null;
416
415
  isAuthenticated: boolean;
417
- refresh: () => Promise<string | null>;
416
+ refresh: (accountAddress?: viem.Address) => Promise<string | null>;
418
417
  };
419
418
 
420
419
  declare function useSymmAccounts(userAddress?: Address): {
@@ -599,6 +598,125 @@ declare function useSymmWs(params: {
599
598
  isConnected: boolean;
600
599
  };
601
600
 
601
+ interface SymmChartSelectionInput {
602
+ longSymbol: string | null;
603
+ shortSymbol: string | null;
604
+ longWeight?: number;
605
+ shortWeight?: number;
606
+ longTokens?: SymmChartTokenSelection[];
607
+ shortTokens?: SymmChartTokenSelection[];
608
+ }
609
+ interface SymmChartTokenSelection {
610
+ symbol: string;
611
+ weight: number;
612
+ }
613
+ interface SymmChartSelection {
614
+ longTokens: SymmChartTokenSelection[];
615
+ shortTokens: SymmChartTokenSelection[];
616
+ isSingleSided: boolean;
617
+ activeSide: 'long' | 'short' | null;
618
+ activeTokenSymbol?: string;
619
+ pairLabel: string;
620
+ selectedSymbols: string[];
621
+ }
622
+ /**
623
+ * SYMM chart selection hook. Accepts selection input as parameters
624
+ * rather than importing app store state, keeping the SDK app-agnostic.
625
+ */
626
+ declare function useSymmChartSelection(input: SymmChartSelectionInput): SymmChartSelection;
627
+
628
+ interface SymmTokenMetadata {
629
+ currentPrice: number;
630
+ prevDayPrice: number;
631
+ priceChange24h: number;
632
+ priceChange24hPercent: number;
633
+ netFunding: number;
634
+ markPrice: number;
635
+ }
636
+ interface UseSymmTokenSelectionMetadataReturn {
637
+ isLoading: boolean;
638
+ isPriceDataReady: boolean;
639
+ isUnsupported: boolean;
640
+ unsupportedSymbols: string[];
641
+ unavailableReason: string | null;
642
+ longTokensMetadata: Record<string, SymmTokenMetadata | null>;
643
+ shortTokensMetadata: Record<string, SymmTokenMetadata | null>;
644
+ weightedRatio: number;
645
+ weightedRatio24h: number;
646
+ priceRatio: number;
647
+ priceRatio24h: number;
648
+ sumNetFunding: number;
649
+ }
650
+ /**
651
+ * Fetches Binance market data for selected SYMM chart tokens and derives
652
+ * chart header metrics (price ratio, weighted ratio, etc.).
653
+ */
654
+ declare function useSymmTokenSelectionMetadata(selection: SymmChartSelection): UseSymmTokenSelectionMetadataReturn;
655
+
656
+ /**
657
+ * Candle interval type matching the chart system.
658
+ * Binance USD-M Futures uses the same string format.
659
+ */
660
+ type CandleInterval = '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M';
661
+
662
+ interface ChartCandleData {
663
+ s?: string;
664
+ t: number;
665
+ T: number;
666
+ o: number;
667
+ c: number;
668
+ h: number;
669
+ l: number;
670
+ }
671
+ type RealtimeBar = {
672
+ time: number;
673
+ open: number;
674
+ high: number;
675
+ low: number;
676
+ close: number;
677
+ volume?: number;
678
+ };
679
+ type RealtimeBarsCallback = (bar: RealtimeBar) => void;
680
+ interface UseSymmChartCandlesReturn {
681
+ fetchBasketCandles: (start: number, end: number, interval: CandleInterval) => Promise<ChartCandleData[]>;
682
+ fetchPerformanceCandles: (start: number, end: number, interval: CandleInterval, symbol: string) => Promise<ChartCandleData[]>;
683
+ fetchOverallPerformanceCandles: (start: number, end: number, interval: CandleInterval) => Promise<ChartCandleData[]>;
684
+ addRealtimeListener: (cb: RealtimeBarsCallback) => string;
685
+ removeRealtimeListener: (id: string) => void;
686
+ getEffectiveDataBoundary: (interval: CandleInterval) => number | null;
687
+ isLoading: boolean;
688
+ isUnsupported: boolean;
689
+ unsupportedSymbols: string[];
690
+ unavailableReason: string | null;
691
+ }
692
+ /**
693
+ * SYMM chart candles hook backed by Binance mark-price klines.
694
+ * Returns the same interface as the Hyperliquid useBasketCandles hook.
695
+ *
696
+ * Realtime updates are provided via Binance kline WebSocket streams.
697
+ * When listeners are registered, the hook subscribes to kline streams
698
+ * for all selected symbols and emits computed basket bars.
699
+ */
700
+ declare function useSymmChartCandles(selection: SymmChartSelection): UseSymmChartCandlesReturn;
701
+
702
+ interface SymmPerformanceOverlay {
703
+ id: string;
704
+ symbol: string;
705
+ label: string;
706
+ color: string;
707
+ enabled: boolean;
708
+ type: 'asset' | 'portfolio';
709
+ weight?: number;
710
+ }
711
+ /**
712
+ * SYMM performance overlay hook. Generates overlay definitions
713
+ * for each selected SYMM leg, matching the Hyperliquid overlay contract.
714
+ */
715
+ declare function useSymmPerformanceOverlays(selection: SymmChartSelection): {
716
+ overlays: SymmPerformanceOverlay[];
717
+ generateOverlaySymbols: () => string[];
718
+ };
719
+
602
720
  declare const symmKeys: {
603
721
  all: readonly ["symm"];
604
722
  accounts: (address?: Address) => readonly ["symm", "accounts", `0x${string}` | undefined];
@@ -620,4 +738,4 @@ declare const symmKeys: {
620
738
 
621
739
  declare function getSymmErrorMessage(error: unknown): string;
622
740
 
623
- export { type SymmContextValue, SymmProvider, type SymmProviderProps, getSymmErrorMessage, symmKeys, useSymmAccounts, useSymmApproval, useSymmAuth, useSymmBalances, useSymmCollateral, useSymmContext, useSymmCoreClient, useSymmDeposit, useSymmFunding, useSymmMarkets, useSymmNotifications, useSymmOpenOrders, useSymmPortfolio, useSymmPositions, useSymmSignature, useSymmTpsl, useSymmTrade, useSymmTradeHistory, useSymmTwap, useSymmWithdraw, useSymmWs, useSymmioClient };
741
+ export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmPerformanceOverlay, SymmProvider, type SymmProviderProps, type SymmTokenMetadata, type UseSymmChartCandlesReturn, type UseSymmTokenSelectionMetadataReturn, getSymmErrorMessage, symmKeys, useSymmAccounts, useSymmApproval, useSymmAuth, useSymmBalances, useSymmChartCandles, useSymmChartSelection, useSymmCollateral, useSymmContext, useSymmCoreClient, useSymmDeposit, useSymmFunding, useSymmMarkets, useSymmNotifications, useSymmOpenOrders, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSignature, useSymmTokenSelectionMetadata, useSymmTpsl, useSymmTrade, useSymmTradeHistory, useSymmTwap, useSymmWithdraw, useSymmWs, useSymmioClient };
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as viem from 'viem';
2
3
  import { Address, Hex, PublicClient, WalletClient } from 'viem';
3
4
  import * as _pear_protocol_symm_core from '@pear-protocol/symm-core';
4
5
  import { SymmSDK, OpenBasketPositionRequest, ClosePositionRequest, CancelOpenRequest, UpdatePositionRequest, SetTpslRequest, CancelTpslRequest } from '@pear-protocol/symm-core';
@@ -17,8 +18,6 @@ type SymmioSDKConfig = {
17
18
  signatureStoreAddress?: Address;
18
19
  muonBaseUrls?: string[];
19
20
  muonAppName?: string;
20
- /** Base URL for the hedger API (required for instant trading). */
21
- hedgerBaseUrl?: string;
22
21
  };
23
22
  declare enum PositionType {
24
23
  LONG = 0,
@@ -287,7 +286,6 @@ declare class SymmioSDK {
287
286
  private _collateral;
288
287
  private _clearingHouse?;
289
288
  private _signatureStore?;
290
- private _hedgerBaseUrl?;
291
289
  constructor(options: {
292
290
  chainId: number;
293
291
  publicClient: PublicClient;
@@ -375,7 +373,6 @@ declare class SymmioSDK {
375
373
  grantRole: (role: Hex, grantee: Address) => Promise<`0x${string}`>;
376
374
  revokeRole: (role: Hex, revokee: Address) => Promise<`0x${string}`>;
377
375
  };
378
- private _requireHedgerUrl;
379
376
  get instant(): {
380
377
  /** Creates a SIWE message for instant trading authentication. */
381
378
  createSiweMessage: (params: CreateSiweMessageParams) => SiweMessageResult;
@@ -401,9 +398,10 @@ type SymmContextValue = {
401
398
  symmCoreClient: SymmSDK | null;
402
399
  chainId: number;
403
400
  address?: `0x${string}`;
401
+ accessToken: string | null;
404
402
  authToken: string | null;
405
403
  isReady: boolean;
406
- refreshAuth: () => Promise<string | null>;
404
+ refreshAuth: (accountAddress?: Address) => Promise<string | null>;
407
405
  };
408
406
  declare function useSymmContext(): SymmContextValue;
409
407
 
@@ -412,9 +410,10 @@ declare function useSymmioClient(): SymmioSDK | null;
412
410
  declare function useSymmCoreClient(): SymmSDK | null;
413
411
 
414
412
  declare function useSymmAuth(): {
413
+ accessToken: string | null;
415
414
  authToken: string | null;
416
415
  isAuthenticated: boolean;
417
- refresh: () => Promise<string | null>;
416
+ refresh: (accountAddress?: viem.Address) => Promise<string | null>;
418
417
  };
419
418
 
420
419
  declare function useSymmAccounts(userAddress?: Address): {
@@ -599,6 +598,125 @@ declare function useSymmWs(params: {
599
598
  isConnected: boolean;
600
599
  };
601
600
 
601
+ interface SymmChartSelectionInput {
602
+ longSymbol: string | null;
603
+ shortSymbol: string | null;
604
+ longWeight?: number;
605
+ shortWeight?: number;
606
+ longTokens?: SymmChartTokenSelection[];
607
+ shortTokens?: SymmChartTokenSelection[];
608
+ }
609
+ interface SymmChartTokenSelection {
610
+ symbol: string;
611
+ weight: number;
612
+ }
613
+ interface SymmChartSelection {
614
+ longTokens: SymmChartTokenSelection[];
615
+ shortTokens: SymmChartTokenSelection[];
616
+ isSingleSided: boolean;
617
+ activeSide: 'long' | 'short' | null;
618
+ activeTokenSymbol?: string;
619
+ pairLabel: string;
620
+ selectedSymbols: string[];
621
+ }
622
+ /**
623
+ * SYMM chart selection hook. Accepts selection input as parameters
624
+ * rather than importing app store state, keeping the SDK app-agnostic.
625
+ */
626
+ declare function useSymmChartSelection(input: SymmChartSelectionInput): SymmChartSelection;
627
+
628
+ interface SymmTokenMetadata {
629
+ currentPrice: number;
630
+ prevDayPrice: number;
631
+ priceChange24h: number;
632
+ priceChange24hPercent: number;
633
+ netFunding: number;
634
+ markPrice: number;
635
+ }
636
+ interface UseSymmTokenSelectionMetadataReturn {
637
+ isLoading: boolean;
638
+ isPriceDataReady: boolean;
639
+ isUnsupported: boolean;
640
+ unsupportedSymbols: string[];
641
+ unavailableReason: string | null;
642
+ longTokensMetadata: Record<string, SymmTokenMetadata | null>;
643
+ shortTokensMetadata: Record<string, SymmTokenMetadata | null>;
644
+ weightedRatio: number;
645
+ weightedRatio24h: number;
646
+ priceRatio: number;
647
+ priceRatio24h: number;
648
+ sumNetFunding: number;
649
+ }
650
+ /**
651
+ * Fetches Binance market data for selected SYMM chart tokens and derives
652
+ * chart header metrics (price ratio, weighted ratio, etc.).
653
+ */
654
+ declare function useSymmTokenSelectionMetadata(selection: SymmChartSelection): UseSymmTokenSelectionMetadataReturn;
655
+
656
+ /**
657
+ * Candle interval type matching the chart system.
658
+ * Binance USD-M Futures uses the same string format.
659
+ */
660
+ type CandleInterval = '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M';
661
+
662
+ interface ChartCandleData {
663
+ s?: string;
664
+ t: number;
665
+ T: number;
666
+ o: number;
667
+ c: number;
668
+ h: number;
669
+ l: number;
670
+ }
671
+ type RealtimeBar = {
672
+ time: number;
673
+ open: number;
674
+ high: number;
675
+ low: number;
676
+ close: number;
677
+ volume?: number;
678
+ };
679
+ type RealtimeBarsCallback = (bar: RealtimeBar) => void;
680
+ interface UseSymmChartCandlesReturn {
681
+ fetchBasketCandles: (start: number, end: number, interval: CandleInterval) => Promise<ChartCandleData[]>;
682
+ fetchPerformanceCandles: (start: number, end: number, interval: CandleInterval, symbol: string) => Promise<ChartCandleData[]>;
683
+ fetchOverallPerformanceCandles: (start: number, end: number, interval: CandleInterval) => Promise<ChartCandleData[]>;
684
+ addRealtimeListener: (cb: RealtimeBarsCallback) => string;
685
+ removeRealtimeListener: (id: string) => void;
686
+ getEffectiveDataBoundary: (interval: CandleInterval) => number | null;
687
+ isLoading: boolean;
688
+ isUnsupported: boolean;
689
+ unsupportedSymbols: string[];
690
+ unavailableReason: string | null;
691
+ }
692
+ /**
693
+ * SYMM chart candles hook backed by Binance mark-price klines.
694
+ * Returns the same interface as the Hyperliquid useBasketCandles hook.
695
+ *
696
+ * Realtime updates are provided via Binance kline WebSocket streams.
697
+ * When listeners are registered, the hook subscribes to kline streams
698
+ * for all selected symbols and emits computed basket bars.
699
+ */
700
+ declare function useSymmChartCandles(selection: SymmChartSelection): UseSymmChartCandlesReturn;
701
+
702
+ interface SymmPerformanceOverlay {
703
+ id: string;
704
+ symbol: string;
705
+ label: string;
706
+ color: string;
707
+ enabled: boolean;
708
+ type: 'asset' | 'portfolio';
709
+ weight?: number;
710
+ }
711
+ /**
712
+ * SYMM performance overlay hook. Generates overlay definitions
713
+ * for each selected SYMM leg, matching the Hyperliquid overlay contract.
714
+ */
715
+ declare function useSymmPerformanceOverlays(selection: SymmChartSelection): {
716
+ overlays: SymmPerformanceOverlay[];
717
+ generateOverlaySymbols: () => string[];
718
+ };
719
+
602
720
  declare const symmKeys: {
603
721
  all: readonly ["symm"];
604
722
  accounts: (address?: Address) => readonly ["symm", "accounts", `0x${string}` | undefined];
@@ -620,4 +738,4 @@ declare const symmKeys: {
620
738
 
621
739
  declare function getSymmErrorMessage(error: unknown): string;
622
740
 
623
- export { type SymmContextValue, SymmProvider, type SymmProviderProps, getSymmErrorMessage, symmKeys, useSymmAccounts, useSymmApproval, useSymmAuth, useSymmBalances, useSymmCollateral, useSymmContext, useSymmCoreClient, useSymmDeposit, useSymmFunding, useSymmMarkets, useSymmNotifications, useSymmOpenOrders, useSymmPortfolio, useSymmPositions, useSymmSignature, useSymmTpsl, useSymmTrade, useSymmTradeHistory, useSymmTwap, useSymmWithdraw, useSymmWs, useSymmioClient };
741
+ export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmPerformanceOverlay, SymmProvider, type SymmProviderProps, type SymmTokenMetadata, type UseSymmChartCandlesReturn, type UseSymmTokenSelectionMetadataReturn, getSymmErrorMessage, symmKeys, useSymmAccounts, useSymmApproval, useSymmAuth, useSymmBalances, useSymmChartCandles, useSymmChartSelection, useSymmCollateral, useSymmContext, useSymmCoreClient, useSymmDeposit, useSymmFunding, useSymmMarkets, useSymmNotifications, useSymmOpenOrders, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSignature, useSymmTokenSelectionMetadata, useSymmTpsl, useSymmTrade, useSymmTradeHistory, useSymmTwap, useSymmWithdraw, useSymmWs, useSymmioClient };