UNPKG

@azuro-org/sdk

Version:

One-stop solution for building betting dApps on the Azuro Protocol.

58 lines (57 loc) 2.46 kB
import { ConditionState, type ConditionDetailedData } from '@azuro-org/toolkit'; export type UseConditionsStateProps = { conditionIds: string[]; initialStates?: Record<string, ConditionState>; conditions?: never; } | { conditions: Pick<ConditionDetailedData, 'conditionId' | 'state' | 'hidden'>[]; initialStates?: never; conditionIds?: never; }; export type ConditionsStateData = { states: Record<string, ConditionState>; statesMap: Record<string, { state: ConditionState; hidden: boolean; }>; }; /** * Watch real-time state updates for a list of conditions. * Subscribes to condition updates via websocket and tracks state changes (Active, Stopped, Resolved, etc.). * Requires `FeedSocketProvider` and `ConditionUpdatesProvider` (both are included in `AzuroSDKProvider`). * * Returns `data` - a map of condition IDs to their current state. * Returns `conditionsMap` - a map `{ [conditionId]: { state: ConditionState, hidden: boolean } }` of conditions. * * The `hidden` field indicates whether a condition may be hidden from the game markets list. * It starts as `true` for stopped secondary conditions in `ConditionDetailedData`. * When a socket update arrives for a hidden condition, it is set back to `false` — * meaning the condition is still alive and was only temporarily stopped by the provider. * * - Docs: https://gem.azuro.org/hub/apps/sdk/watch-hooks/useConditionsState * * @example * import { useConditionState } from '@azuro-org/sdk' * import { ConditionState, type ConditionDetailedData } from '@azuro-org/toolkit' * * // best approach for the list of game's markets * const { data, conditionsMap, isFetching } = useConditionState({ * // Pick<ConditionDetailedData, 'conditionId' | 'state' | 'hidden'>[] * conditions, * }) * * // OR if you have a condition ID list only, like in the betslip * const { data, conditionsMap, isFetching } = useConditionState({ * conditionIds: [ '123...', '456...' ], * // optional, if not provided, it will fetch the initial states from the API * initialStates: [ ConditionState.Active, ConditionState.Stopped ], * }) * */ export declare const useConditionsState: ({ conditionIds: _conditionIds, initialStates, conditions }: UseConditionsStateProps) => { data: Record<string, ConditionState>; conditionsMap: Record<string, { state: ConditionState; hidden: boolean; }>; isFetching: boolean; };