Overview
This framework-agnostic package provides essential utilities for building applications on the Azuro Protocol.
NPM Package
Link: @azuro-org/toolkit (opens in a new tab)
Installation
1. Install the core package
npm install @azuro-org/toolkit2. Install peer dependencies
npm install @azuro-org/dictionaries@^3.0.27 graphql-tag@^2.12.6 @wagmi/core@^2.17.2 viem@^2.30.4ℹ️
You’ll frequently encounter the following types throughout the toolkit. Here’s a quick overview:
- Selection: Represents a user’s choice, typically used for placing bets and calculating odds.
type Selection = {
  outcomeId: string
  conditionId: string
}- ChainData: Contains chain-specific data, such as endpoints and smart contract references.
type ChainData = {
  chain: Omit<Chain, 'id'> & { id: ChainId }
  graphql: {
    bets: string
    feed: string
    legacyLive: string // @deprecated Only for v2 feed
  }
  socket: string
  api: string
  environment: Environment
  contracts: Contracts
  betToken: BetToken
}
 
type BetToken = {
  address: Address
  symbol: string
  decimals: number
}- Contracts — Azuro Protocol contract addresses with their ABIs.
import { type Chain } from 'viem/chains'
import { type Address, erc721Abi } from 'viem'
 
 
type Contracts = {
  lp: {
    address: Address
    abi: typeof lpAbi
  }
  core: {
    address: Address
    abi: typeof coreAbi
  }
  relayer: {
    address: Address
    abi: typeof relayerAbi
  }
  vault: {
    address: Address
    abi: typeof vaultAbi
  }
  paymaster: {
    address: Address
    abi: typeof paymasterAbi
  }
  azuroBet: {
    address: Address
    abi: typeof azuroBetAbi
  },
  cashout?: {
    address: Address
    abi: typeof cashoutAbi
  }
}
 
type BetToken = {
  address: Address
  symbol: string
  decimals: number
}- Environments: Available environments for creating bet orders.
enum Environment {
  GnosisDevXDAI = 'GnosisDevXDAI',
  GnosisXDAI = 'GnosisXDAI',
  PolygonUSDT = 'PolygonUSDT',
  PolygonAmoyUSDT = 'PolygonAmoyUSDT',
  ChilizWCHZ = 'ChilizWCHZ',
  ChilizSpicyWCHZ = 'ChilizSpicyWCHZ',
  BaseWETH = 'BaseWETH',
  BaseSepoliaWETH = 'BaseSepoliaWETH'
}Constants
import {
  ODDS_DECIMALS, // odds decimals
  BET_DATA_TYPES, // single bet data types for sign typed data
  COMBO_BET_DATA_TYPES, // combo bet data types for sign typed data
  TYPED_DATA_DOMAIN_NAME, // bet typed data domain name
  TYPED_DATA_DOMAIN_VERSION, // bet typed data domain version
  CASHOUT_DATA_TYPES, // cashout data types for sign typed data
  CASHOUT_TYPED_DATA_DOMAIN_NAME, // cashout typed data domain name
  CASHOUT_TYPED_DATA_DOMAIN_VERSION, // cashout typed data domain version
 
  chainsData, // supported chains data with endpoints, contracts and etc.
  chainsDataByEnv, // chain data by environment
  environments, // environments by chain id
} from '@azuro-org/toolkit'ABI
import { lpAbi, coreAbi, azuroBetAbi, cashoutAbi, relayerAbi, vaultAbi, paymasterAbi } from '@azuro-org/toolkit'GraphQL Utilities
The toolkit provides ready-to-use queries and fragments for interacting with Azuro subgraphs.
Feed Queries and Fragments
import {
  type ConditionFragment,
  ConditionFragmentDoc,
 
  type GameInfoFragment,
  GameInfoFragmentDoc,
 
  type ConditionQueryVariables,
  type ConditionQuery,
  ConditionDocument,
 
  type ConditionsQueryVariables,
  type ConditionsQuery,
  ConditionsDocument,
 
  type GameQueryVariables,
  type GameQuery,
  GameDocument,
 
  type GamesQueryVariables,
  type GamesQuery,
  GamesDocument,
 
  type NavigationQueryVariables,
  type NavigationQuery,
  NavigationDocument,
 
  type SportsNavigationQueryVariables,
  type SportsNavigationQuery,
  SportsNavigationDocument,
 
  type SportsQueryVariables,
  type SportsQuery,
  SportsDocument,
} from '@azuro-org/toolkit'Bets Queries and Fragments
import {
  type BettorFragment,
  BettorFragmentDoc,
 
  type LegacyLiveBetFragment,
  LegacyLiveBetFragmentDoc,
 
  type LegacyPrematchBetFragment,
  LegacyPrematchBetFragmentDoc,
 
  type BetFragment,
  BetFragmentDoc,
 
  type BetFragment,
  BetFragmentDoc,
 
  type BettorsQueryVariables,
  type BettorsQuery,
  BettorsDocument,
 
  type LegacyBetsQueryVariables,
  type LegacyBetsQuery,
  LegacyBetsDocument,
 
  type BetsQueryVariables,
  type BetsQuery,
  BetsDocument,
} from '@azuro-org/toolkit'Legacy Live Feed Queries and Fragments
Use these to fetch game info related to legacy v2 live bets
import {
  type LegacyLiveGamesQueryVariables,
  type LegacyLiveGamesQuery,
  LegacyLiveGamesDocument,
} from '@azuro-org/toolkit'