@azuro-org/sdk
Version:
One-stop solution for building betting dApps on the Azuro Protocol.
89 lines (88 loc) • 3.71 kB
TypeScript
import { type Address, type Hex } from 'viem';
import { type Selection, type GraphBetStatus, type GameData, type BetOrderState } from '@azuro-org/toolkit';
import { type UseInfiniteQueryOptions, type DefaultError, type QueryKey, type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
export type QueryParameter<queryFnData = unknown, error = DefaultError, data = queryFnData, queryKey extends QueryKey = QueryKey> = Omit<UseQueryOptions<queryFnData, error, data, queryKey>, 'queryFn' | 'queryHash' | 'queryKey' | 'queryKeyHashFn' | 'throwOnError' | 'select'> | undefined;
export type QueryParameterWithSelect<QueryFnData = unknown, TData = QueryFnData, TError = DefaultError, TQueryKey extends QueryKey = QueryKey> = Omit<UseQueryOptions<QueryFnData, TError, TData, TQueryKey>, 'queryFn' | 'queryHash' | 'queryKey' | 'queryKeyHashFn' | 'throwOnError'> | undefined;
export type WrapperUseQueryResult<D, T> = {
data: D;
} & Omit<UseQueryResult<T>, 'data'>;
export type InfiniteQueryParameters<queryFnData = unknown, error = DefaultError, data = queryFnData, queryKey extends QueryKey = QueryKey, pageParam = number> = Omit<UseInfiniteQueryOptions<queryFnData, error, data, queryKey, pageParam>, 'queryFn' | 'queryHash' | 'queryKey' | 'queryKeyHashFn' | 'throwOnError' | 'select' | 'initialData' | 'getNextPageParam' | 'initialPageParam'>;
export type InfiniteQueryParametersWithSelect<queryFnData = unknown, data = queryFnData, error = DefaultError, queryKey extends QueryKey = QueryKey, pageParam = number> = Omit<UseInfiniteQueryOptions<queryFnData, error, data, queryKey, pageParam>, 'queryFn' | 'queryHash' | 'queryKey' | 'queryKeyHashFn' | 'throwOnError' | 'initialData' | 'getNextPageParam' | 'initialPageParam'>;
declare global {
namespace AzuroSDK {
interface BetslipItem extends Selection {
gameId: string;
isExpressForbidden: boolean;
}
}
}
export declare enum SportHub {
Sports = "sports",
Esports = "esports"
}
export declare enum BetType {
Unredeemed = "unredeemed",
Pending = "pending",
Accepted = "accepted",
Settled = "settled",
CashedOut = "cashedOut"
}
export type BetOutcome = {
selectionName: string;
odds: number;
marketName: string;
game: GameData;
wonOutcomeIds: string[] | null;
isLive: boolean;
isWin: boolean | null;
isLose: boolean | null;
isCanceled: boolean;
} & Selection;
export type Bet = {
/** bettorAddressLowerCase_nonce */
orderId: string;
actor: Address;
affiliate: Address;
tokenId: string;
freebetId: string | null;
isFreebetAmountReturnable: boolean | null;
paymaster: Address | null;
totalOdds: number;
coreAddress: Address;
lpAddress: Address;
outcomes: BetOutcome[];
txHash: Hex | null;
redeemedTxHash: Hex | null;
orderState: BetOrderState;
/**
* graphql bet status,
* it can be null for bet with `orderState` in
* Created, Placed, Sent, Canceled, Rejected
* */
status: GraphBetStatus | null;
/** contract error code if bet state is BetState.Rejected */
rejectedErrorCode: string | null;
amount: string;
possibleWin: number;
payout: number | null;
createdAt: number;
resolvedAt: number | null;
redeemedAt?: number | null;
cashout?: string;
isWin: boolean;
isLose: boolean;
isRedeemable: boolean;
isRedeemed: boolean;
isCanceled: boolean;
isRejected: boolean;
isCashedOut: boolean;
};
export type BetsSummary = {
toPayout: string;
inBets: string;
totalPayout: string;
totalProfit: string;
betsCount: number;
wonBetsCount: number;
lostBetsCount: number;
};