<?php
declare(strict_types=1);

return [
    // Dashboard
    ['GET',  '/sa',                                             'SportsActivity\Controllers\DashboardController@index',         ['auth'], 'sa.dashboard'],

    // Disciplines
    ['GET',  '/sa/disciplines',                                 'SportsActivity\Controllers\DisciplineController@index',        ['auth'], 'sa.discipline.view'],
    ['GET',  '/sa/disciplines/create',                          'SportsActivity\Controllers\DisciplineController@create',       ['auth'], 'sa.discipline.manage'],
    ['POST', '/sa/disciplines',                                 'SportsActivity\Controllers\DisciplineController@store',        ['auth', 'csrf'], 'sa.discipline.manage'],
    ['GET',  '/sa/disciplines/{id:\d+}',                        'SportsActivity\Controllers\DisciplineController@show',         ['auth'], 'sa.discipline.view'],
    ['GET',  '/sa/disciplines/{id:\d+}/edit',                   'SportsActivity\Controllers\DisciplineController@edit',         ['auth'], 'sa.discipline.manage'],
    ['POST', '/sa/disciplines/{id:\d+}',                        'SportsActivity\Controllers\DisciplineController@update',       ['auth', 'csrf'], 'sa.discipline.manage'],
    ['POST', '/sa/disciplines/{id:\d+}/toggle',                 'SportsActivity\Controllers\DisciplineController@toggle',       ['auth', 'csrf'], 'sa.discipline.manage'],

    // Facilities
    ['GET',  '/sa/facilities',                                  'SportsActivity\Controllers\FacilityController@index',          ['auth'], 'sa.facility.view'],
    ['GET',  '/sa/facilities/create',                           'SportsActivity\Controllers\FacilityController@create',         ['auth'], 'sa.facility.manage'],
    ['POST', '/sa/facilities',                                  'SportsActivity\Controllers\FacilityController@store',          ['auth', 'csrf'], 'sa.facility.manage'],
    ['GET',  '/sa/facilities/{id:\d+}',                         'SportsActivity\Controllers\FacilityController@show',           ['auth'], 'sa.facility.view'],
    ['GET',  '/sa/facilities/{id:\d+}/edit',                    'SportsActivity\Controllers\FacilityController@edit',           ['auth'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{id:\d+}',                         'SportsActivity\Controllers\FacilityController@update',         ['auth', 'csrf'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{id:\d+}/toggle',                  'SportsActivity\Controllers\FacilityController@toggle',         ['auth', 'csrf'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{id:\d+}/blackout',                'SportsActivity\Controllers\FacilityController@addBlackout',    ['auth', 'csrf'], 'sa.facility.manage'],

    // Facility Units
    ['GET',  '/sa/facilities/{fid:\d+}/units',                  'SportsActivity\Controllers\FacilityUnitController@index',      ['auth'], 'sa.facility.view'],
    ['GET',  '/sa/facilities/{fid:\d+}/units/create',           'SportsActivity\Controllers\FacilityUnitController@create',     ['auth'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{fid:\d+}/units',                  'SportsActivity\Controllers\FacilityUnitController@store',      ['auth', 'csrf'], 'sa.facility.manage'],
    ['GET',  '/sa/facilities/{fid:\d+}/units/{id:\d+}/edit',    'SportsActivity\Controllers\FacilityUnitController@edit',       ['auth'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{fid:\d+}/units/{id:\d+}',         'SportsActivity\Controllers\FacilityUnitController@update',     ['auth', 'csrf'], 'sa.facility.manage'],

    // Time Brackets
    ['GET',  '/sa/facilities/{fid:\d+}/brackets',               'SportsActivity\Controllers\FacilityController@brackets',       ['auth'], 'sa.facility.view'],
    ['POST', '/sa/facilities/{fid:\d+}/brackets',               'SportsActivity\Controllers\FacilityController@storeBracket',   ['auth', 'csrf'], 'sa.facility.manage'],
    ['POST', '/sa/facilities/{fid:\d+}/brackets/{id:\d+}/delete', 'SportsActivity\Controllers\FacilityController@deleteBracket', ['auth', 'csrf'], 'sa.facility.manage'],

    // Coaches
    ['GET',  '/sa/coaches',                                     'SportsActivity\Controllers\CoachController@index',             ['auth'], 'sa.coach.view'],
    ['GET',  '/sa/coaches/create',                              'SportsActivity\Controllers\CoachController@create',            ['auth'], 'sa.coach.manage'],
    ['POST', '/sa/coaches',                                     'SportsActivity\Controllers\CoachController@store',             ['auth', 'csrf'], 'sa.coach.manage'],
    ['GET',  '/sa/coaches/{id:\d+}',                            'SportsActivity\Controllers\CoachController@show',              ['auth'], 'sa.coach.view'],
    ['GET',  '/sa/coaches/{id:\d+}/edit',                       'SportsActivity\Controllers\CoachController@edit',              ['auth'], 'sa.coach.manage'],
    ['POST', '/sa/coaches/{id:\d+}',                            'SportsActivity\Controllers\CoachController@update',            ['auth', 'csrf'], 'sa.coach.manage'],
    ['POST', '/sa/coaches/{id:\d+}/toggle',                     'SportsActivity\Controllers\CoachController@toggle',            ['auth', 'csrf'], 'sa.coach.manage'],

    // Players
    ['GET',  '/sa/players',                                     'SportsActivity\Controllers\PlayerController@index',            ['auth'], 'sa.player.view'],
    ['GET',  '/sa/players/create',                              'SportsActivity\Controllers\PlayerController@create',           ['auth'], 'sa.player.manage'],
    ['POST', '/sa/players',                                     'SportsActivity\Controllers\PlayerController@store',            ['auth', 'csrf'], 'sa.player.manage'],
    ['GET',  '/sa/players/{id:\d+}',                            'SportsActivity\Controllers\PlayerController@show',             ['auth'], 'sa.player.view'],
    ['GET',  '/sa/players/{id:\d+}/edit',                       'SportsActivity\Controllers\PlayerController@edit',             ['auth'], 'sa.player.manage'],
    ['POST', '/sa/players/{id:\d+}',                            'SportsActivity\Controllers\PlayerController@update',           ['auth', 'csrf'], 'sa.player.manage'],

    // Player Documents
    ['GET',  '/sa/players/{pid:\d+}/documents',                 'SportsActivity\Controllers\PlayerDocumentController@index',    ['auth'], 'sa.player.view'],
    ['POST', '/sa/players/{pid:\d+}/documents',                 'SportsActivity\Controllers\PlayerDocumentController@upload',   ['auth', 'csrf'], 'sa.player.manage'],
    ['POST', '/sa/players/{pid:\d+}/documents/upload',           'SportsActivity\Controllers\PlayerDocumentController@upload',   ['auth', 'csrf'], 'sa.player.manage'],
    ['POST', '/sa/players/{pid:\d+}/documents/{id:\d+}/approve', 'SportsActivity\Controllers\PlayerDocumentController@approve', ['auth', 'csrf'], 'medical.board.approve'],
    ['POST', '/sa/players/{pid:\d+}/documents/{id:\d+}/reject', 'SportsActivity\Controllers\PlayerDocumentController@reject',   ['auth', 'csrf'], 'medical.board.approve'],
    ['POST', '/sa/players/{pid:\d+}/documents/{id:\d+}/approve-conditional', 'SportsActivity\Controllers\PlayerDocumentController@approveConditional', ['auth', 'csrf'], 'medical.board.approve'],
    ['POST', '/sa/players/{pid:\d+}/medical/update',            'SportsActivity\Controllers\PlayerDocumentController@updateMedical', ['auth', 'csrf'], 'medical.board.approve'],

    // Academies
    ['GET',  '/sa/academies',                                   'SportsActivity\Controllers\AcademyController@index',           ['auth'], 'sa.academy.view'],
    ['GET',  '/sa/academies/create',                            'SportsActivity\Controllers\AcademyController@create',          ['auth'], 'sa.academy.manage'],
    ['POST', '/sa/academies',                                   'SportsActivity\Controllers\AcademyController@store',           ['auth', 'csrf'], 'sa.academy.manage'],
    ['GET',  '/sa/academies/{id:\d+}',                          'SportsActivity\Controllers\AcademyController@show',            ['auth'], 'sa.academy.view'],
    ['GET',  '/sa/academies/{id:\d+}/edit',                     'SportsActivity\Controllers\AcademyController@edit',            ['auth'], 'sa.academy.manage'],
    ['POST', '/sa/academies/{id:\d+}',                          'SportsActivity\Controllers\AcademyController@update',          ['auth', 'csrf'], 'sa.academy.manage'],

    // Academy Contracts
    ['GET',  '/sa/academies/{aid:\d+}/contracts',               'SportsActivity\Controllers\AcademyContractController@index',   ['auth'], 'sa.contract.view'],
    ['GET',  '/sa/academies/{aid:\d+}/contracts/create',        'SportsActivity\Controllers\AcademyContractController@create',  ['auth'], 'sa.contract.manage'],
    ['POST', '/sa/academies/{aid:\d+}/contracts',               'SportsActivity\Controllers\AcademyContractController@store',   ['auth', 'csrf'], 'sa.contract.manage'],
    ['GET',  '/sa/academy-contracts/{id:\d+}',                  'SportsActivity\Controllers\AcademyContractController@show',    ['auth'], 'sa.contract.view'],
    ['POST', '/sa/academy-contracts/{id:\d+}/approve',          'SportsActivity\Controllers\AcademyContractController@approve', ['auth', 'csrf'], 'sa.contract.approve'],

    // Programs
    ['GET',  '/sa/programs',                                    'SportsActivity\Controllers\ProgramController@index',           ['auth'], 'sa.program.view'],
    ['GET',  '/sa/programs/create',                             'SportsActivity\Controllers\ProgramController@create',          ['auth'], 'sa.program.manage'],
    ['POST', '/sa/programs',                                    'SportsActivity\Controllers\ProgramController@store',           ['auth', 'csrf'], 'sa.program.manage'],
    ['GET',  '/sa/programs/{id:\d+}',                           'SportsActivity\Controllers\ProgramController@show',            ['auth'], 'sa.program.view'],
    ['GET',  '/sa/programs/{id:\d+}/edit',                      'SportsActivity\Controllers\ProgramController@edit',            ['auth'], 'sa.program.manage'],
    ['POST', '/sa/programs/{id:\d+}',                           'SportsActivity\Controllers\ProgramController@update',          ['auth', 'csrf'], 'sa.program.manage'],

    // Groups
    ['GET',  '/sa/groups',                                      'SportsActivity\Controllers\GroupController@index',             ['auth'], 'sa.group.view'],
    ['GET',  '/sa/groups/create',                               'SportsActivity\Controllers\GroupController@create',            ['auth'], 'sa.group.manage'],
    ['POST', '/sa/groups',                                      'SportsActivity\Controllers\GroupController@store',             ['auth', 'csrf'], 'sa.group.manage'],
    ['GET',  '/sa/groups/{id:\d+}',                             'SportsActivity\Controllers\GroupController@show',              ['auth'], 'sa.group.view'],
    ['GET',  '/sa/groups/{id:\d+}/edit',                        'SportsActivity\Controllers\GroupController@edit',              ['auth'], 'sa.group.manage'],
    ['POST', '/sa/groups/{id:\d+}',                             'SportsActivity\Controllers\GroupController@update',            ['auth', 'csrf'], 'sa.group.manage'],
    ['POST', '/sa/groups/{id:\d+}/enroll',                      'SportsActivity\Controllers\GroupController@enroll',            ['auth', 'csrf'], 'sa.group.enroll'],
    ['POST', '/sa/groups/{id:\d+}/force-enroll',               'SportsActivity\Controllers\GroupController@forceEnroll',        ['auth', 'csrf'], 'sa.group.force_enroll'],
    ['POST', '/sa/groups/{id:\d+}/remove-player',               'SportsActivity\Controllers\GroupController@removePlayer',      ['auth', 'csrf'], 'sa.group.manage'],
    ['POST', '/sa/groups/{id:\d+}/transfer-player',            'SportsActivity\Controllers\GroupController@transferPlayer',     ['auth', 'csrf'], 'sa.group.manage'],
    ['POST', '/sa/groups/{id:\d+}/schedule',                    'SportsActivity\Controllers\GroupController@saveSchedule',      ['auth', 'csrf'], 'sa.group.manage'],
    ['POST', '/sa/groups/{id:\d+}/generate-sessions',           'SportsActivity\Controllers\GroupController@generateSessions',  ['auth', 'csrf'], 'sa.schedule.manage'],

    // Schedule
    ['GET',  '/sa/schedule',                                    'SportsActivity\Controllers\ScheduleController@calendar',       ['auth'], 'sa.schedule.view'],
    ['GET',  '/sa/schedule/daily/{date}',                       'SportsActivity\Controllers\ScheduleController@daily',          ['auth'], 'sa.schedule.view'],
    ['GET',  '/sa/schedule/weekly',                             'SportsActivity\Controllers\ScheduleController@weekly',         ['auth'], 'sa.schedule.view'],
    ['POST', '/sa/schedule/generate',                           'SportsActivity\Controllers\ScheduleController@generate',       ['auth', 'csrf'], 'sa.schedule.manage'],

    // Booking Wizard
    ['GET',  '/sa/booking-wizard',                              'SportsActivity\Controllers\BookingWizardController@index',     ['auth'], 'sa.booking_wizard.use'],
    ['POST', '/sa/booking-wizard/lookup',                       'SportsActivity\Controllers\BookingWizardController@lookup',    ['auth', 'csrf'], 'sa.booking_wizard.use'],
    ['GET',  '/sa/booking-wizard/units',                        'SportsActivity\Controllers\BookingWizardController@units',     ['auth'], 'sa.booking_wizard.use'],
    ['GET',  '/sa/booking-wizard/slots',                        'SportsActivity\Controllers\BookingWizardController@slots',     ['auth'], 'sa.booking_wizard.use'],
    ['POST', '/sa/booking-wizard/book',                         'SportsActivity\Controllers\BookingWizardController@book',      ['auth', 'csrf'], 'sa.booking_wizard.use'],

    // Bookings
    ['GET',  '/sa/bookings',                                    'SportsActivity\Controllers\BookingController@index',           ['auth'], 'sa.booking.view'],
    ['GET',  '/sa/bookings/create',                             'SportsActivity\Controllers\BookingController@create',          ['auth'], 'sa.booking.create'],
    ['POST', '/sa/bookings',                                    'SportsActivity\Controllers\BookingController@store',           ['auth', 'csrf'], 'sa.booking.create'],
    ['GET',  '/sa/bookings/{id:\d+}',                           'SportsActivity\Controllers\BookingController@show',            ['auth'], 'sa.booking.view'],
    ['POST', '/sa/bookings/{id:\d+}/cancel',                    'SportsActivity\Controllers\BookingController@cancel',          ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/sa/bookings/{id:\d+}/checkin',                   'SportsActivity\Controllers\BookingController@checkin',         ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/sa/bookings/{id:\d+}/checkout',                  'SportsActivity\Controllers\BookingController@checkout',        ['auth', 'csrf'], 'sa.booking.manage'],

    // Pricing
    ['GET',  '/sa/pricing',                                     'SportsActivity\Controllers\PricingController@index',           ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/pricing/rules',                               'SportsActivity\Controllers\PricingController@rules',           ['auth'], 'sa.pricing.manage'],
    ['POST', '/sa/pricing/rules',                               'SportsActivity\Controllers\PricingController@storeRule',       ['auth', 'csrf'], 'sa.pricing.manage'],
    ['POST', '/sa/pricing/rules/{id:\d+}',                      'SportsActivity\Controllers\PricingController@updateRule',      ['auth', 'csrf'], 'sa.pricing.manage'],
    ['POST', '/sa/pricing/rules/{id:\d+}/deactivate',           'SportsActivity\Controllers\PricingController@deactivateRule',  ['auth', 'csrf'], 'sa.pricing.manage'],

    // Subscriptions
    ['GET',  '/sa/subscriptions',                               'SportsActivity\Controllers\SubscriptionController@index',      ['auth'], 'sa.subscription.view'],
    ['POST', '/sa/subscriptions/generate',                      'SportsActivity\Controllers\SubscriptionController@generate',   ['auth', 'csrf'], 'sa.subscription.generate'],
    ['GET',  '/sa/subscriptions/{id:\d+}',                      'SportsActivity\Controllers\SubscriptionController@show',       ['auth'], 'sa.subscription.view'],
    ['POST', '/sa/subscriptions/{id:\d+}/pay',                  'SportsActivity\Controllers\SubscriptionController@pay',        ['auth', 'csrf'], 'sa.subscription.collect'],
    ['POST', '/sa/subscriptions/{id:\d+}/void',                 'SportsActivity\Controllers\SubscriptionController@void',       ['auth', 'csrf'], 'sa.subscription.collect'],
    ['POST', '/sa/subscriptions/{id:\d+}/exempt',               'SportsActivity\Controllers\SubscriptionController@exempt',     ['auth', 'csrf'], 'sa.subscription.exempt'],

    // Attendance
    ['GET',  '/sa/attendance',                                  'SportsActivity\Controllers\AttendanceController@index',        ['auth'], 'sa.attendance.view'],
    ['GET',  '/sa/attendance/record/{bookingId:\d+}',           'SportsActivity\Controllers\AttendanceController@record',       ['auth'], 'sa.attendance.manage'],
    ['POST', '/sa/attendance/record/{bookingId:\d+}',           'SportsActivity\Controllers\AttendanceController@store',        ['auth', 'csrf'], 'sa.attendance.manage'],
    ['GET',  '/sa/attendance/report',                           'SportsActivity\Controllers\AttendanceController@report',       ['auth'], 'sa.attendance.view'],

    // Mirror (read-only display)
    ['GET',  '/sa/mirror',                                      'SportsActivity\Controllers\MirrorController@index',            ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/discipline/{id:\d+}',                  'SportsActivity\Controllers\MirrorController@byDiscipline',     ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/discipline/{id:\d+}/{date}',           'SportsActivity\Controllers\MirrorController@byDisciplineDate', ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/{id:\d+}',                             'SportsActivity\Controllers\MirrorController@facility',         ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/{id:\d+}/{date}',                      'SportsActivity\Controllers\MirrorController@facilityDate',     ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/facility/{id:\d+}',                    'SportsActivity\Controllers\MirrorController@facility',         ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/facility/{id:\d+}/{date}',             'SportsActivity\Controllers\MirrorController@facilityDate',     ['auth'], 'sa.mirror.view'],
    ['GET',  '/sa/mirror/pool/{id:\d+}',                        'SportsActivity\Controllers\MirrorController@poolMirror',       ['auth'], 'sa.mirror.view'],

    // Waitlist
    ['GET',  '/sa/waitlist',                                    'SportsActivity\Controllers\WaitlistController@index',          ['auth'], 'sa.waitlist.view'],
    ['POST', '/sa/waitlist/{id:\d+}/offer',                     'SportsActivity\Controllers\WaitlistController@offer',          ['auth', 'csrf'], 'sa.waitlist.manage'],
    ['POST', '/sa/waitlist/{id:\d+}/cancel',                    'SportsActivity\Controllers\WaitlistController@cancel',         ['auth', 'csrf'], 'sa.waitlist.manage'],

    // Lockers
    ['GET',  '/sa/lockers',                                        'SportsActivity\Controllers\LockerController@index',             ['auth'], 'sa.locker.view'],
    ['GET',  '/sa/lockers/create',                                 'SportsActivity\Controllers\LockerController@create',            ['auth'], 'sa.locker.manage'],
    ['POST', '/sa/lockers',                                        'SportsActivity\Controllers\LockerController@store',             ['auth', 'csrf'], 'sa.locker.manage'],
    ['GET',  '/sa/lockers/{id:\d+}',                               'SportsActivity\Controllers\LockerController@show',              ['auth'], 'sa.locker.view'],
    ['GET',  '/sa/lockers/{id:\d+}/edit',                          'SportsActivity\Controllers\LockerController@edit',              ['auth'], 'sa.locker.manage'],
    ['POST', '/sa/lockers/{id:\d+}',                               'SportsActivity\Controllers\LockerController@update',            ['auth', 'csrf'], 'sa.locker.manage'],
    ['POST', '/sa/lockers/{id:\d+}/toggle',                        'SportsActivity\Controllers\LockerController@toggle',            ['auth', 'csrf'], 'sa.locker.manage'],

    // Locker Rentals
    ['GET',  '/sa/locker-rentals',                                 'SportsActivity\Controllers\LockerRentalController@index',       ['auth'], 'sa.locker_rental.view'],
    ['GET',  '/sa/locker-rentals/create',                          'SportsActivity\Controllers\LockerRentalController@create',      ['auth'], 'sa.locker_rental.create'],
    ['POST', '/sa/locker-rentals',                                 'SportsActivity\Controllers\LockerRentalController@store',       ['auth', 'csrf'], 'sa.locker_rental.create'],
    ['GET',  '/sa/locker-rentals/{id:\d+}',                        'SportsActivity\Controllers\LockerRentalController@show',        ['auth'], 'sa.locker_rental.view'],
    ['GET',  '/sa/locker-rentals/{id:\d+}/renew',                  'SportsActivity\Controllers\LockerRentalController@renew',       ['auth'], 'sa.locker_rental.create'],
    ['POST', '/sa/locker-rentals/{id:\d+}/renew',                  'SportsActivity\Controllers\LockerRentalController@storeRenew',  ['auth', 'csrf'], 'sa.locker_rental.create'],
    ['GET',  '/sa/locker-rentals/{id:\d+}/evict',                  'SportsActivity\Controllers\LockerRentalController@evict',       ['auth'], 'sa.locker_rental.evict'],
    ['POST', '/sa/locker-rentals/{id:\d+}/evict',                  'SportsActivity\Controllers\LockerRentalController@storeEvict',  ['auth', 'csrf'], 'sa.locker_rental.evict'],

    // Pool Grid Management
    ['GET',  '/sa/pool-grid',                                       'SportsActivity\Controllers\PoolGridController@index',              ['auth'], 'sa.pool-grid.manage'],
    ['GET',  '/sa/pool-grid/{id:\d+}',                              'SportsActivity\Controllers\PoolGridController@manage',             ['auth'], 'sa.pool-grid.manage'],

    // JSON APIs (AJAX)
    ['GET',  '/api/sa/schedule/availability',                   'SportsActivity\Controllers\Api\ScheduleApiController@availability',  ['auth'], 'sa.schedule.view'],
    ['GET',  '/api/sa/schedule/conflicts',                      'SportsActivity\Controllers\Api\ScheduleApiController@conflicts',     ['auth'], 'sa.schedule.view'],
    ['GET',  '/api/sa/bookings/price-preview',                  'SportsActivity\Controllers\Api\BookingApiController@pricePreview',   ['auth'], 'sa.booking.view'],
    ['GET',  '/api/sa/players/search',                          'SportsActivity\Controllers\Api\PlayerSearchApiController@search',    ['auth'], 'sa.player.view'],
    ['POST', '/api/sa/member-lookup',                             'SportsActivity\Controllers\Api\MemberLookupApiController@lookup',   ['auth', 'csrf'], null],
    ['GET',  '/api/sa/groups/search',                           'SportsActivity\Controllers\Api\SmartFilterApiController@groups',     ['auth'], 'sa.group.view'],
    ['GET',  '/api/sa/coaches/search',                          'SportsActivity\Controllers\Api\SmartFilterApiController@coaches',    ['auth'], 'sa.group.view'],
    ['GET',  '/api/sa/disciplines/list',                        'SportsActivity\Controllers\Api\SmartFilterApiController@disciplines', ['auth'], 'sa.group.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/state',                   'SportsActivity\Controllers\Api\MirrorApiController@state',           ['auth'], 'sa.mirror.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/groups',                  'SportsActivity\Controllers\Api\MirrorApiController@groups',          ['auth'], 'sa.mirror.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/coaches-available',       'SportsActivity\Controllers\Api\MirrorApiController@coachesAvailable', ['auth'], 'sa.mirror.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/stats',                   'SportsActivity\Controllers\Api\MirrorApiController@stats',           ['auth'], 'sa.mirror.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/templates',               'SportsActivity\Controllers\Api\MirrorApiController@templates',       ['auth'], 'sa.mirror.view'],
    ['GET',  '/api/sa/mirror/{id:\d+}/conflicts',               'SportsActivity\Controllers\Api\MirrorApiController@conflicts',       ['auth'], 'sa.mirror.view'],
    ['POST', '/api/sa/mirror/{id:\d+}/quick-book',              'SportsActivity\Controllers\Api\MirrorApiController@quickBook',       ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/quick-schedule',          'SportsActivity\Controllers\Api\MirrorApiController@quickSchedule',   ['auth', 'csrf'], 'sa.schedule.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/cancel-booking',          'SportsActivity\Controllers\Api\MirrorApiController@cancelBooking',   ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/move-booking',            'SportsActivity\Controllers\Api\MirrorApiController@moveBooking',     ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/swap-bookings',           'SportsActivity\Controllers\Api\MirrorApiController@swapBookings',    ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/copy-day',                'SportsActivity\Controllers\Api\MirrorApiController@copyDay',         ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/bulk-block',              'SportsActivity\Controllers\Api\MirrorApiController@bulkBlock',       ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/extend-booking',          'SportsActivity\Controllers\Api\MirrorApiController@extendBooking',   ['auth', 'csrf'], 'sa.booking.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/save-template',           'SportsActivity\Controllers\Api\MirrorApiController@saveTemplate',    ['auth', 'csrf'], 'sa.schedule.manage'],
    ['POST', '/api/sa/mirror/{id:\d+}/apply-template',          'SportsActivity\Controllers\Api\MirrorApiController@applyTemplate',   ['auth', 'csrf'], 'sa.schedule.manage'],
    ['GET',  '/api/sa/pool-grid/{id:\d+}/state',                'SportsActivity\Controllers\Api\PoolGridApiController@state',         ['auth'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/assign',               'SportsActivity\Controllers\Api\PoolGridApiController@assign',        ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/clear',                'SportsActivity\Controllers\Api\PoolGridApiController@clear',         ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/update-grid',          'SportsActivity\Controllers\Api\PoolGridApiController@updateGrid',    ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/copy-slot',            'SportsActivity\Controllers\Api\PoolGridApiController@copySlot',      ['auth', 'csrf'], 'sa.pool-grid.manage'],

    // Pool Grid Preview + Quick Repeat
    ['GET',  '/api/sa/pool-grid/{id:\d+}/preview',              'SportsActivity\Controllers\Api\PoolGridApiController@preview',       ['auth'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/quick-repeat',         'SportsActivity\Controllers\Api\PoolGridApiController@quickRepeat',   ['auth', 'csrf'], 'sa.pool-grid.manage'],

    // Pool Grid Templates
    ['GET',  '/api/sa/pool-grid/{id:\d+}/templates',                                      'SportsActivity\Controllers\Api\PoolGridTemplateApiController@list',     ['auth'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/templates',                                      'SportsActivity\Controllers\Api\PoolGridTemplateApiController@store',    ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/templates/{tid:\d+}',                            'SportsActivity\Controllers\Api\PoolGridTemplateApiController@update',   ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/templates/{tid:\d+}/delete',                     'SportsActivity\Controllers\Api\PoolGridTemplateApiController@delete',   ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/templates/{tid:\d+}/expand',                     'SportsActivity\Controllers\Api\PoolGridTemplateApiController@expand',   ['auth', 'csrf'], 'sa.pool-grid.manage'],
    ['POST', '/api/sa/pool-grid/{id:\d+}/templates/{tid:\d+}/runs/{rid:\d+}/rollback',    'SportsActivity\Controllers\Api\PoolGridTemplateApiController@rollback', ['auth', 'csrf'], 'sa.pool-grid.manage'],

    // ─── Registration Wizard ────────────────────────────────────────────────────
    ['GET',  '/sa/registration/report',                   'SportsActivity\Controllers\RegistrationWizardController@report',         ['auth'], 'sa.registration.view'],
    ['GET',  '/sa/registration',                          'SportsActivity\Controllers\RegistrationWizardController@index',          ['auth'], 'sa.registration.manage'],
    ['POST', '/sa/registration/lookup',                   'SportsActivity\Controllers\RegistrationWizardController@lookupPlayer',   ['auth', 'csrf'], 'sa.registration.manage'],
    ['GET',  '/sa/registration/{id:\d+}',                 'SportsActivity\Controllers\RegistrationWizardController@wizardStep',     ['auth'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/pay-form',        'SportsActivity\Controllers\RegistrationWizardController@submitFormPayment', ['auth', 'csrf'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/photo',           'SportsActivity\Controllers\RegistrationWizardController@uploadPhoto',    ['auth', 'csrf'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/activity',        'SportsActivity\Controllers\RegistrationWizardController@selectActivity', ['auth', 'csrf'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/pay',             'SportsActivity\Controllers\RegistrationWizardController@submitPayment',  ['auth', 'csrf'], 'sa.registration.manage'],
    ['GET',  '/sa/registration/{id:\d+}/print-form',      'SportsActivity\Controllers\RegistrationWizardController@printForm',      ['auth'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/generate-card',   'SportsActivity\Controllers\RegistrationWizardController@generateCard',   ['auth', 'csrf'], 'sa.registration.manage'],
    ['GET',  '/sa/registration/{id:\d+}/print-card',      'SportsActivity\Controllers\RegistrationWizardController@printCard',      ['auth'], 'sa.registration.manage'],
    ['POST', '/sa/registration/{id:\d+}/cancel',          'SportsActivity\Controllers\RegistrationWizardController@cancel',         ['auth', 'csrf'], 'sa.registration.manage'],

    // Registration Wizard APIs
    ['GET',  '/api/sa/registration/disciplines',         'SportsActivity\Controllers\RegistrationWizardController@getDisciplines', ['auth'], 'sa.registration.manage'],
    ['GET',  '/api/sa/registration/programs/{id:\d+}',   'SportsActivity\Controllers\RegistrationWizardController@getPrograms',    ['auth'], 'sa.registration.manage'],

    // ─── SA Player Cards ────────────────────────────────────────────────────────
    ['GET',  '/sa/cards/report',              'SportsActivity\Controllers\SaCardController@report',      ['auth'], 'sa.card.view'],
    ['GET',  '/sa/cards',                     'SportsActivity\Controllers\SaCardController@index',       ['auth'], 'sa.card.view'],
    ['GET',  '/sa/cards/{id:\d+}',            'SportsActivity\Controllers\SaCardController@show',        ['auth'], 'sa.card.view'],
    ['POST', '/sa/cards/{id:\d+}/suspend',    'SportsActivity\Controllers\SaCardController@suspend',     ['auth', 'csrf'], 'sa.card.manage'],
    ['POST', '/sa/cards/{id:\d+}/revoke',     'SportsActivity\Controllers\SaCardController@revoke',      ['auth', 'csrf'], 'sa.card.manage'],
    ['POST', '/sa/cards/{id:\d+}/reactivate', 'SportsActivity\Controllers\SaCardController@reactivate',  ['auth', 'csrf'], 'sa.card.manage'],
    ['POST', '/sa/cards/{id:\d+}/renew',      'SportsActivity\Controllers\SaCardController@renew',       ['auth', 'csrf'], 'sa.card.manage'],
    ['GET',  '/sa/cards/{id:\d+}/print',      'SportsActivity\Controllers\SaCardController@print',       ['auth'], 'sa.card.print'],

    // ─── Gate Access ────────────────────────────────────────────────────────────
    ['GET',  '/sa/gate',          'SportsActivity\Controllers\GateController@index',  ['auth'], 'sa.gate.view'],
    ['POST', '/sa/gate/scan',     'SportsActivity\Controllers\GateController@scan',   ['auth', 'csrf'], 'sa.gate.scan'],
    ['GET',  '/sa/gate/log',      'SportsActivity\Controllers\GateController@log',    ['auth'], 'sa.gate.view'],
    ['GET',  '/sa/gate/report',   'SportsActivity\Controllers\GateController@report', ['auth'], 'sa.gate.view'],

    // Booking Passes
    ['GET',  '/sa/bookings/{id:\d+}/passes',                    'SportsActivity\Controllers\BookingPassController@passes',      ['auth'], 'sa.booking.view'],
    ['POST', '/sa/booking-passes/use',                          'SportsActivity\Controllers\BookingPassController@usePass',     ['auth', 'csrf'], 'sa.booking.manage'],
    ['GET',  '/api/sa/booking-passes/validate',                 'SportsActivity\Controllers\BookingPassController@validatePass',['auth'], 'sa.booking.view'],

    // Pool Tickets
    ['GET',  '/sa/pool-tickets',                                'SportsActivity\Controllers\PoolTicketController@index',        ['auth'], 'sa.pool_ticket.view'],
    ['POST', '/sa/pool-tickets/issue',                          'SportsActivity\Controllers\PoolTicketController@issue',        ['auth', 'csrf'], 'sa.pool_ticket.issue'],
    ['POST', '/sa/pool-tickets/{id:\d+}/cancel',                'SportsActivity\Controllers\PoolTicketController@cancel',       ['auth', 'csrf'], 'sa.pool_ticket.manage'],
    ['POST', '/sa/pool-tickets/{id:\d+}/entry',                 'SportsActivity\Controllers\PoolTicketController@entry',        ['auth', 'csrf'], 'sa.pool_ticket.manage'],
    ['POST', '/sa/pool-tickets/{id:\d+}/exit',                  'SportsActivity\Controllers\PoolTicketController@exit',         ['auth', 'csrf'], 'sa.pool_ticket.manage'],

    // ─── Activity Browser ───────────────────────────────────────────────────────
    ['GET',  '/sa/activities',                           'SportsActivity\Controllers\DisciplineController@activityBrowser',     ['auth'], 'sa.discipline.view'],

    // ─── Service Desk ───────────────────────────────────────────────────────────
    ['GET',  '/sa/service-desk',                         'SportsActivity\Controllers\ServiceDeskController@index',              ['auth'], 'sa.registration.manage'],
    ['POST', '/sa/service-desk/lookup',                  'SportsActivity\Controllers\ServiceDeskController@lookup',             ['auth', 'csrf'], 'sa.registration.manage'],
    ['POST', '/sa/service-desk/ticket',                  'SportsActivity\Controllers\ServiceDeskController@issueTicket',        ['auth', 'csrf'], 'sa.registration.manage'],

    // ─── Activity Browser APIs ──────────────────────────────────────────────────
    ['GET',  '/api/sa/activities/programs',              'SportsActivity\Controllers\Api\ActivityBrowserApiController@programs',              ['auth'], 'sa.discipline.view'],
    ['GET',  '/api/sa/activities/groups',                'SportsActivity\Controllers\Api\ActivityBrowserApiController@groups',                ['auth'], 'sa.discipline.view'],
    ['GET',  '/api/sa/activities/disciplines',           'SportsActivity\Controllers\Api\ActivityBrowserApiController@disciplines',           ['auth'], 'sa.discipline.view'],
    ['GET',  '/api/sa/activities/programs-by-discipline','SportsActivity\Controllers\Api\ActivityBrowserApiController@programsByDiscipline', ['auth'], 'sa.discipline.view'],
    ['GET',  '/api/sa/activities/coaches-by-discipline', 'SportsActivity\Controllers\Api\ActivityBrowserApiController@coachesByDiscipline',  ['auth'], 'sa.discipline.view'],

    // ─── Program Pricing API ────────────────────────────────────────────────────
    ['GET',  '/api/sa/programs/{id:\d+}/pricing',       'SportsActivity\Controllers\Api\ActivityBrowserApiController@programPricing',    ['auth'], 'sa.program.view'],

    // ─── Subscription Preview APIs ──────────────────────────────────────────────
    ['GET',  '/api/sa/subscriptions/preview',            'SportsActivity\Controllers\Api\SubscriptionPreviewApiController@preview',  ['auth'], 'sa.subscription.view'],
    ['POST', '/api/sa/subscriptions/pause',              'SportsActivity\Controllers\Api\SubscriptionPreviewApiController@pause',    ['auth', 'csrf'], 'sa.subscription.generate'],
    ['POST', '/api/sa/subscriptions/unpause',            'SportsActivity\Controllers\Api\SubscriptionPreviewApiController@unpause',  ['auth', 'csrf'], 'sa.subscription.generate'],

    // ─── Academy Pricing ────────────────────────────────────────────────────────
    ['GET',  '/sa/academy-pricing',                      'SportsActivity\Controllers\AcademyPricingController@index',           ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/academy-pricing/academies',            'SportsActivity\Controllers\AcademyPricingController@academies',       ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/academy-pricing/academy/{code}',       'SportsActivity\Controllers\AcademyPricingController@academyDetail',   ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/academy-pricing/session-cards',        'SportsActivity\Controllers\AcademyPricingController@sessionCards',    ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/academy-pricing/lane-rentals',         'SportsActivity\Controllers\AcademyPricingController@laneRentals',     ['auth'], 'sa.pricing.view'],
    ['GET',  '/sa/academy-pricing/facility-rentals',     'SportsActivity\Controllers\AcademyPricingController@facilityRentals', ['auth'], 'sa.pricing.view'],
    ['POST', '/sa/academy-pricing/calculate',            'SportsActivity\Controllers\AcademyPricingController@calculate',       ['auth', 'csrf'], 'sa.pricing.view'],
];
