import { OrderType, OrderTimeInForce, SelfTradePreventionType, OrderSide, CancelOrdersRequest, OrderTwapConfig, AccountDataApi, ExchangeApi, MarketStreamMessage, AccountStreamMessage, LoginResponse, RewardsApi, UpdateAccountPreferenceRequest, AccountGroupIdPatch } from './api.js'; import type { IBluefinSigner } from './request-signer.js'; import { WebSocket } from 'ws'; import { Transaction as TransactionBlock } from '@mysten/sui/transactions'; import type { ClientWithCoreApi } from '@mysten/sui/client'; import type { TxBuilder } from '@firefly-exchange/library-sui/v3'; export interface OrderParams { clientOrderId: string; type: OrderType; symbol: string; priceE9: string; quantityE9: string; side: OrderSide; leverageE9: string; isIsolated: boolean; expiresAtMillis: number; reduceOnly?: boolean; postOnly?: boolean; timeInForce?: OrderTimeInForce; triggerPriceE9?: string; selfTradePreventionType?: SelfTradePreventionType; twapConfig?: OrderTwapConfig; signerAddress?: string; } export interface ClaimPayload { target: string; receiver: string; amount: string; expiry: string; nonce: string; type: number; } export interface BatchClaimParams { sigPayload: ClaimPayload; signature: string; rewardType: 'Blue' | 'Sui' | 'Wal' | string; } export interface BluefinProSdkOptions { currentAccountAddress?: string; refreshToken?: string; refreshTokenValidForSeconds?: number; disableLoginPromptOnLogout?: boolean; currentTimeMs?: number; onLogout?: () => void; onAccessTokenUpdate?: (accessToken: string) => void; authHost?: string; apiHost?: string; tradeHost?: string; marketWsHost?: string; accountWsHost?: string; } export interface InitializeOptions { refreshTokenValidForSeconds?: number; readOnly?: boolean; } export declare class BluefinProSdk { private readonly bfSigner; private environment; private static readonly TOKEN_REFRESH_THRESHOLD_PERCENTAGE; private readonly configs; readonly exchangeDataApi: ExchangeApi; readonly rewardsDataApi: RewardsApi; readonly accountDataApi: AccountDataApi; private readonly tradeApi; private readonly authApi; private initializeOptions; private tokenResponse; private tokenSetAtSeconds; private isConnected; private updateTokenTimeout; private contractsConfig; private assets; private txBuilder; private currentAccountAddress; private disableLoginPromptOnLogout; private onLogout?; private onAccessTokenUpdate?; private isRefreshing; private refreshTokenPromise; private visibilityChangeHandler?; private onlineHandler?; private offlineHandler?; private timeOffsetMs; private suiClient; constructor(bfSigner: IBluefinSigner, environment: "mainnet" | "testnet" | "devnet" | undefined, suiClient: ClientWithCoreApi, opts?: BluefinProSdkOptions); createWallet(): { privateKey: string; publicAddress: string; }; getTokenResponse(): LoginResponse | null; private generateSalt; private getCurrentTimeMs; updateCurrentTimeMs(currentTimeMs: number): void; private isRefreshTokenValid; private isAccessTokenExpired; private initializeTxBuilder; initialize(options?: InitializeOptions): Promise; private setContractsConfig; private loginAndUpdateToken; private scheduleTokenRefresh; private setupVisibilityChangeListener; private setupNetworkChangeListener; private handleVisible; private handleOnline; private handleOffline; private login; getAccessToken(): Promise; getOpenOrders(symbol?: string): Promise>; getStandbyOrders(symbol?: string): Promise>; updateLeverage(symbol: string, leverageE9: string): Promise>; createOrder(params: OrderParams): Promise; cancelOrder(cancelOrdersRequest: CancelOrdersRequest): Promise>; cancelStandbyOrder(cancelOrdersRequest: CancelOrdersRequest): Promise>; withdraw(assetSymbol: string, amountE9: string): Promise; authorizeAccount(accountAddress: string, alias?: string): Promise; deauthorizeAccount(accountAddress: string): Promise; adjustIsolatedMargin(symbol: string, amountE9: string, add: boolean): Promise; getAccountPreferences(): Promise>; updateAccountPreferences(updateAccountPreferenceRequest: UpdateAccountPreferenceRequest): Promise>; updateAccountGroupId(updateAccountGroupIdRequest: AccountGroupIdPatch): Promise>; deposit(amountE9: string, accountAddress?: string, args?: { sponsored?: boolean; fallbackToExecuteTx?: boolean; }): Promise; /** * Batch claim rewards on-chain using RewardsDistributorInteractor * @param payload Array of claim payloads with signatures * @returns Transaction response */ batchClaimRewards(payload: BatchClaimParams[]): Promise; refreshToken(force?: boolean): Promise; private performTokenRefresh; createAccountDataStreamListener(handler: (data: AccountStreamMessage) => Promise): Promise; createMarketDataStreamListener(handler: (data: MarketStreamMessage) => Promise): Promise; logout(): Promise; dispose(): Promise; /** * @description * build gasless transaction payload bytes * @param tx transcation block * @returns string * */ buildGaslessTxPayloadBytes: (txb: TransactionBlock) => Promise; /** * @description * Get the transaction builder instance * @returns TxBuilder instance or undefined if not initialized */ getTxBuilder(): TxBuilder | undefined; /** * @description * Get the Bluefin signer instance * @returns IBluefinSigner instance */ getSigner(): IBluefinSigner; }