REFRESH_INTERVAL      = 60   # seconds between prematch auto-refresh
LIVE_ENABLED          = True  # default: live match scraping on
LIVE_REFRESH_INTERVAL = 30   # seconds between live auto-refresh (dedicated process)

# Ports
PREMATCH_PORT = 5000
LIVE_PORT     = 5001

# URLs used for cross-app navigation links in templates.
# Override these in production to match your actual hostname/domain.
PREMATCH_APP_URL = 'http://localhost:5000'
LIVE_APP_URL     = 'http://localhost:5001'

# Betsnipper.com push — bot POSTs opportunities after every refresh cycle.
# Set BETSNIPPER_API_KEY to a long random secret shared with the Laravel app.
# Leave BETSNIPPER_INGEST_URL / BETSNIPPER_LIVE_INGEST_URL empty to disable.
BETSNIPPER_INGEST_URL         = 'https://betsnipper.com/api/ingest'          # prematch
BETSNIPPER_LIVE_INGEST_URL    = 'https://betsnipper.com/api/live-ingest'       # live
BETSNIPPER_VIRTUAL_INGEST_URL = 'https://betsnipper.com/api/virtual-ingest'    # virtual predictor
BETSNIPPER_API_KEY            = 'BetsnipperBetsnipper@11223344556677889900$$'

# Anthropic — used by virtual predictor to generate match predictions
ANTHROPIC_API_KEY = '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'
MIN_ARB_PERCENTAGE = 0.3     # minimum profit % to show on dashboard
MAX_ARB_PERCENTAGE = 31.0    # above this is almost certainly a data/matching error
DEFAULT_STAKE = 10000        # NGN — used for stake calculator

BOOKMAKERS = {
    'sportybet': {'name': 'SportyBet', 'enabled': True},
    'msport':    {'name': 'MSport',    'enabled': True},
    'betking':   {'name': 'BetKing',   'enabled': True},
    'nairabet':  {'name': 'NairaBet',  'enabled': True},
    'betway':    {'name': 'Betway',    'enabled': True},
    'onexbet':   {'name': '1xBet',     'enabled': True},
    'betwinner': {'name': 'BetWinner', 'enabled': True},
    'bet9ja':    {'name': 'Bet9ja',    'enabled': True},
    'bcgame':    {'name': 'BCGame',    'enabled': True},
    'betpawa':   {'name': 'Betpawa',   'enabled': True},
    'melbet':    {'name': 'Melbet',    'enabled': False},
    'onewin':    {'name': '1win',      'enabled': True},
    'stake':      {'name': 'Stake',      'enabled': True},
    'surebet247': {'name': 'Surebet247', 'enabled': True},
    'bangbet':    {'name': 'Bangbet',    'enabled': True},
    'accessbet':  {'name': 'Accessbet', 'enabled': True},
    'betjara':      {'name': 'Betjara',   'enabled': True},
    'twentytwoBet': {'name': '22bet',     'enabled': True},
}

SPORTS = ['football', 'basketball', 'tennis']

# Max hours ahead to fetch events
HOURS_AHEAD = 336  # 2 weeks (14 × 24)

# ── Execution bot ──────────────────────────────────────────────────────────────
# Telegram — get token from @BotFather, chat_id from /getUpdates
TELEGRAM_BOT_TOKEN      = ''          # e.g. '7123456789:AAHx...'
TELEGRAM_CHAT_ID        = ''          # e.g. '123456789'

# Bookmakers to scan and trade between — list any combination.
# Arbs are found across all pairs in this list simultaneously.
# Only bookmakers with a placement driver fully implemented will execute bets;
# the others still appear in arb alerts but placement will be skipped.
EXEC_BOOKMAKERS         = ['1xBet', 'Bet9ja', 'BetKing', 'Accessbet', 'BCGame']

# Only act on arbs with >= this profit %
EXEC_MIN_PROFIT_PCT     = 0.5

# Seconds to wait for stake input before skipping an arb
EXEC_STAKE_TIMEOUT      = 60

# How often the execution scanner refreshes (seconds)
EXEC_SCAN_INTERVAL      = 15    # prematch
EXEC_LIVE_SCAN_INTERVAL = 5     # live

# ── 1xBet placement credentials ───────────────────────────────────────────────
# Refresh every ~4 hours. To get fresh values:
#   1. Log into 1xbet.ng in Chrome
#   2. DevTools → Application → Cookies → copy these values
ONEXBET_USER_ID         = 1618499511       # numeric user ID (visible as 'ua' cookie)
ONEXBET_USER_TOKEN      = 'eyJhbGciOiJFUzI1NiIsImtpZCI6IjEiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiI1MC8xNjE4NDk5NTExIiwicGlkIjoiMTU5IiwianRpIjoiMC8yYzU5YjNiMTQxYTFjNDgxNzg5MGY0YjI5YjZhNWJhZmIwMWE1MjhiMTk5YjJmZmFjZmFiZDQ2ZGJlOTA5MTAwIiwiYXBwIjoiTkEiLCJzaWQiOiIwMTlkODNjYy0wOGU2LTczZWMtOWZiOS00OTMyYTdkMDlmYjIiLCJpbm5lciI6InRydWUiLCJ3dCI6InRydWUiLCJuYmYiOjE3NzYwMzI2ODAsImV4cCI6MTc3NjA0NzA4MCwiaWF0IjoxNzc2MDMyNjgwfQ.1WHuXoELEKY47jlEeDAWTb9aC9_eNf-NioNFlWEvoeyK3d5bmsiM8-kB2a4CLMIOETsyixNxSCb6fQ4ma6t3FQ'      # JWT from 'user_token' cookie (also used as x-auth Bearer)
ONEXBET_ACCESS_TOKEN    = 'eyJhbGciOiJFUzI1NiIsImtpZCI6IjEiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiI1MC8xNjE4NDk5NTExIiwicGlkIjoiMTU5IiwianRpIjoiMC8wZGNkNjA5ZDFhMWI0OGVhNWE1NTQ4NDVmNDNjZGI4ZjRiZDliM2NjNzljYTBjYzU5YWNkY2Q2ODc5OTY4OWI4IiwiYXBwIjoiOGVkMzI0MjE2ZGJjZGVhNWU0YzNlMDA1YWFjN2ZlNGFlMzVhODIyYiIsInNpZCI6IjAxOWQ4MTJjLTc5MzMtNzM2Yi1hNTc1LTEwOTEwNzE0ZTc1NyIsInhwaiI6IjQxMiIsInhnciI6IjQxMiIsInd0IjoidHJ1ZSIsImF4cGoiOjc0MiwibmJmIjoxNzc1OTg4NjY4LCJleHAiOjE3NzYwMDMwNjgsImlhdCI6MTc3NTk4ODY2OH0.vGMmIxeMdKRQxl82myJ7BJLqSWQl-RUdHQ73C43y4dClP1n9Rx6yvaYRemIPhnrtjvHAyq6Uf-AtTlC_Q5bndA'      # JWT from 'access_token' cookie
ONEXBET_SESSION         = '529e6fdde66997ea2922fb4ea7321fac'      # value of 'SESSION' cookie
ONEXBET_X_HD            = 'LSlAvchTxets7UqL+lBnkp3Ep31d21Vmadv0OADKZL59U19ZYQSssyc93ei1oCw3xboh7IsTQVcBichNCO6Z8S0dcExgBx9qNOLv7kgRsaYXA69Y0NPLoLyk2HWjGCSOXAGbHPr/BsCL9tC0sDSU8ieEeONZqxfJdUO86lpwBG6mJnx6rg16d97coMwaJHbpEnYlnqnRki0tqNjuNS+AkF5xc0+D9e1XSsnSWM8uMh7TyYsCytSjsqNs8ZWu2rP244xzXlpDrQgsiSJpCVyW9hXRtzrRSlEvQNmgOaROgA6w3zO5CBBaXE/DlZQNCEN9Eb0Lg4i05VkvEqiMe4OXSyjJ8o0+79EXzoy47sjt2h/G3N1ax/Z5EygzuNizSZcuVWD4hdJ5jJ3pcEEozkyb/KxhGcNfji25nMIaEBTG8IZPKy0H3j9PdHgRFxgGTbpqDDaE5s9DL4Yp5Pndeldcfy6fnnYFyGfhjdJ28NjoZtJ2C8bAXm1k6KunQo5t0ibeiScSriX4MXg3LI8774lWliUvukDRiK8+rKqBlXb2iUOecjWrb5Js2RC15glQ4iYrGDAo/h2V5VpfzffIPQmT9B9AVfDmOL/k93iaV80BzjTsFJ8Rg31klosewy5Jtvw1EBfQL3uLlJtEp4ENFmtASFTzX9HALQ=='      # optional: x-hd header from a captured request
ONEXBET_PARTNER         = 159     # 1xBet Nigeria partner ID
ONEXBET_GROUP           = 412     # 1xBet Nigeria group ID

# ── BCGame placement credentials ──────────────────────────────────────────────
# Both tokens expire together (~24h session lifetime).
# To refresh: DevTools on bc.game sports section → any 442hattrick.com request
#   → Copy as cURL (bash) → paste into python3 tools/update_cookies.py
#
# BCGAME_TOKEN         → authorization header  (contains siteId, agentId, customerId)
# BCGAME_SESSION_TOKEN → session header/cookie (shorter-lived auth token)
# BCGAME_FOTD          → customer session value embedded in bet payload
#                        (auto-derived as customerId if not set; override if bets rejected)
BCGAME_TOKEN         = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsYW5ndWFnZUNvZGUiOiJlbiIsImJldHRpbmdWaWV3IjoiU291dGggQW1lcmljYSBWaWV3Iiwic29ydGluZ1R5cGVJZCI6MCwiYmV0dGluZ0xheW91dCI6MSwiY3VzdG9tZXJUeXBlIjoicmVhbCIsImRpc3BsYXlUeXBlSWQiOjEsInRpbWV6b25lSWQiOjE0LCJvZGRzU3R5bGVJZCI6IiIsImFsbG93Q2hhbmdlT2RkIjowLCJpbnRUYWJFeHBhbmRlZCI6MSwiYXV0b1RpbWVab25lIjoxLCJsYXN0SW5wdXRTdGFrZSI6MCwiYmFsYW5jZVByaW9yaXR5IjoxLCJjb3VudHJ5Q29kZSI6Ik5HIiwiY3VycmVuY3lSYXRlIjowLjAwMDU0MTIzMzM1MDQ1NzI5NSwiY3VycmVuY3lSYXRlZXVyIjowLjAwMDYyMTI2MTM4MTkwNjYsImN1c3RvbWVySWQiOjE5NzgwMjUwMCwiZXVPZGRzSWQiOiIxIiwia29yZWFuT2Rkc0lkIjoiMSIsImFzaWFuT2Rkc0lkIjoiMyIsIm9wZXJhdG9yVG9rZW4iOiJ3MWRqMDlTRnhacjY0Snl4NkNYMTAtbk81THFzSjUxQktDRE5DX3BiT0REd0ttWmZkRW1uNjBhT3g0TFlkTmxiZk16eEJFUm12VUVhM2drN2w1OGc4QSIsImJhbGFuY2UiOiIxMDAwLjAwIiwidGVzdEN1c3RvbWVyIjowLCJjdXN0b21lckxvZ2luIjoiMTA1Njg0NjU3X05HTF9OR05GSUFUIiwiY3VycmVuY3lDb2RlIjoiTkdOIiwic3RhdGVDb2RlIjoiIiwiY3VzdG9tZXJMZXZlbCI6MCwiYWdlbnRJRCI6MTc0MTM1NjkyLCJkb21haW5JRCI6NDIzNCwic2l0ZUlkIjoyMDQwMiwiZXh0Q3VzdG9tZXJJZCI6IjEwNTY4NDY1N19OR05fTkdORklBVCIsImV4dFNlc3Npb25JZCI6Im1rYkRaWTA2VzR0YnNOdHZkS3hncnRuTThkdHFmdzkybmpuVmgyNE5IaGsiLCJzZWxlY3RlZE9wdGlvbklkIjowLCJsZXZlbCI6MSwiRVBPRW5hYmxlZCI6dHJ1ZSwiaWF0IjoxNzc2MDAwMTE2LCJib251c0JhbGFuY2UiOjB9.DPJdUtYvkizgx24EJT1XP0WVK0VY3AjfrQgRu74F95E'
BCGAME_SESSION_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXN0b21lcklkIjoxOTc4MDI1MDAsImV4cGlyZWREYXRlIjoxNzc2MDg2NTE2MDk5LCJjdXN0b21lcklwIjoiMTAyLjg4LjExMy41IiwiaWF0IjoxNzc2MDAwMTE2fQ.oTXgKMJXIkwJXi60mIzRQpn0Ay3unXKgytrpr3pzxOs'
BCGAME_FOTD          = 197802512  # from curl; override if bets rejected

# ── Accessbet placement credentials ───────────────────────────────────────────
# Session persists until logout — rarely needs updating.
# To refresh: DevTools on accessbet.com → Application → Cookies → copy USERSESSION value.
ACCESSBET_SESSION = 'alkl0npa6pbg4pomfat7g4qc7q'   # value of the USERSESSION cookie

# ── BetKing placement credentials ─────────────────────────────────────────────
# JWT lasts ~21 days. To refresh: DevTools on betking.com → any authenticated request
#   → copy Authorization header value (without "Bearer ").
# user_id is auto-derived from the JWT 'sub' claim — no need to set manually.
# ARR_AFFINITY is the Azure sticky-session cookie — copy from DevTools → Cookies.
BETKING_AUTHORIZATION     = 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjlGNkVCOTUxREI4NTcxRkZEODBDMkM3NDJEOENCQzgxMTdBNUJBOEQiLCJ4NXQiOiJuMjY1VWR1RmNmX1lEQ3gwTFl5OGdSZWx1bzAiLCJ0eXAiOiJhdCtqd3QifQ.eyJpc3MiOiJodHRwOi8vYWtzLWFjcXVpc2l0aW9uLXByb2Qtd2V1LWNsdXN0ZXIua2luZ21ha2Vycy50ZWNoLyIsImV4cCI6MTc3NzgxMTg3NCwiaWF0IjoxNzc1OTk3NDc0LCJzY29wZSI6InByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgYXYiLCJqdGkiOiI3OTA2NmQyZS1jYjVkLTQwZTAtOTgxNS1kNTZkN2FhZWY0YTIiLCJzdWIiOiIxNDU2NDk2NCIsIm5hbWUiOiIyMzQ5MDY3MDgxODc1Iiwicm9sZSI6IlVzZXIiLCJicmFuZF9pZCI6IjE5MDEiLCJ1c2VyX3R5cGUiOiJQTFlPTiIsImF1ZCI6Imh0dHBzOi8vc2VjdXJpdHkuYmV0a2luZy5jb20vbmciLCJzc29fdHlwZSI6ImtpbmdtYWtlcnMiLCJpc190ZXN0X3VzZXIiOiIwIiwicmVnX2RhdGUiOiIyMDI2MDQxMjEyMjgxOSIsIm9pX3Rrbl9pZCI6ImE6NDQxNDEzOTQ1In0.uDCNc5P59qnvDK3Vn9y1tF1FFb4N9EiCjr7NyM7wSghdDTmWsWXVthYFikGAQCwyE9LtxpwnWtvm9itv6THkSredC1hKLBJB8wmLcn5xOKCSZh7qRsU2y-ZfBqVfD6Z_fVZ3ZK3huHndrP4bWKzOeadCsYxwZ991qfF-3mZNVXTjkqIpTbQdkNOE7sMGnLEMJ1z0McYjXLQ93m4zmvl6IL04dKYpgew8t3Sl8BvGNaqr9ZVsAljZaFjzy0dO8nXr6YCHhl5tJL4kZJwPd8oUcZBmCkPLBbE7dR3Y09Dw24KJvS-1tSe1tKca7hets112Czk31hoUvXenPqHesuIY6g'
BETKING_USER_ID           = ''   # leave empty — auto-derived from JWT sub claim
BETKING_ARR_AFFINITY      = '6fda40488356605a665bfda83118fd23a17c3c2a22f93b6ff986b5a2204adab3'
BETKING_ARR_AFFINITY_SAME = '6fda40488356605a665bfda83118fd23a17c3c2a22f93b6ff986b5a2204adab3'

# ── Bet9ja placement credentials ──────────────────────────────────────────────
# Get from DevTools → Application → Cookies on sports.bet9ja.com after logging in.
# livsid persists across sessions; ak_bmsc / bm_sv rotate — update when getting auth errors.
BET9JA_LIVSID           = 'c05d128f-f9a1-f386-db3b-4b3675b31ee5'      # 'livsid' cookie (main auth session)
BET9JA_AK_BMSC          = '2E12894473603B1090FB2059FD1F43F2~000000000000000000000000000000~YAAQy/kTAhGZEm+dAQAAM0sngR+0nA8bbP7LWs48cPnpdJs71Yyp7uryxQFZlhQia0/5AEuzMoas27OloImVMTHu+ibvnA6f2Z9fxf0QKxLO+Auu1cH49/VSSGDC2IkzoBg1mmYT3W9TrtmZwQnXHi+IYyGv5viFaB5Y5pZpKdRtu/8lhHtFimArJVLDGBwISYHP2M4sHN5DGn8I+aZ2Ogx7mhKZl9jDS0WZvAMCgBEZD3cZXof70sta0Tr9kIKms1gZxp4pNu19qA1gY3aP14Xc0gzp9NK89tI+CbzCdJE1BJQFatC0/ggVcNkCgPo97QYNLE4iur5ndRLQ+7gOOZxs2d14BY5qzdgDdMGvsf5hZmMeZeVp4STv8ERtdNpYj5cV/vP7dK2rpKnsGeHm8u1UEqtGBQ4P5Q4+Z95Knr7mOfXO0inxUAglcKp/L8Q/mIYsowBRXlPERgZ+N8M='      # Akamai anti-bot cookie (optional but recommended)
BET9JA_BM_SV            = 'FD1D405BAB0ED4BD934F44BB18FA0E7C~YAAQzfkTAqdY9HGdAQAAOcaRgR/ZEqRrtC3/eXtuZbKkPKdP10ugUn3U2EChXKS6tTLaP3Yyxfe5aYn8CJkJaRqayvZQMmAescYkqM1itLGEJrOY91xaO0cW/GukZTv5D3eTsLP3M0XDnK3MyRHJL73JWJ+3O1t0wgjfZcthRNbQv+WI//Iy3mf3/srsmIxcp3mXKncht7BUDn3gAwxKqVzv7Uqlybn8zTk6oXScuUj8ff1d0JCeQsijkniIZwxD7A==~1'      # Akamai bot manager session value (optional)

# How close start times must be (minutes) to count as the same event
TIME_TOLERANCE_MINUTES = 20
